Дать не root права на useradd

Discussion in 'Linux, Freebsd, *nix' started by fbidesign, 11 Jul 2015.

  1. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    79
    Likes Received:
    12
    Reputations:
    0
    Добрый вечер.

    Есть панель управления, которая работает по такому принципу:
    Php через ssh2_connect() заходит на удаленный хост под root и запускает python скрипт с параметрами, который создает там юзера в определенной группе, создает ему домашний каталог и копирует в него определенный шаблон файловой структуры, после чего на его каталог рекурсивно делается chown на этого самого юзера.

    Очевидный минус данной системы - root пароли хранятся в mysql базе панели в открытом виде, а значит могут быть спижжжжены.

    Понимаю, что это вообще должно иначе выглядеть, например, резидентный демон, запущенный из под root на удаленных машинах, коннект к демону по TCP/SSL, передача команды, но все переписывать не хочется.

    Как можно избавиться от наличия root паролей всех машин в центральной базе? Можно ли как-то не root пользователю дать привилегию исключительно на перечисленные выше действия - создание пользователя в определенной группе и его домашнего каталога без доступа ко всему остальному в системе?
     
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
  3. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    79
    Likes Received:
    12
    Reputations:
    0
    Нет, ключи это бред - раз, ключ тоже можно свиснуть - это два. Сама идея в том чтобы на "центральной" машине не было ключа/пароля для root доступа на все остальные машины, именно для того хочу как-то дать права на создание новых пользователей не root пользователю. Чтобы если в случае взлома главной машины (вообще то врядли сломают, но на всякий случай, т.к. панель управления не я писал, в надежности на 100% не уверен и проверить ее досконально - могу что-то упустить) доступ будет украден, на остальных машинах не мог бы быть нанесен существенный урон
     
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    В таком случае можно написать своего демона который будет слушать определенный порт, иметь свою систему авторизации и принимать команды с определенных адресов/сетей и который будет создавать пользователей через суидник. Важно запретить этим пользователям доступ к ССХ и отключить им шелл, если это системные пользователи.
     
  5. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    79
    Likes Received:
    12
    Reputations:
    0
    Что собственно я и сделал вчера...
    Авторизации пока никакой, только проверка IP, но это на днях добавлю.
     
  6. murpa

    murpa New Member

    Joined:
    24 Jan 2014
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Для этого надо:

    Создать пользователя
    # addgroup user_makers
    # adduser --group user_makers user_maker


    Каталог владельцем которого он будет c правами 700
    # cd /home/user_maker
    # mkdir make_user_scripts
    # chmod 700 make_user_scripts
    # chown user_maker:user_makers make_user_scripts


    Создать скрипт который будет выполнять исключительно описаные выше действия. Владелец скрипта root.
    # editor make_user.py
    # chmod 700 make_user.py

    Создать стартер для скрипта.
    # editor script_starter.c
    Code:
    #include <sys/types.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[]) {
    char *cmd = "полный путь к скрипту";
    char *envp[]= { NULL }; /* Если убрать эту строчку переменные среды пользователя user_maker будут доступны скрипту */
    argv[0] = cmd;
    setuid(0);
    execve(cmd, argv, envp);
    return(0); }
    
    # gcc -o script_starter script_starter.c
    Поставить setuid bit
    # chmod u+s script_starter
    # rm script_starter.c


    После всего проделанного можно логиниться user_maker'ом, запускать script_starter паметры будут переданы скрипту.
     
    fbidesign likes this.
  7. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    79
    Likes Received:
    12
    Reputations:
    0
    Спасибо. Не думал, что скрипт root'а, запускаемый другим не-root юзером будет иметь права.
    В принципе, уже не актуально т.к. написал демон, запщенный 24/7 под root и принимающий команды в сокет.
     
  8. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Суидные права не распространяются на скрипты, только на бинарники.