[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