GNU/Linux >> LINUX-Kenntnisse >  >> Linux

wie man xauth verwendet, um eine grafische Anwendung über einen anderen Benutzer unter Linux auszuführen

Lösung 1:

Um xauth selektiv zu verwenden als Benutzer1 ausführen:

xauth list|grep `uname -n`

Dadurch werden die Hexkey - Autorisierungseinträge für Sie gedruckt . Sie könnten haben auch unterschiedliche Displays, die diesen Hosts zugeordnet sind.

Stellen Sie als Benutzer2 Ihre Anzeige ein (vorausgesetzter Fall):

DISPLAY=:0; export DISPLAY

Führen Sie dann Folgendes aus:

xauth add $DISPLAY . hexkey

Beachten Sie den Punkt nach dem $DISPLAY und vor dem Hexkey.

Wenn der Zugriff nicht mehr benötigt wird, können Sie als Benutzer2 Folgendes ausführen:

xauth remove $DISPLAY

Lösung 2:

Ich habe meinen .zshrc eingegeben eine Zeile mit export XAUTHORITY=~/.Xauthority und jetzt kann ich sudo -E xcommand ausführen . Nach langem Googeln war das für mich der einfachste Weg.

Lösung 3:

Erstens:Verwenden Sie nicht xhost + , es ist ziemlich unsicher (pauschales Erlauben/Verweigern).

Verwenden Sie lieber den X-Cookie-Mechanismus:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Alternativ, wenn Sie sux haben installiert, benutze das (siehe ehempels Antwort).

In beiden Fällen verwendet Benutzer2 das geheime Cookie in .Xauthority, um sich beim X-Server zu autorisieren, und niemand sonst hat Zugriff darauf.

Hinweise:

  • Abhängig von Ihren Dateiberechtigungen müssen Sie .Xauthority möglicherweise auf andere Weise kopieren.
  • Anstatt .Xauthority zu kopieren , können Sie auch xauth verwenden um den Autorisierungsschlüssel zu extrahieren und zu kopieren (siehe Randalls Antwort). Wenn Sie mehrere Schlüssel im .Xauthority haben Datei ist selektiver; ansonsten ist es geschmackssache.

Lösung 4:

Unter der Annahme von Debian oder Ubuntu (sollte auf Red Hat / SUSE ähnlich sein).

sudo apt-get install sux
sux user -c 'command'

Lösung 5:

Dadurch wird das Problem für alle Benutzer behoben:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF

Linux
  1. So verwenden Sie den Befehl chown, um den Besitz in Linux zu ändern

  2. So verwenden Sie den id-Befehl unter Linux:5 nützliche Beispiele

  3. So verwenden Sie sudo, um einem Nicht-Root-Benutzer die Ausführung eines bestimmten Befehls zu ermöglichen

  4. So löschen Sie eine Nicht-Root-Nutzung mit UID 0 in Linux

  5. Wie kann ich verhindern, dass sich ein Benutzer anmeldet, aber su - Benutzer in Linux zulassen?

So verwenden Sie pkgsrc unter Linux

So verwenden Sie den usermod-Befehl unter Linux

So führen Sie Windows 95 unter Linux aus

So führen Sie Docker als Nicht-Root-Benutzer in Linux aus

So ändern Sie den Benutzer unter Linux

So verwenden Sie den ulimit-Befehl unter Linux