¿Hay alguna forma de especificar que sudo
debería preservar ciertas variables de entorno solo para comandos específicos? Para algunos propósitos me gustaría mi $HOME
env. 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 nano
leer 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 nano
específico, por cierto, puedo reproducir el comportamiento con un script bash de una línea que simplemente echo
s $HOME
).
sudoedit
en su lugar.sudoedit
ejecutará, 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$EDITOR
entornos o $ VISUAL`.sudo
con una función de la mía, simplemente he añadido unif [ "$1" == "$EDITOR" ]; then
bloque y ahora estoy llamandosudoedit
en lugar :)Respuestas:
Para anular
env_keep
solo 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_keep
lista.fuente
man
página, y me siento un poco tonto. Sin embargo, esta respuesta también ayudará a otros.sudoers
pá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_keep
configuración (simon ALL = ALL
). Sudo usa la última entrada coincidente.Esas líneas son mías
/etc/sudoers
para corregir el problema quepbuilder
busca$HOME
su archivo de configuración de usuario, pero debe ejecutarse como root (moverlo a/root
algo 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_keep
yenv_check
en / etc / sudoers.fuente