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?
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/sudoerspero no parece funcionar en un/etc/sudoers.d/archivo/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:Luego probó que funciona:
Luego modifiqué
/etc/sudoers.d/01buildy eliminé laDefaults:línea, y después de eso, obtengo:fuente