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?
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:
È possibile ignorare l'impostazione predefinita per opzioni come requiretty
per 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 requiretty
sia impostato nelle opzioni di compilazione-default, il seguente sudoers
file consente sia artbristol
e bob
l'esecuzione /path/to/program
come root da uno script. artbristol
non ha bisogno di password mentre è bob
necessario inserire una password (presumibilmente tty_tickets
è disattivata e ha bob
inserito 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 artbristol
l'esecuzione /path/to/program --option
in uno script, ma non /path/to/program
con altri argomenti.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Qualcosa come questo:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
file. CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
Ho trovato che funziona bene per me usando un file in /etc/sudoers.d
. È abbastanza semplice da verificare.
Innanzitutto, ho creato /etc/sudoers.d/01build
con 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/01build
ed eliminato la Defaults:
riga e, successivamente, ottengo:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoers
ma non sembra funzionare in un/etc/sudoers.d/
file