Я хочу відключити Requetty, щоб я міг судо в скриптах, але я краще відключити його лише для однієї команди, а не для всього. Чи можливо це в налаштуваннях sudoers?
Я хочу відключити Requetty, щоб я міг судо в скриптах, але я краще відключити його лише для однієї команди, а не для всього. Чи можливо це в налаштуваннях 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/
файлі