OVH Cloud OVH Cloud

syntaxe de sudoers

2 réponses
Avatar
Daniel C
Bonjour,

Je cherche =E0 lancer une commande avec sudo, en initialisant certaines v=
ariables=20
d'environnement.

C'est pour un script d'init pour lancer tomcat sous son propre user.

J'y arrive sans pb avec su (mais c'est mal ;-) ) ou avec sudo qui appelle=
un=20
script interm=E9diaire qui exporte mes variables d'environnement.

=E7a donne dans l'init
/usr/bin/sudo -u $TOMCAT_USER $TOMCAT_HOME/start_under_tomcat_user.sh

avec dans start_under_tomcat_user.sh
#!/bin/sh
JAVA_HOME=3D/opt/java
CATALINA_OPTS=3D"-Dfile.encoding=3Diso8859-1"
export JAVA_HOME CATALINA_OPTS
/opt/tomcat5/bin/startup.sh

Ca marche correctement, mais j'aimerais me passer de ce script, en mettan=
t les=20
bons params dans /etc/sudoers (avoir ces 2 vars et virer tout le reste), =
mais je=20
n'y arrive pas.

J'ai lu (entre autres) http://aplawrence.com/Basics/sudo.html et
http://www.courtesan.com/sudo/man/sudoers.html mais j'ai pas r=E9ussi =E0=
mettre les=20
bons params dans /etc/sudoers pour pouvoir appeler /opt/tomcat5/bin/start=
up.sh=20
directement dans l'init.

Si qqun a =E7a sous la main... ou bien pourrait donner des tuyaux sur la =
syntaxe =E0=20
utiliser... merci

Daniel

PS: j'ai test=E9 avec

cat myenv.sh
#!/bin/sh
echo "L'environnement complet"
printenv

et dans /etc/sudoers
Defaults:tomcat5 env_delete+=3D"JAVA_HOME"

mais un
export JAVA_HOME=3D/opt/java && sudo -u tomcat5 myenv.sh
ne fait pas apparaitre ce JAVA_HOME...

2 réponses

Avatar
Daniel C
Daniel C a écrit :
Bonjour,

Je cherche à lancer une commande avec sudo, en initialisant certaines
variables d'environnement.



Je me répond, partiellement...

ajouter -i à la commande permet de récupérer toutes les variables d u ~/.bash_profile
Ca me laisse trop de variables à la fin, mais ça marche.

C'est pour un script d'init pour lancer tomcat sous son propre user.



Pour ça, start-stop-daemon me parait beaucoup mieux que su ou sudo !

Daniel

PS: Ca résoud pas mon pb de syntaxe de sudoers que je maîtrise pas po ur ces
variables d'environnement, mais ça répond au pb initial.

Par exemple, pourquoi avec
Defaults:tomcat5 env_delete-="LANG"
dans sudoers (edité avec visudo), un
sudo -u tomcat5 myenv.sh
montre que j'ai toujour LANG dans mon environnement ?
Avatar
Thomas Parmelan
Le vendredi 21 avril 2006 à 12:19, d'après
Daniel C :

Par exemple, pourquoi avec
Defaults:tomcat5 env_delete-="LANG"
dans sudoers (edité avec visudo), un
sudo -u tomcat5 myenv.sh
montre que j'ai toujour LANG dans mon environnement ?



Il y a deux explications :

- D'abord une erreur dans votre configuration, la liste env_delete
contient les noms des variables d'environnement à supprimer, donc il
faut _ajouter_ (+=) LANG à cette liste au lieu de l'enlever (-=) :

Defaults:tomcat5 env_delete+=LANG

- Les versions récentes de sudo dans Debian ont l'option "env_reset"
activée par défaut, et donc la liste env_delete n'est pas prise en
compte. De plus, LANG est une variable particulière, qui est laissée
dans l'environnement malgré le mode env_reset. Extrait du changelog de
la version 1.6.8p12-2 :

* env_reset is now set by default
* env_reset will preserve only HOME, LOGNAME, PATH, SHELL, TERM,
DISPLAY, XAUTHORITY, XAUTHORIZATION, LANG, LANGUAGE, LC_*, and USER
(in addition to the SUDO_* variables)

Au final, donc, si vous voulez absolument utiliser env_delete il faut
désactiver env_reset :

Defaults:tomcat5 !env_reset, env_delete+=LANG

Attention cependant à bien comprendre les implications "sécurité" de la
désactivation de env_reset... je vous engage également à lire le man
sudoers(5) pour plus de détails sur ces options de configuration.

--
Thomas Parmelan


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact