[Linux-bruxelles] Bête question

Nicolas Michel nicolas.michel at lemail.be
Ven 29 Mai 14:52:09 CEST 2009


Je viens d'essayer sous Debian Lenny et tout se passe comme tu l'as
décris. Mais ce n'est pas uniforme. Sous Ubuntu, il semble que le shell
soit un shell de connexion par défaut, puisqu'il change mon répertoire
courant même si j'omets le tiret (forme raccourcie de -l ou --login) :
extrait du man su d'ubuntu (le même que debian) :

        -, -l, --login
                   Fournir à l´utilisateur un environnement similaire à
        celui qu´il
                   aurait obtenu s´il s´était connecté directement.
        
                   Lorsque - est utilisé, il doit être indiqué comme
        dernier paramètre
                   de su option. Les autres formes (-l et --login) ne
        présentent pas
                   cette restriction.




Le vendredi 29 mai 2009 à 13:41 +0200, Philip Richardson a écrit :

> 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
> 
> 
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: </pipermail/linux-bruxelles/attachments/20090529/321dcac2/attachment-0002.html>


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