Nie udało się połączyć z Mir: Nie udało się połączyć z gniazdem serwera: Brak takiego pliku lub katalogu

18

Jak zalogować się jako inny użytkownik, jak uruchomić programy GUI?

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:~$ 
Thufir
źródło

Odpowiedzi:

13

export DISPLAY=:0pracował dla mnie. Upewnij się, że wykonałeś polecenie w systemie łączącym, a nie w systemie, z którym się łączysz!

użytkownik2938093
źródło
2
Na maszynie, z której się łączyłem, a nie na maszynie, z którą się łączysz.
user2938093,
ahhh, to jest na tym samym pudełku. konta różnicowe.
Thufir
1
Nie miał żadnego wpływu na mój komputer
ComputerScientist
nie działa dla mnie. Nie wiem, dlaczego tak się dzieje.
Chan Kim
6

Ta odpowiedź działa na moim Ubuntu 16.04 i Mir (z niewielkimi modyfikacjami):

Uruchom polecenie x jako inny użytkownik za pomocą xauth

Wrapper bash script:

Dla wygody stworzyłem skrypt bash , który możesz pobrać /usr/local/bin/xsudoi oznaczyć jako wykonywalny ( chmod +x /usr/local/bin/xsudo).

Następnie po prostu uruchom:

xsudo hawat firefox

Potencjalne alternatywy:

  • Jako o wiele prostsza alternatywa, możesz zajrzeć do pam_xauth(s. Tej odpowiedzi ). Jednak z jakiegoś powodu to nie działa. (Nadal pojawia się błąd związany z niemożnością nawiązania przez firefox połączenia z wyświetlaczem o godzinie: 0)
  • W wielu forach można zobaczyć polecenia xhost +local:lub podobnego, który będzie uczynić gksudo -u hawat firefoxpracę bez skryptu otoki. Należy jednak pamiętać, że powoduje to lukę w zabezpieczeniach : każdy aktywny użytkownik na lokalnym hoście będzie miał dostęp do klawiatury, myszy, ekranu itp.
  • Kiedyś istniał sux , który z jakiegoś powodu został przerwany - nadal możesz go pobrać i używać. O ile mi wiadomo, zrobiło coś podobnego do mojego skryptu tylko o wiele więcej. Niestety nie mogłem dowiedzieć się, dlaczego nie jest to już utrzymywane. (Może dlatego, że powinniśmy teraz użyć pam_xauth - s. Pierwsza alternatywa)
lentschi
źródło
3

Po spędzeniu o wiele za dużo czasu odkryłem, że z Gnome na Ubuntu 16.04 poprawna wartość nie jest taka DISPLAY=:1, DISPLAY=:0jaka była od niepamiętnych czasów.

Peter V. Mørch
źródło
1

eksport WYŚWIETLANIE =: 0 działa dobrze, ale jest to rozwiązanie tymczasowe, ponieważ musisz wpisać to za każdym razem, gdy otwierasz terminal.

Stałe rozwiązanie: Problem może być spowodowany zmienną env_keep w / etc / sudoers. Dodaj następujący wiersz na końcu pliku / etc / sudoers, używając gedit lub sudo visudo

Domyślne env_keep + = "DISPLAY"

Uwaga: pamiętaj, aby zawsze używać „+ =” podczas dodawania do env_keep. W przypadku, gdy istnieją inne env_keep z „=” zmień je na „+ =”, ponieważ użycie „=” zastąpi inne wartości.

Mahesh Kumar
źródło
Do waszej informacji: pamiętajcie, że nie powinniście edytować pliku sudoers bezpośrednio, ale za pomocą visudootoki, która zapewnia pewne sprawdzanie poprawności przed napisaniem nowego pliku sudoers.
Gabriel Fair