โปรแกรม 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
export $(dbus-launch)หรือใช้xhost [+]เพื่อเปิดโปรแกรมโดยใช้ X และบัญชี superuser ของคุณ