Führen Sie X-Anwendungen als einen anderen Benutzer unter Linux aus

629
xpt

Das alte Thema , X-Anwendungen als einen anderen Benutzer unter Linux auszuführen, zu besuchen, war für mich die Lösung schon immer " zu verwendengksu ", aber heute, wenn ich es brauche und ausprobierte, funktioniert es nicht.

Im Anschluss Was ist gksu und warum Sie es verwenden, habe ich versucht,

gksu -u otherusername xterm 

Nachdem ich den Dialog übergeben hatte, der nach dem Passwort fragt, bekam ich:

$ gksu -u otherusername xterm xterm: Xt error: Can't open display: :2 

Dh es funktioniert nicht für mich. So,

Wie kann ich X-Anwendungen als anderen Benutzer unter Linux ausführen? Vielen Dank.

PS, das ist Ubuntu 17.04:

$ lsb_release -a  No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 17.04 Release: 17.04 Codename: zesty 
0
Welche Art von X-Autorisierung verwendet Ihre Distribution (lesen Sie dazu "xauth")? Sie müssen die "andere Verwendung" autorisieren, um die Anzeige des "ersten Benutzers" verwenden zu können. dirkt vor 6 Jahren 0
Ja, ich verwende `xauth` und nein, ich weiß nicht, wie ich die" andere Verwendung "autorisieren soll, um die Anzeige des" ersten Benutzers "zu verwenden, bitte helfen Sie @dirkt, das muss der fehlende Teil sein. Vielen Dank! xpt vor 6 Jahren 0

3 Antworten auf die Frage

1
xwindows

Ubuntu 17, richtig? Sind Sie sicher, dass Sie tatsächlich Xorg betreiben und nicht Wayland ? (dh zeigt ps auxfwweigentlich ein Programm namens XLaufen?)

Wenn Sie Wayland-- ausgeführt werden, die Sie standardmäßig sein würde: die Anzeige von Root - Benutzer Zugriff ist nicht erlaubt aufgrund einer Sicherheitsmerkmal (Husten) (Husten). Sie sagten, Sie könnten diesen Befehl umgehen, bevor Sie gksu ausführen:

xhost si:localuser:root 

Eine andere Möglichkeit ist, Ihr Ubuntu-System einfach mit einem herkömmlichen Xorg-Anzeigesystem zu starten. Sie können dies beim Login einstellen, denke ich .

Ich habe jedoch nie Ubuntu 17 verwendet und definitiv kein Wayland-Benutzer. Dies ist wahrscheinlich einer der Gründe dafür, dass Ubuntu 18 / LTS standardmäßig wieder den klassischen Xorg verwendet .

Wichtiger Hinweis: Wenn otherusername von Ihnen nicht der Fall Wurzel, egal, die Sie Wayland oder klassische Xorg verwenden, müssen Sie ausführen Befehl nach, bevor Ihr Programm über gksu ausgeführt wird :

xhost si:localuser:otherusername 

AKTUALISIEREN:

Die obige Lösung funktioniert für Ubuntu 17.04 Xorg nicht sofort:

$ xhost si:localuser:root localuser:root being added to access control list X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 109 (X_ChangeHosts) Value in failed request: 0xe Serial number of failed request: 7 Current serial number in output stream: 9 

Es sieht so aus, als ob der Server " Ubuntu Xorg " nicht mit der Unterstützung von SECURE_RPC erstellt wurde. Daher schlägt der Versuch fehl, einen FamilyNetname (0xfe) -Host hinzuzufügen. "

Also noch keine Standardlösung für Ubuntu (dies bleibt jedoch die Antwort, bis eine funktionierende Lösung existiert).

Ubuntu 17.04, nicht Ubuntu 17.10, und ja, es ist definitiv Xorg. Nie wusste, dass "xhost" auf diese Weise verwendet werden kann - kennen Sie nur das "xhost +", das als unsicher gilt. Danke für die Antwort xwindows! Willkommen an Bord, mit meiner +25, :-) xpt vor 6 Jahren 0
Endlich habe ich die Gelegenheit, es zu testen, aber es funktioniert * nicht für mich *. Ich habe mir die Freiheit genommen, Ihre Antwort zu aktualisieren, um sie zu erklären. xpt vor 6 Jahren 0
0
trapezoid

Überprüfen Sie Ihre DISPLAYUmgebungsvariable. Es sieht so aus, als ob der neue Benutzer versucht, eine Anzeige zu verwenden :2, an die wahrscheinlich kein X-Server angeschlossen ist.

Sie können beispielsweise export DISPLAY=localhost:0.0Folgendes versuchen: Die X-Anwendung des anderen Benutzers soll den X-Server des aktuellen Benutzers verwenden. (Ich bin mir ziemlich sicher, dass dies ein Hack ist, da diese Variable korrekt konfiguriert werden muss, ohne sie einstellen zu müssen. Weitere Details hier .)

Mein DISPLAY *** ist *** `DISPLAY = ': 2``, glaube oder nicht, aber ich werde nicht mein kompliziertes Setup erklären. Kurz gesagt:` export DISPLAY = localhost: 0.0` wird nicht geschnitten es funktioniert als 'DISPLAY =': 2 'für alle meine eigenen X-Apps. Aber danke für die Hilfe. xpt vor 6 Jahren 0
-1
Alex_Krug
  1. Weisen Sie diesem das Passwort zu otheruser. im Namen des Superuser:

    passwd otheruser

  2. Wenn das Sudo-Programm installiert ist, fügen Sie beispielsweise die folgende Zeile hinzu /etc/sudoers:

    user ALL = (otheruser) ALL

Dies ermöglicht es dem useralle Programme auszuführen / im Namen der Benutzerbefehle otheruser:

`$ sudo -u otheruser xterm` 

Das userPasswort des Benutzers wird abgefragt.

kann ohne Passwortabfrage durch Hinzufügen der NOPASSWDDirektive in der obigen Zeile erfolgen:

user ALL = (otheruser) NOPASSWD: ALL

original - https://ru.stackoverflow.com/questions/473607/%D0%92%D1%8B%D0%BF%D0%BE0% BE0%BB%D0%BD%D0%B5%D0%BD%D0 % B8% D0% B5-% D0% BA% D0% BE% D0% BC% D0% B0% D0% BD% D0% B4% D1% 8B-% D0% BE% D1% 82% D0% B4% D1% 80% D1% 83% D0% B3% D0% BE% D0% B3% D0% BE-% D0% BF% D0% BE% D0% BB% D1% 8C% D0% B7% D0% BE% D0 % B2% D0% B0% D1% 82% D0% B5% D0% BB% D1% 8F

Viele helfen zusätzlichen Flaggen -coder-p

Das Problem ist die X-Autorisierung ("Anzeige kann nicht geöffnet werden"), die Ihre Antwort gar nicht anspricht ... dirkt vor 6 Jahren 2