Come disabilitare requiretty per un singolo comando in sudoers?


44

Voglio disabilitare requiretty in modo da poter eseguire sudo negli script, ma preferirei disabilitarlo solo per un singolo comando piuttosto che per tutto. È possibile all'interno della configurazione sudoers?

Risposte:


55

È possibile ignorare l'impostazione predefinita per opzioni come requirettyper un utente specifico o per un comando specifico (o per un run-as-user o host specifico), ma non per un comando specifico se eseguito come utente specifico.

Ad esempio, supponendo che requirettysia impostato nelle opzioni di compilazione-default, il seguente sudoersfile consente sia artbristole bobl'esecuzione /path/to/programcome root da uno script. artbristolnon ha bisogno di password mentre è bobnecessario inserire una password (presumibilmente tty_ticketsè disattivata e ha bobinserito la sua password su alcuni terminali di recente).

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

Se si desidera modificare l'impostazione di un comando con argomenti specifici, è necessario utilizzare un alias di comando (questa è una limitazione della sintassi). Ad esempio, il seguente frammento consente artbristoll'esecuzione /path/to/program --optionin uno script, ma non /path/to/programcon altri argomenti.

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

31

Qualcosa come questo:

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

Questo potrebbe funzionare /etc/sudoersma non sembra funzionare in un /etc/sudoers.d/file
8bitjunkie

Per quello che vale, per me, questa modifica ha funzionato quando è stata aggiunta a un /etc/sudoers.d/file. CentOS 7.1
John Erck,

Non funziona per me durante l'utilizzo /etc/sudoers.d/. CentOS 7.5 :(
Stefan Lasiewski,

4

Ho trovato che funziona bene per me usando un file in /etc/sudoers.d. È abbastanza semplice da verificare.

Innanzitutto, ho creato /etc/sudoers.d/01buildcon i contenuti:

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

Quindi testato che funziona:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

Quindi ho modificato /etc/sudoers.d/01builded eliminato la Defaults:riga e, successivamente, ottengo:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.