Existe-t-il un moyen de spécifier qui sudo
devrait conserver certaines variables d'environnement pour les commandes spécifiées uniquement? Pour certaines raisons, je voudrais mon $HOME
env. variable conservée lorsque j'exécute certaines commandes. À d'autres fins et d'autres commandes, je veux le réinitialiser. Cela peut-il être fait avec /etc/sudoers
?
Modifier:
Merci pour vos réponses. Je me demande si je pourrais poser une question de suivi, qui est "Pourquoi, alors, cela ne fonctionne-t-il pas?"
Dans l'exemple que j'essaie de travailler, je veux sudo nano
lire mon $HOME/.nanorc
. Si j'utilise ceci:
Defaults:simon env_keep=HOME
cela fonctionne parfaitement. Si j'utilise ceci:
Defaults!/bin/nano env_keep=HOME
ou ca:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
ça ne marche pas du tout. Des suggestions sur pourquoi? (Je suis sur les tests Debian, btw.)
(Remarque: je ne pense pas que ce soit nano
spécifique, btw - je peux reproduire le comportement avec un script bash d'une ligne qui echo
s $HOME
).
sudoedit
plutôt.sudoedit
exécutera copier le contenu d'un fichier dans un fichier tmp et exécutera l'éditeur de votre choix en tant qu'utilisateur, lorsque l'éditeur se fermera, il vérifiera si vous avez changé quelque chose et si c'est le cas, remplacez l'original par celui modifié. Vous pouvez sélectionner l'éditeur que vous souhaitez qu'il exécute en définissant les$EDITOR
vars env ou $ VISUAL`.sudo
d' utiliser une fonction qui m'est propre, j'ai simplement ajouté unif [ "$1" == "$EDITOR" ]; then
bloc et j'appelle maintenant à lasudoedit
place :)Réponses:
Pour remplacer
env_keep
uniquement pour/path/to/command
(lorsqu'il est invoqué via n'importe quelle règle, par n'importe quel utilisateur) et pour l'utilisateurjoe
(quelle que soit la commande qu'il exécute):Vous pouvez utiliser
-=
ou+=
pour supprimer ou ajouter une entrée à laenv_keep
liste.la source
man
page, et je me sens un peu idiot. Nul doute que cette réponse aidera également les autres.sudoers
difficile à trouver à partir de la description formelle et les exemples plus faciles à localiser si vous savez déjà comment les écrire.env_keep
paramètre (simon ALL = ALL
). Sudo utilise la dernière entrée correspondante.Ces lignes sont de moi-même
/etc/sudoers
pour corriger le problème quipbuilder
recherche$HOME
son fichier de configuration utilisateur mais doit être exécuté en tant que root (le déplacer vers va/root
un peu à l' encontre de l'objectif d'avoir à la fois un système et un fichier de configuration utilisateur).la source
homme sudoers:
Par conséquent , oui, vous pouvez le faire en utilisant
env_reset
,env_keep
etenv_check
dans / etc / sudoers.la source