Không thể kết nối với X Server khi chạy ứng dụng với sudo


29

Khi tôi đang chạy một số phần mềm bằng sudolệnh, nó hiển thị lỗi như

cannot connect to X server

Ví dụ: nếu tôi chạy lệnh sau:

$ sudo gedit /etc/profile

Tôi đang nhận lệnh

(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr' 
exited with non-zero exit status 1: 
Autolaunch error: X11 initialization failed. 
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.

Hoặc nếu tôi đang chạy, super-boot-managertôi đang gặp lỗi sau

buc: cannot connect to X server

Hãy giúp tôi.


Bạn chạy super-boot-mangerđến từ đâu?
Thor

Đầu tiên tôi đã cố gắng chạy super-boot-managertrực tiếp từ bữa ăn trưa đoàn kết, nó đã không hoạt động. Sau đó, tôi đã thử nó từ thiết bị đầu cuối, sau đó tôi nhận được những massage lỗi.
Apurba

Như trong một thiết bị đầu cuối trong môi trường người dùng đồ họa? Không echo $DISPLAYnói gì? Bạn nên chạy nó mà không chạy sudonhư nội bộ. super-boot-managersudo
Thor

echo $DISPLAYđang cho đi :0.0. Và tôi không chạy super-boot-managernhư sudo. Tôi đang chạy chỉ bằng cách sử dụng lệnh super-boot-managertừ thiết bị đầu cuối.
Apurba

1
Cuối cùng vấn đề được giải quyết. Tôi vừa thêm dòng: Defaults env_keep="DISPLAY XAUTHORITY"ở cuối visudo. Cảm ơn tất cả, đặc biệt @Thor đã giúp đỡ.
Apurba

Câu trả lời:


39

Bạn cần cho phép người dùng root truy cập vào máy chủ X:

xhost local:root

Và trỏ lệnh sang phải DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile

Điều đó đã giải quyết vấn đề với việc mở geditnhư sudo, nhưng vẫn không thể ăn trưa super-boot-manager. Nó đang hiển thị lỗi tương tự
Apurba

15

Cuối cùng vấn đề được giải quyết. Tôi vừa thêm dòng:

Mặc định env_keep = "HIỂN THỊ XAUTHORITY"

vào cuối visudo.

Để làm điều đó bạn phải chạy

sudo visudo

Nó sẽ mở tập tin sau đó thêm dòng trên vào cuối.

Cảm ơn tất cả, đặc biệt @Thor đã giúp đỡ


1
Mặc định env_keep = "HIỂN THỊ" hoạt động với tôi.
bagustris

Tôi đã tìm kiếm cao và thấp cho câu trả lời này mãi mãi. Tôi ước tôi có thể nâng cao cả hai bạn nhiều lần cho câu trả lời của bạn. Cảm ơn bạn rất nhiều! :)
Ev-

4

Bổ sung câu trả lời của @ Thor:

Chạy xhost local:roottrước sudo gedit. Để làm điều này vĩnh viễn, thêm dòng

xhost local:root

vào tệp ~ / .xinitrc 1 . Tạo tập tin nếu nó không tồn tại.


[1] https://askubfox.com/a/720120/452398


Cảm ơn bạn đã cung cấp một câu trả lời cung cấp một giải pháp không cố định.
2NinerRomeo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.