Я хочу відключити 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/файлі