Задать вопрос
Ответы пользователя по тегу Ubuntu
  • Как правильно использовать NOPASSWD?

    @LevZ
    Нигде толком не могут ответить нормально, блин. Пора решить вопрос раз и на всегда)
    • Во-первых, любая команда/скрипт из-под sudo разово выполняется под указанным юзером (root по умолчанию) вплоть до окончания работы команды/скрипта. Т.е. sudo /opt/scripts/create_user в данном случае выполнит все команды скрипта из-под root. Если нужно выполнять команду из-под другого юзера, добавляем -u <username> в sudo.
    • Во-вторых, чтобы не требовалось вводить пароль для запуска определенной команды с sudo, надо действительно добавить строчку типа user ALL=NOPASSWD: /opt/scripts/create_user, но тут важна последовательность - у автора эта строчка затирается правилом ALL=(ALL) ALL (прописывается для группы суперюзеров, например в CentOS обычно: %wheel ALL=(ALL) ALL), которое находится ниже в файле sudoers.
    • В-третьих, надо понимать, что это за ALL-ы: первое это хост, второе в скобках - юзер (еще можно группу указать через ":" как в chown), ну и третье - команды. Т.е. для юзеров группы wheel даётся право выполнять любые команды на любых хостах от любых юзеров, но с повторным вводом пароля. В общем читайте man sudoers, и да пребудет с вами сила.


    Т.о. решение проблемы:
    1. строку user ALL=NOPASSWD: /opt/scripts/create_user переместить ниже остальных,
    2. запускать скрипт командой sudo /opt/scripts/create_user - внутри всё будет выполняться уже под root


    Так что не надо удалять строки в sudoers, не надо везде пихать ALL, не надо в скрипте на каждую команду вешать sudo. Всем добра и познания.
    Ответ написан
    Комментировать