[Linux-bruxelles] Bête question

Philip Richardson pprichardson at gmail.com
Ven 29 Mai 13:41:57 CEST 2009


Nicolas Michel a écrit :
> Salut à tous,
> 
> On m'a toujours appris que lorsque je fais un "su" pour switcher vers un 
> autre utilisateur, il fallait mettre le "-" pour charger les variables 
> d'environnement de l'utilisateur vers lequel je switch (exemple : "su - 
> root").
man su ?
Par défaut, su ne change pas de répertoire. Il positionne les variables 
d'environnement `HOME' et `SHELL' à partir des valeurs lues dans le 
fichier des mots de passe, et si l'utilisateur demandé n'est pas root, 
renseigne les variables `USER' et `LOGNAME'. Par défaut le shell exécuté 
n'est pas un shell de connexion.

> Or je viens de tester aujourd'hui sur mon Ubuntu 9.04 :
> - en tant qu'utilisateur normal : su root
> - echo $HOME
> 
> et là il me donne la home directory de root.
> 
> -> même si on indique pas le tiret lors du su, il est ajouté 
> automatiquement? Si oui, depuis quand cet automatisme est mis?

Par contre avec man su on voit aussi que :

-m, -p, --preserve-environment
     Ne pas changer les variables d'environnement `HOME', `USER', 
`LOGNAME', et `SHELL'. Exécuter le shell correspondant à la variable 
d'environnement `SHELL' plutôt que celui présent dans l'enregistrement 
/etc/passwd de l'utilisateur, à moins que ce dernier ait un shell 
restreint, et que l'appelant ne soit pas le Super-Utilisateur. Un shell 
est restreint s'il n'est pas dans la liste /etc/shells, ou dans une 
liste fournie lors de la compilation si ce dernier fichier n'existe pas. 
Le comportement de cette option peut être partiellement modifiée avec 
les options --login et --shell.

Donc

su -p root

Philip





Plus d'informations sur la liste de diffusion Linux-bruxelles