ไม่สามารถเชื่อมต่อกับ X server: 0.0 เป็น superuser


10

เมื่อฉันออนไลน์ฉันได้รับข้อผิดพลาดต่อไปนี้และเครื่องมือไม่เริ่มทำงาน:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0

แต่ทุกอย่างก็โอเคเมื่อฉันไม่ใช่ superuser ทำไมล่ะ

แก้ไข

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified

ข้อเสนอแนะใด ๆ

ด้วย

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"

นี่คือคลาสสิก คุณสามารถทำexport $(dbus-launch)หรือใช้xhost [+]เพื่อเปิดโปรแกรมโดยใช้ X และบัญชี superuser ของคุณ
41754

ทำทั้งสองอย่างดูการแก้ไขด้านบน
msz

อาจเป็นการ$ xhostดูการเข้าถึงปัจจุบันและ$ xhost +การเปิดใช้งานการเข้าถึงจากโฮสต์ใด ๆ คุณมักทำสิ่งนี้จากเทอร์มินัลเสมือนที่คุณรู้ว่าสามารถวางไข่โปรแกรมโดยใช้ X
41754

@galegosimpatico: ทำไมจะเปิดใช้เซิร์ฟเวอร์ dbus แก้ปัญหานี้
Bananguin

เมื่อคุณไม่ได้เป็น superuser สิ่งที่จะecho $DISPLAYแสดง? ผู้ใช้คนใดที่กระบวนการ xserver คุณต้องการใช้เป็นของใคร? (คุณสามารถหาหลังโดยใช้ตัวอย่างเช่นps faux)
Bananguin

คำตอบ:


12

โปรแกรม X ต้องการข้อมูลสองชิ้นเพื่อเชื่อมต่อกับจอแสดงผล X

  • มันต้องอยู่ของจอแสดงผลซึ่งโดยปกติ:0เมื่อคุณเข้าสู่ระบบในท้องถิ่นหรือ:10, :11ฯลฯ เมื่อคุณเข้าสู่ระบบจากระยะไกล ( แต่จำนวนจะเปลี่ยนไปขึ้นอยู่กับจำนวนการเชื่อมต่อ X มีการใช้งาน) ปกติแล้วที่อยู่ของจอแสดงผลจะระบุไว้ในDISPLAYตัวแปรสภาพแวดล้อม

  • มันต้องการรหัสผ่านสำหรับการแสดงผล X รหัสผ่านจอแสดงผลจะเรียกว่าคุกกี้มายากล ไม่ได้ระบุคุกกี้เวทย์โดยตรง: พวกมันจะถูกเก็บไว้ในไฟล์ X Authority เสมอซึ่งเป็นชุดของเร็กคอร์ดของฟอร์ม“ display :42มีคุกกี้123456” โดยปกติไฟล์สิทธิ X จะระบุไว้ในXAUTHORITYตัวแปรสภาพแวดล้อม หากไม่มีการตั้งค่าโปรแกรมใช้$XAUTHORITY~/.Xauthority

ดูเปิดหน้าต่างบนจอแสดงผล X ระยะไกล (ทำไม "ไม่สามารถเปิดจอแสดงผล") สำหรับรายละเอียดเพิ่มเติม

ในกรณีของคุณDISPLAYตั้งค่าไว้ แต่โปรแกรมไม่สามารถค้นหาไฟล์คุกกี้ได้อย่างชัดเจน ตรวจสอบค่าของในเซสชั่นของคุณและอยู่ภายใต้XAUTHORITYsu

หากXAUTHORITYไม่ได้ตั้งอยู่ในเซสชั่นของคุณและsuกำหนดHOMEตัวแปรสภาพแวดล้อมเพื่อไดเรกทอรีบ้านรากแล้วคุณจะต้องตั้งXAUTHORITYไป/home/msz/.Xauthorityที่/home/mszเป็นไดเรกทอรีที่บ้านของคุณ

หากsuลบออกXAUTHORITYจากสภาพแวดล้อมให้นำมันกลับมาหรือกำหนดค่าsuไม่ให้ทำ

หากโฮมไดเร็กทอรีของคุณอยู่ในระบบไฟล์บางระบบเช่น NFS รูทอาจไม่สามารถอ่านได้โดยตรง ในกรณีนั้นคุณสามารถคัดลอก.Xauthorityไฟล์ไปยังตำแหน่งอื่นบนระบบไฟล์ที่ไม่ใช่ NFS:

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY

1
ฉันสร้างลิงก์สัญลักษณ์และใช้งานได้ดี นี่คือ:ln -s /home/otheruser/.Xauthority ~
สามารถGeliş

XAUTHORITY สำหรับฉันได้รับการตั้งค่าเป็นไฟล์ที่ไม่มีอยู่อีกต่อไป:
pbhj

5

คุณใช้ xhost เป็นรูท!

เรียกใช้ xhost ในฐานะผู้ใช้ปกติxhost +จากนั้นกลายเป็นรูทจากนั้นลองอีกครั้ง

btw เป็นคนอื่นได้ชี้xhost +ให้ผู้ใช้ใด ๆ จากโฮสต์ใด ๆ


ระบบที่ทันสมัยจำนวนมากถูกติดตั้งเพื่อที่xhostจะไม่ทำงาน ถ้าเป็นเช่นนั้นอย่างน้อยก็ทำงานxhost +localhostไม่ได้xhost +!
Gilles 'ดังนั้นหยุดความชั่วร้าย'

เข้าใจว่าเป็นจุดที่ดี ขอบคุณสำหรับคำแนะนำ.
X Tian

มันเป็นปัญหาของฉัน! ขอบคุณมันแก้ไขทุกอย่าง! ฉันเพียงแค่วิ่งจากที่ไม่ใช่ราก
Quidam

0

XAUTHORITY สำหรับฉันถูกตั้งเป็นไฟล์ที่ไม่มีอยู่อีกต่อไป:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

ดังนั้นฉันทำ

unset XAUTHORITY

และจากนั้นสามารถเชื่อมต่อกับแอปของฉันในฐานะรูทโดยใช้ kdesudo (ในกรณีนี้kdesudo bleachbit)


0

เรียกใช้ในฐานะผู้ใช้ปกติ

xhost + localhost

จากนั้นเปิดใช้งานผู้ใช้ระดับสูงด้วย

sudo su 

ในที่สุดก็ไปที่ตัวอย่างเซิร์ฟเวอร์

cd /usr/local/Ampps

ในที่สุดก็รัน. /Ampps

ขอบคุณฉันในปี 2020


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