Я хочу отключить requiretty, чтобы я мог использовать sudo в скриптах, но я бы предпочел отключить его только для одной команды, а не для всего. Это возможно в конфиге sudoers?
Я хочу отключить requiretty, чтобы я мог использовать sudo в скриптах, но я бы предпочел отключить его только для одной команды, а не для всего. Это возможно в конфиге sudoers?
Ответы:
Вы можете переопределить настройку по умолчанию для таких параметров, как requiretty
для конкретного пользователя или для конкретной команды (или для конкретного пользователя, запускаемого от имени пользователя или хоста), но не для конкретной команды при выполнении от имени определенного пользователя.
Например, предполагая, что requiretty
это задано в параметрах компиляции по умолчанию, следующий sudoers
файл позволяет и то, artbristol
и другое bob
выполнять /path/to/program
из сценария как root. artbristol
не требует пароля, тогда как bob
должен вводить пароль (предположительно tty_tickets
выключен и bob
недавно ввел свой пароль на каком-либо терминале).
artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
Если вы хотите изменить настройку команды с конкретными аргументами, вам нужно использовать псевдоним команды (это ограничение синтаксиса). Например, следующий фрагмент позволяет artbristol
запустить /path/to/program --option
в скрипте, но не /path/to/program
с другими аргументами.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Что-то вроде этого:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
файл. CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
Я обнаружил, что он работает нормально для меня, используя файл в /etc/sudoers.d
. Это довольно просто проверить.
Во-первых, я создал /etc/sudoers.d/01build
с содержанием:
build ALL=(ALL) NOPASSWD:/bin/date
Defaults:build !requiretty
Затем проверил, что это работает:
ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015
Затем я изменил /etc/sudoers.d/01build
и удалил Defaults:
строку, и после этого я получил:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoers
но не работает в/etc/sudoers.d/
файле