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 requiretty
para 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 requiretty
se establezca en las opciones predeterminadas de compilación, el siguiente sudoers
archivo permite ambos artbristol
y bob
ejecutar /path/to/program
como raíz desde un script. artbristol
no necesita contraseña, mientras que bob
debe tener que ingresar una contraseña (presumiblemente tty_tickets
está apagada e bob
ingresó 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 artbristol
ejecutarse /path/to/program --option
en un script, pero no /path/to/program
con 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/01build
con 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/01build
y 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/sudoers
pero no parece funcionar en un/etc/sudoers.d/
archivo