Як відключити Requtty для однієї команди в судерах?


44

Я хочу відключити Requetty, щоб я міг судо в скриптах, але я краще відключити його лише для однієї команди, а не для всього. Чи можливо це в налаштуваннях sudoers?

Відповіді:


55

Ви можете змінити налаштування за замовчуванням для таких параметрів, як 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

31

Щось на зразок цього:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

Це може працювати, /etc/sudoersале, здається, не працює у /etc/sudoers.d/файлі
8bitjunkie

Що для цього варто, для мене це редагування працювало, коли його додавали до /etc/sudoers.d/файлу. CentOS 7.1
Джон Ерк

Це не працює для мене під час використання /etc/sudoers.d/. CentOS 7.5 :(
Стефан Ласєвський

4

Я виявив, що це добре працює для мене за допомогою файлу в /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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.