gksu: Gtk-WARNING **: nie można otworzyć wyświetlacza:: 0

40

Nagle gksu przestało dla mnie działać:

~$ gksu gparted

(gpartedbin:24252): Gtk-WARNING **: cannot open display: :0

To samo dzieje się z gparted-pkexec:

~$ gparted-pkexec 
No protocol specified

(gpartedbin:25454): Gtk-WARNING **: cannot open display: :0

Co może być tego przyczyną?

Nie uruchamiam tego przez SSH lub VNC. To jest localhost w normalnym oknie terminala.

d_inevitable
źródło
Nie pracujesz w graficznym interfejsie użytkownika ani nie próbujesz uruchomić programu w systemie (np. Przez ssh), którego nie zapewnia żaden interfejs graficzny.
AB
1
@AB Powinienem wyjaśnić, że to nie jest przez ssh. Jest na lokalnym hoście w bardzo normalnym oknie terminala. Faktyczne otwarcie z poziomu menu aplikacji ma ten sam wynik.
d_inevitable
Nie powinieneś używać gksudo uruchamiania GParted. gpartedużywa polkit, aby uzyskać podwyższone uprawnienia.
mur
@muru, gdy biegnę gpartedbez gksu, dostajęRoot privileges are required for running gparted.
d_inevitable
Ok, spróbuj gparted-pkexec(bez gksu) lub gksu gpartedbin.
mur

Odpowiedzi:

67

W przypadku systemu Ubuntu 17.10 lub nowszego ten problem może wystąpić, gdy aplikacja nie została zaktualizowana przy pełnej obsłudze Wayland. Aby obejść ten problem, dopóki aplikacja nie zostanie zaktualizowana, możesz uruchomić

xhost +SI:localuser:root

co pozwoli rootużytkownikowi wyświetlać aplikacje na pulpicie. Zobacz także pytania i odpowiedzi dotyczące innych możliwych obejść: Dlaczego gksu / gksudo lub uruchomienie aplikacji graficznej z sudo nie działa z Waylandem?

źródło

Cutton Eye
źródło
@MDMower Thx do edycji, nauczyłem się czegoś nowego =)!
Cutton Eye,
@pomsky Thx za dodanie linku;)!
Cutton Eye
W 18.04 X-Org zostanie ponownie użyty jako domyślny. Zatem ten problem powinien zniknąć. patrz
Cutton Eye
11

Spróbuj uruchomić xhost +localhostw terminalu, a następnie ponownie uruchomić polecenie. Pozwala to wszystkim użytkownikom systemu (tj. Rootowi) otwierać okna na ekranie. Upewnij się, że używasz + localhost, a nie tylko +, ponieważ bezpieczniej jest zezwalać na połączenia tylko z localhost niż z dowolnego miejsca.

Aby to zrobić na stałe, edytuj ~/.xinitrcplik w następujący sposób:

Biegać gedit ~/.xinitrc

Edytuj plik, aby wyglądał tak (na początku powinien być pusty):

#! /bin/bash
xhost +localhost &

Teraz zapisz plik, wyloguj się i zaloguj. Teraz wszystko powinno działać dobrze z sudo.

Nie mogę odtworzyć twojego problemu 14.04, ale działało to dla mnie w przeszłości, gdy sudo / gksu zgłosiło ten błąd.

Źródła:

  1. http://www.nikhef.nl/~mjg/xhost_plus.html
  2. https://forums.opensuse.org/showthread.php/405624-sudo-doesnt-open-X-programs
  3. https://wiki.ubuntu.com/CustomXSession
Mark Paskal
źródło
1
To naprawdę działa. Czy to oznacza, że ​​jest to ograniczenie kontroli dostępu? Wszelkie pomysły, co może być tego przyczyną?
d_inevitable
Tak, jest to funkcja bezpieczeństwa X. Pozwala on tylko na połączenia użytkownika z serwerem xserver, chyba że jest inaczej. Nie jestem do końca pewien, dlaczego jest to wymagane w przypadku niektórych aplikacji, a nie innych, i nie mam pojęcia, dlaczego miałoby to działać dla wszystkich rzeczy. Może gdzieś majstrowałeś i zaostrzałeś zabezpieczenia?
Mark Paskal
2
Daje to błąd: xhost: nie można otworzyć wyświetlacza „”
IgorGanapolsky 30.01.2017
5
W przypadku redis zasugerowano użycie xhost +local:. Potem mogłem uruchomić gparted z terminala, ale używanie xhost +localhostnie działało.
rmin
1
W rzeczy samej! xhost +local:naprawiono mój! Daje non-network local connections being added to access control listto, co jest potrzebne.
lobner
5

Wykonaj następujące czynności w swoim terminalu:

nano /home/user/.bashrc # user = name of your user

Dodaj następujący wiersz na końcu.

export XAUTHORITY=$HOME/.Xauthority
Wilder Hernández García
źródło
2
Byłoby użyteczne, gdybyś mógł dodać wyjaśnienie, w jaki sposób rozwiązuje to problem i czy ma jakieś negatywne skutki uboczne?
Geoff