7 votes

Quelle est la différence entre `su` et `su -` dans CentOS?

J'ai essayé de passer à 'root' dans CentOS en exécutant su. Cela passe bien en 'root', mais il semble que ce ne soit pas un vrai utilisateur 'root'.

Par exemple, par défaut, la commande ifconfig dans /sbin n'est pas trouvée dans le chemin pour un utilisateur normal, mais pour 'root', la commande peut être trouvée. Lorsque j'exécute su, j'obtiens toujours le message bash: ifconfig: command not found lorsque j'essaie de lancer ifconfig.

Cependant, lorsque j'exécute su -, ifconfig fonctionne parfaitement.

Quelle est la différence entre su et su - dans CentOS?

16voto

Hurda Points 614

Ajouter l'option - affecte le comportement de votre environnement. Pour toutes fins pratiques, l'environnement est complètement réinitialisé. En général, vous devriez probablement utiliser su - au lieu de simplement su. Selon le manuel :

 -l      Simule une connexion complète. L'environnement est supprimé à l'exception de HOME, SHELL, PATH, TERM et USER. 
         HOME et SHELL sont modifiés comme ci-dessus. USER est défini sur l'utilisateur cible. 
         PATH est défini sur ``/bin:/usr/bin''. TERM est importé depuis votre environnement actuel. 
         L'interpréteur de commandes invoqué est celui de l'utilisateur cible, et su changera de répertoire vers le répertoire personnel de l'utilisateur cible.

 -       (sans lettre) Équivalent à -l.

6voto

hash Points 371

su - invoque un shell de connexion, qui entre autres choses, garantit que le .bashrc de root et d'autres scripts de démarrage de shell sont exécutés, tout comme si vous vous étiez connecté directement en tant que root via la console ou SSH. Le profil de root définit généralement votre chemin pour inclure /sbin où se trouve généralement ifconfig.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X