ไม่สามารถเชื่อมต่อกับ X Server เมื่อเรียกใช้แอพด้วย sudo


29

เมื่อฉันใช้งานซอฟต์แวร์โดยใช้sudoคำสั่งมันแสดงข้อผิดพลาดเช่น

cannot connect to X server

ตัวอย่างเช่นถ้าฉันใช้คำสั่งต่อไปนี้:

$ sudo gedit /etc/profile

ฉันได้รับคำสั่งดังต่อไปนี้

(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.

หรือถ้าฉันทำงานsuper-boot-managerฉันได้รับข้อผิดพลาดดังต่อไปนี้

buc: cannot connect to X server

กรุณาช่วย.


คุณวิ่งหนีsuper-boot-mangerจากที่ไหน
ธ.ค.

ก่อนอื่นฉันพยายามเรียกใช้super-boot-managerโดยตรงจากอาหารกลางวันที่เป็นอันหนึ่งอันเดียวกันมันไม่ทำงาน จากนั้นฉันลองจากเทอร์มินัลจากนั้นฉันได้รับการนวดผิดพลาด
Apurba

ในเทอร์มินัลภายในสภาพแวดล้อมผู้ใช้แบบกราฟิกหรือไม่ อะไร: echo $DISPLAYพูด? คุณควรจะทำงานได้โดยไม่ต้องsudoเป็นsuper-boot-managerวิ่งsudoภายใน
ธ.ค.

echo $DISPLAY:0.0คือการให้ และฉันไม่ได้ทำงานเป็นsuper-boot-manager sudoฉันกำลังรันโดยใช้คำสั่งsuper-boot-managerจากเทอร์มินัล
Apurba

1
ในที่สุดปัญหาได้รับการแก้ไข ฉันมีเพียงเพิ่มบรรทัด: ในตอนท้ายของDefaults env_keep="DISPLAY XAUTHORITY" visudoขอบคุณทุกคนเป็นพิเศษ @Thor สำหรับความช่วยเหลือ
Apurba

คำตอบ:


39

คุณต้องอนุญาตให้ผู้ใช้รูทเข้าถึงเซิร์ฟเวอร์ X:

xhost local:root

และชี้คำสั่งไปทางขวาDISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile

ที่แก้ปัญหาที่มีการเปิดgeditเป็นแต่ก็ยังไม่สามารถรับประทานอาหารกลางวันsudo super-boot-managerมันแสดงข้อผิดพลาดเดียวกัน
Apurba

15

ในที่สุดปัญหาได้รับการแก้ไข ฉันเพิ่งเพิ่มบรรทัด:

ค่าเริ่มต้น env_keep = "DISPLAY XAUTHORITY"

visudoปลาย

เมื่อต้องการทำเช่นนั้นคุณต้องเรียกใช้

sudo visudo

มันจะเปิดไฟล์จากนั้นเพิ่มบรรทัดข้างต้นในตอนท้าย

ขอบคุณทุกคนเป็นพิเศษ @Thor สำหรับความช่วยเหลือ


1
ค่าเริ่มต้น env_keep = "DISPLAY" ใช้งานได้สำหรับฉัน
bagustris

ฉันค้นหาคำตอบนี้สูงและต่ำตลอดไป ฉันหวังว่าฉันสามารถโหวตคุณทั้งสองได้หลายครั้งสำหรับคำตอบของคุณ ขอบคุณมาก! :)
Ev-

4

การเสริมคำตอบของ @ Thor:

เรียกใช้ก่อนxhost local:root sudo geditหากต้องการทำให้ถาวรให้เพิ่มบรรทัด

xhost local:root

ไปยังแฟ้ม ~ / .xinitrc 1 สร้างไฟล์หากไม่มีอยู่


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


ขอบคุณที่ให้คำตอบที่ให้คำตอบที่ไม่ถาวร
2NinerRomeo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.