Verbindung mit Mir fehlgeschlagen: Verbindung mit Server-Socket fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis


18

Wie starte ich GUI-Programme, nachdem ich mich als ein anderer Benutzer angemeldet habe?

thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 

Antworten:


13

export DISPLAY=:0arbeitete für mich. Stellen Sie sicher, dass Sie den Befehl auf dem verbindenden System ausführen, nicht auf dem System, zu dem Sie eine Verbindung herstellen!


2
Auf dem Computer, mit dem ich eine Verbindung hergestellt habe, nicht auf dem Computer, mit dem Sie eine Verbindung hergestellt haben.
User2938093

ahhh, das ist auf der gleichen Box. Diff-Konten.
Thufir

1
Hatte keine Auswirkungen auf meinen Computer
ComputerScientist

nicht für mich arbeiten. Ich weiß nicht, warum mir das passiert.
Chan Kim

6

Diese Antwort funktioniert auf meinem Ubuntu 16.04 und Mir (mit leichten Anpassungen):

Führen Sie den Befehl x mit xauth als anderer Benutzer aus

Wrapper-Bash-Skript:

Der Einfachheit halber habe ich ein Wrapper-Bash-Skript erstellt , das Sie möglicherweise herunterladen /usr/local/bin/xsudound als ausführbar markieren möchten ( chmod +x /usr/local/bin/xsudo).

Dann einfach ausführen:

xsudo hawat firefox

Mögliche Alternativen:

  • Als viel einfachere Alternative könnten Sie pam_xauth(s. Diese Antwort ) untersuchen. Dies funktioniert jedoch aus irgendeinem Grund nicht für mich. (Ich erhalte immer noch die Fehlermeldung, dass Firefox unter: 0 keine Verbindung zum Display herstellen kann.)
  • In vielen Foren können Sie den Befehl sehen xhost +local:oder ähnlich, die werden machen gksudo -u hawat firefoxArbeit ohne Wrapper - Skript. Beachten Sie jedoch, dass dies eine Sicherheitslücke öffnet : Jeder aktive Benutzer auf Ihrem lokalen Host kann auf Tastatur, Maus, Bildschirm usw. zugreifen.
  • Früher gab es sux , das aus irgendeinem Grund eingestellt wurde - möglicherweise können Sie es dennoch herunterladen und verwenden. Soweit ich das beurteilen kann, hat es nur viel mehr mit meinem Drehbuch zu tun. Leider konnte ich nicht herausfinden, warum dies nicht mehr gepflegt wird. (Vielleicht, weil wir jetzt stattdessen pam_xauth verwenden sollten - s. Erste Alternative)

3

Nachdem ich viel zu viel Zeit damit verbracht hatte, stellte ich fest, dass mit Gnome unter Ubuntu 16.04 der korrekte Wert DISPLAY=:1nicht mehr DISPLAY=:0so ist wie seit Urzeiten.


1

export DISPLAY =: 0 funktioniert einwandfrei , dies ist jedoch eine vorübergehende Lösung, da Sie dies jedes Mal eingeben müssen, wenn Sie das Terminal öffnen.

Permanente Lösung: Das Problem liegt möglicherweise an der Variablen env_keep in / etc / sudoers. Fügen Sie die folgende Zeile mit gedit oder sudo visudo am Ende von / etc / sudoers hinzu

Defaults env_keep + = "DISPLAY"

Hinweis: Denken Sie daran, beim Hinzufügen zu env_keep immer "+ =" zu verwenden. Falls es andere env_keep mit "=" gibt, ändern Sie diese in "+ =", da die Verwendung von "=" andere Werte überschreibt.


Zu Ihrer Information: Denken Sie daran, dass Sie die sudoers-Datei nicht direkt bearbeiten sollten, sondern mit dem visudoWrapper, der eine gewisse Überprüfung der Integrität vor dem Schreiben einer neuen sudoers-Datei bietet.
Gabriel Fair
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.