Was ist der Unterschied zwischen "su" und "su-" in CentOS?

7

Ich habe versucht, in CentOS durch Ausführen zu 'root' zu wechseln su. Es ändert sich zwar zu "root", aber es scheint kein echter "root" -Nutzer zu sein.

Beispielsweise wird der ifconfigBefehl in standardmäßig /sbinnicht im Pfad eines normalen Benutzers gefunden, aber für 'root' kann der Befehl gefunden werden. Wenn ich laufe su, erhalte ich immer noch eine bash: ifconfig: command not foundAusgabe, wenn ich versuche zu rennen ifconfig.

Wenn ich jedoch renne su -, ifconfigfunktioniert es einfach.

Was ist der Unterschied zwischen suund su -in CentOS?

PJ.
quelle
4
Es ist nicht nur CentOS; Das ist auf allen Unix-ähnlichen Systemen so.
Gbarry

Antworten:

16

Das Hinzufügen der -Option wirkt sich auf Ihr Umgebungsverhalten aus. Für alle praktischen Zwecke wird die Umgebung vollständig zurückgesetzt. Im Allgemeinen möchten Sie wahrscheinlich su -anstelle von einfach verwenden su. Von der Manpage:

 -l      Simulate a full login.  The environment is discarded except for HOME, SHELL, PATH, TERM, and USER.  HOME and SHELL are modified as above.
         USER is set to the target login.  PATH is set to ``/bin:/usr/bin''.  TERM is imported from your current environment.  The invoked shell is
         the target login's, and su will change directory to the target login's home directory.

 -       (no letter) The same as -l.
Scott Pack
quelle
6

su -Ruft eine Anmeldeshell auf, die unter anderem sicherstellt, dass Roots .bashrcund andere Shell-Startskripte ausgeführt werden, als ob Sie sich direkt als Root über die Konsole oder SSH angemeldet hätten. Das Profil von root legt normalerweise Ihren Pfad so fest, dass er enthält /sbin, wo im ifconfigAllgemeinen lebt.

violett
quelle