Quiero deshabilitar requiretty para poder sudo dentro de los scripts, pero prefiero deshabilitarlo solo para un solo comando en lugar de todo. ¿Es eso posible dentro de la configuración de sudoers?
Quiero deshabilitar requiretty para poder sudo dentro de los scripts, pero prefiero deshabilitarlo solo para un solo comando en lugar de todo. ¿Es eso posible dentro de la configuración de sudoers?
Respuestas:
Puede anular la configuración predeterminada para opciones tales como requirettypara un usuario específico o para un comando específico (o para una ejecución específica como usuario o host), pero no para un comando específico cuando se ejecuta como un usuario específico.
Por ejemplo, suponiendo que requirettyse establezca en las opciones predeterminadas de compilación, el siguiente sudoersarchivo permite ambos artbristoly bobejecutar /path/to/programcomo raíz desde un script. artbristolno necesita contraseña, mientras que bobdebe tener que ingresar una contraseña (presumiblemente tty_ticketsestá apagada e bobingresó su contraseña en algún terminal recientemente).
artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
Si desea cambiar la configuración de un comando con argumentos específicos, debe usar un alias de comando (esto es una limitación de sintaxis). Por ejemplo, el siguiente fragmento permite artbristolejecutarse /path/to/program --optionen un script, pero no /path/to/programcon otros argumentos.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Algo como esto:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/archivo. CentOS 7.1
/etc/sudoers.d/. CentOS 7.5 :(
Descubrí que funciona bien para mí usando un archivo /etc/sudoers.d. Es bastante simple de verificar.
Primero, creé /etc/sudoers.d/01buildcon los contenidos:
build ALL=(ALL) NOPASSWD:/bin/date
Defaults:build !requiretty
Luego probó que funciona:
ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015
Luego modifiqué /etc/sudoers.d/01buildy eliminé la Defaults:línea, y después de eso, obtengo:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoerspero no parece funcionar en un/etc/sudoers.d/archivo