Was ist der Unterschied zwischen su -
und bash -l
?
Ich habe dieses Problem:
:/etc/profile.d # su - Anzeige „Standardanzeige“ kann nicht geöffnet werden Verzeichnis: /root Do, 28. Nov. 2013, 11:23:57 Uhr MEZ
Nun versuche ich herauszufinden, warum diese Meldung auftritt.
:~ # Abmelden :/etc/profile.d # bash -x -l + test -f /proc/mounts + case "`/bin/ls -l /proc/$$/exe`" in ++ /bin/ls -l /proc/17167/exe + ist=bash + lesen -t 1 ar ...
In der zweiten Ausgabe fehlt die Meldung „Anzeige kann nicht geöffnet werden“. Was ist also der Unterschied?
Antwort1
Der erste Befehl meldet Sie als Root an. Die Option -
bedeutet su Manpage
:
-l, --login Bietet eine Umgebung, die der Umgebung ähnelt, die der Benutzer erwarten würde, wenn er sich direkt angemeldet hätte.
Der zweite Befehl bash -l
,nichtmelden Sie sich als root an. Es stimmt, dass die -l
Option bedeutet (wieder aus dem bash Manpage
):
-l Bash so agieren lassen, als wäre es als Login-Shell aufgerufen worden
Dies bezieht sich jedoch auf einen different user
, in diesem Fall auf Sie selbst und nicht auf root. Der bash -l
Befehl verwaltet also das MIT-Magic-Cookie, das die Steuerung Ihrer X-Sitzung ermöglicht, während der su -c
dazu nicht in der Lage ist und Sie, da Sie nicht über das entsprechende MIT-Magic-Cookie verfügen, die Steuerung der X-Sitzung nicht übernehmen können.
Wenn Sie dieses Problem umgehen möchten, fügen Sie diese Anweisung ein
export XAUTHORITY=/home/your_name/.Xauthority
in der Datei /root/.bashrc, und Sie können GUIs als Root öffnen, selbst wenn Sie „su“ verwenden, anstatt eine richtige Anmelde-Shell zu verwenden.