¿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).
sudocon una función de la mía, simplemente he añadido un if [ "$1" == "$EDITOR" ]; thenbloque y ahora estoy llamando sudoediten lugar :)
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`.