ในเซิร์ฟเวอร์ X สภาพแวดล้อม linux ทั่วไปใช้โปรโตคอล MIT-MAGIC-COOKIE-1 เพื่อให้สิทธิ์การเข้าถึงจอแสดงผล ผู้ใช้ที่ต้องการเข้าถึงจอแสดงผลจะต้องมีคุกกี้ที่ถูกต้อง(ปกติถูกเก็บไว้ในไฟล์ ~ / .Xauthority) โดยปกติคุกกี้จะถูกสร้างขึ้นโดยตัวจัดการหน้าจอ (หน้าจอเข้าสู่ระบบ) หากคุณกำลังเริ่มต้นเซิร์ฟเวอร์ X จากสคริปต์ที่กำหนดเองของคุณคุณต้องสร้างคุกกี้ด้วยตัวคุณเองให้เก็บไว้ในไฟล์สิทธิ์และแจ้งเซิร์ฟเวอร์เกี่ยวกับไฟล์นั้น
คุณสามารถใช้คำสั่งmcookie
เพื่อสร้างคุกกี้และเพิ่มลงในไฟล์สิทธิใช้งานด้วยxauth
:
# touch /home/staff/.Xauthority
# xauth -f /home/staff/.Xauthority add :0 . $(mcookie)
Prameter -f /home/staff/.Xauthority
บอกxauth
ให้ใช้ไฟล์สิทธิใช้งานของผู้ใช้งานstaff :0
เป็นชื่อที่แสดง จุด ( .
) ระบุโปรโตคอล MIT-MAGIC-COOKIE-1 mcookie
มาจากแพคเกจutil-linux
ตอนนี้ถ้าคุณดำเนินการ:
# xauth -f /home/staff/.Xauthority list
คุณควรเห็นบางสิ่งเช่น:
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
เมื่อคุณเข้าสู่ระบบในฐานะผู้ใช้งานพนักงานคุณควรเห็นผลลัพธ์เดียวกันโดยไม่มีพารามิเตอร์ -f:
$ xauth list
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
หากไม่ตรวจสอบว่าXAUTHORITY
ตัวแปรสภาพแวดล้อมไม่ได้ถูกกำหนดหรือตั้งเป็น "/home/staff/.Xauthority"
เริ่มต้นเซิร์ฟเวอร์ X ด้วย-auth
พารามิเตอร์:
# X -auth /home/staff/.Xauthority
ตอนนี้ผู้ใช้พนักงานสามารถเข้าถึงหน้าจอ:0
ได้ สิ่งเดียวที่เหลือคือการตั้งค่าตัวแปรสภาพแวดล้อมDISPLAY
- สามารถทำได้ผ่านsudo
พารามิเตอร์ ดังนั้นเมื่อคุณ ssh ไปยังเซิร์ฟเวอร์และดำเนินการคำสั่งที่แสดงภาพเป็นพนักงานผู้ใช้แล้วมันควรจะแสดง การใช้ ImageMagick ตามที่แนะนำโดย L. Levrel คำสั่งจะเป็น:
# ssh server sudo -u staff DISPLAY=:0 display -window root /path/to/image.png
หมายเหตุ:คุณไม่ต้องใช้พนักงานผู้ใช้ คุณสามารถสร้างไฟล์ผู้มีอำนาจในตำแหน่งทั่วไป (เช่น / var / tmp / xauthority) และตั้งค่าตัวแปรสภาพแวดล้อมXAUTHORITY
สำหรับAliceและBobไปยังเส้นทางนั้น
อีกทางเลือกหนึ่งคือ "แจกจ่าย" คุกกี้ไปยังไฟล์สิทธิ์ของAliceและBob (ซึ่งคล้ายกับสิ่งที่ผู้จัดการการแสดงผลกำลังทำอยู่):
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/alice/.Xauthority merge
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/bob/.Xauthority merge
วิธีนี้AliceและBobไม่จำเป็นต้องทำsudo staff
เพื่อเข้าถึงหน้าจอ
หมายเหตุว่าถ้าคุณมีเซิร์ฟเวอร์ X มากกว่าทำงานคุณต้องใช้ชื่อที่แสดงที่แตกต่างจาก:0
ในคำสั่งดังกล่าว (เช่น:1
, :2
ฯลฯ )