Zwei GUI-Anwendungen als unterschiedliche Benutzer auf demselben Bildschirm

Zwei GUI-Anwendungen als unterschiedliche Benutzer auf demselben Bildschirm

Ich bin als Benutzer A angemeldet. Ich möchte eine GUI-Anwendung als Benutzer B ausführen. Benutzer, nicht Root. Benutzer B ist auch lokal, nicht remote, ich brauche nur unterschiedliche Umgebungsvariablen. Ich möchte das zweite X nicht ausführen, ich möchte sie auf demselben Display. Ich habe kein Problem mit Programmen, die im Terminal ausgeführt werden, das su - ...funktioniert. Für grafische Anwendungen gibt es eine Fehlermeldung:

Application initialization failed: couldn't connect to display ":0.0"

oder

Gtk-WARNING **: cannot open display: :0.0

Gibt es eine gute Möglichkeit, das Problem zu beheben? Den Artikel über die korrekte Verwendung xhostoder so etwas?

Antwort1

Führen Sie den folgenden Befehl aus, um userBnameZugriff auf die Anzeige zu gewähren: xhost +SI:localuser:userBnameSie können xhost +jedem Zugriff gewähren, dies ist jedoch unsicher. Besser ist es, den Zugriff pro Benutzer zu gewähren. Die korrekte Syntax für xhosts-Einträge für lokale Benutzer lautet SI:localuser:username.

Führen Sie dann mit su userBname, export DISPLAY=:0.0, und schließlich Ihr GUI-Programm aus. Obwohl Sie zuvor mit Zugriff auf die Anzeige gewährt haben xhost, müssen Sie auch die Umgebungsvariable festlegen, DISPLAYdamit Programme wissen, wo sie ihre grafische Ausgabe platzieren sollen. Wenn Sie DISPLAYfür verschiedene Benutzer unterschiedliche Variablen zulassen, können mehrere Benutzer, die an eine einzige Maschine angeschlossen sind, unterschiedliche physische Terminals verwenden.

Antwort2

Verwenden Sie einfach gksu -u, den gewünschten Benutzernamen, geben Sie das Passwort ein, und schon kann es losgehen.

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

Alternativ können Sie „su“ verwenden und dann XDISPLAY auf den richtigen Bildschirm einstellen und schließlich Ihre gewünschte Anwendung starten.

Antwort3

So erreiche ich das: -

  1. Öffnen Sie als Benutzer mit der vorhandenen X-Sitzung ein X-Terminal.
  2. Geben Sie den Befehl ein xauth list. Sie sollten die X Magic-Cookie-Werte sehen, die Anfragen an den X-Server für verschiedene Deskriptoren authentifizieren. Kopieren Sie den mit dem Verweis auf „unix“. Beispiel: myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. Öffnen Sie ein zweites Terminal als erster Benutzer, aber wechseln Sie den Benutzer (su) zur gewünschten ID, z. B.su - user2
  4. Nachdem Sie den Benutzer gewechselt haben, geben Sie den Befehl ein xauth addund fügen Sie die Zeile ein, die Sie zuvor in Schritt 2 kopiert haben. Drücken Sie dann die Eingabetaste, z. B. xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. Starten Sie ein X-Programm im 2. Terminal von der Befehlszeile aus, zB:firefox

Das ist es!

Antwort4

Fügen Sie zunächst Ihren zweiten Benutzer zu localuser hinzu:

$ xhost SI:localuser:user2

localuser:player wird zur Zugriffskontrollliste hinzugefügt

Dann führen Sie Ihre Apps aus:

$ sudo -u user2 -H firefox

verwandte Informationen