
Ich verwende die GNU/Linux-Distribution PureOS (basierend auf Debian/Ubuntu). Als Display-Manager habe ich XDM installiert. Nachdem ich mich als Root bei einer X-Sitzung angemeldet habe, trat ein Fehler auf. Ich kann in einer X-Sitzung ohne Root keine GUI-Befehle mehr als Root ausführen. Ich habe Fehlermeldungen erhalten, dass mein MIT-MAGIC-COOKIE-1 falsch ist. Es scheint mit der Datei .Xauthority oder der Variable $XAUTHORITY zusammenzuhängen.
Ich habe in mehreren Foren im Internet mehrere Linderungsmaßnahmen für das Problem gesehen. xhost
Als Nicht-Root mit seinen Argumenten in verschiedenen Formen ausführen; dies deaktiviert jedoch die Authentifizierung des Systems und öffnet Sicherheitslücken; außerdem muss dies bei jeder X-Sitzung durchgeführt werden. Ausführen sudo -sE
; dies bewahrt jedoch die Nicht-Root-Umgebungen. Ausführen su-to-root -X -c [command] %U
; es hat funktioniert. Ausführen ssh -YXC [user]@[machine-name] [command]
; es hat funktioniert. Dies sind jedoch Workarounds, die das ursprüngliche Problem nicht beheben.
DISPLAY=:0 /usr/bin/xhost +local:
hat nicht funktioniert. Weder noch su - root -c [command]
. Weder noch touch ~/.Xauthority; xauth generate $DISPLAY . trusted; xauth add ${HOST}$DISPLAY . $(xxd -l 16 -p /dev/urandom); xauth merge .Xauthority
; es hat mir den Fehler angezeigt unable to rename authority file /var/lib/xdm/authdir/authfiles/, use /var/lib/xdm/authdir/authfiles/-n
.
Nach einigen Recherchen (bei denen mir das x11vnc-Paket geholfen hat) habe ich gerade herausgefunden, dass die Datei, die das richtige Magic Cookie enthält, ist /var/lib/xdm/authdir/authfiles/A\:0-[whatever]
. Seltsamerweise hat das Kopieren als neue .Xauthority-Datei beim ersten Mal einfach nicht funktioniert, beim zweiten Mal jedoch schon. Also habe ich eine erstellt export XAUTHORITY="/var/lib/xdm/authdir/authfiles/A:0-[whatever]"
und das Problem schien behoben zu sein. Als ich jedoch eine erstellt habe export XAUTHORITY="/var/lib/xdm/authdir/authfiles/*"
, hat es nicht funktioniert; aber das Seltsamste ist, dass eine echo $XAUTHORITY
den vollständigen Dateipfad anzeigt.
Außerdem habe ich sowohl die .Xauthority-Datei als auch die $XAUTHORITY-Variable von meinem Nicht-Root-Benutzer gelöscht und mein Gerät neugestartet, um zu sehen, ob es irgendwelche Nebenwirkungen auf dieses Konto gibt. Seltsamerweise konnte der Nicht-Root-Benutzer vor dem Neustart auch ohne sie GUI-Befehle ausführen. Nach dem Neustart zeigte die $XAUTHORITY-Variable von meinem Nicht-Root-Benutzer auf /tmp/.Xauth[whatever]
.
Außerdem habe ich gesehen, dass der Nicht-Root-Benutzer bei jedem Neustart des Computers ein neues Magic Cookie erhält, das mit der Datei A:0-[was auch immer] übereinstimmt (ein Hexdump hat gezeigt, dass sie übereinstimmende Hex-Strings enthielten).
Das wirft eine Reihe von Fragen auf: Warum erhält der Root-Benutzer keine zufälligen Magic Cookies mehr vom System? Welcher Prozess generiert und liefert diese Magic Cookies? Gibt es einen Befehl für den Root, um die richtigen Cookies zu generieren?