¿Hay alguna forma de especificar que sudodebería preservar ciertas variables de entorno solo para comandos específicos? Para algunos propósitos me gustaría mi $HOMEenv. variable preservada cuando ejecuto ciertos comandos. Para otros fines y otros comandos, quiero que se restablezca. ¿Se puede hacer esto con /etc/sudoers?
Editar:
Gracias por las respuestas. Me pregunto si podría hacer una pregunta de seguimiento, que es "¿Por qué, entonces, esto no funciona?"
En el ejemplo que intento poner a trabajar, quiero sudo nanoleer mi $HOME/.nanorc. Si uso esto:
Defaults:simon env_keep=HOME
Funciona perfectamente. Si uso esto:
Defaults!/bin/nano env_keep=HOME
o esto:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
No está funcionando en absoluto. ¿Alguna sugerencia de por qué? (Estoy en pruebas de Debian, por cierto)
(Nota: no creo que sea nanoespecífico, por cierto, puedo reproducir el comportamiento con un script bash de una línea que simplemente echos $HOME).

sudoediten su lugar.sudoeditejecutará, copiará el contenido de un archivo a un archivo tmp y ejecutará el editor de su elección como su usuario, cuando el editor salga, verificará si cambió algo y, de ser así, reemplazará el original con el editado. Puede seleccionar qué editor desea que se ejecute configurando los$EDITORentornos o $ VISUAL`.sudocon una función de la mía, simplemente he añadido unif [ "$1" == "$EDITOR" ]; thenbloque y ahora estoy llamandosudoediten lugar :)Respuestas:
Para anular
env_keepsolo para/path/to/command(cuando se invoca a través de cualquier regla, por cualquier usuario) y para el usuariojoe(sin importar qué comando esté ejecutando):Puede usar
-=o+=para eliminar o agregar una entrada a laenv_keeplista.fuente
manpágina, y me siento un poco tonto. Sin embargo, esta respuesta también ayudará a otros.sudoerspágina del manual es difícil de resolver a partir de la descripción formal y los ejemplos son más fáciles de localizar si ya sabe cómo escribirlos.env_keepconfiguración (simon ALL = ALL). Sudo usa la última entrada coincidente.Esas líneas son mías
/etc/sudoerspara corregir el problema quepbuilderbusca$HOMEsu archivo de configuración de usuario, pero debe ejecutarse como root (moverlo a/rootalgo frustra el propósito de tener un sistema y un archivo de configuración de usuario).fuente
sudoers hombre:
Por lo tanto, sí, puede hacerlo usando
env_reset,env_keepyenv_checken / etc / sudoers.fuente