ทางเลือกอื่นsux
คือให้รันคำสั่งกราฟิก ( firefox-esr
ในตัวอย่างด้านล่าง) อย่างปลอดภัยเป็น$AUTHUSER
( guest
ในตัวอย่างด้านล่าง):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
รหัสทำ:
- ช่วยให้
guest
ผู้ใช้สามารถเข้าถึงผู้ใช้ปัจจุบันของคุณ$DISPLAY
ผ่านทางxhost +SI:localuser:guest
- ใช้
ssh-askpass
เพื่อขอรหัสผ่านแบบกราฟิกกับคุณ (แน่นอนคุณสามารถใช้sudoers(5)
NOPASSWD:
เพื่อหลีกเลี่ยงปัญหานี้ได้หากนโยบายความปลอดภัยของคุณคิดว่าใช้ได้หรือคุณสามารถใช้askpass
โปรแกรมอื่นหรือระบุในไฟล์ปรับแต่ง (ดูsudo(8)
รายละเอียด--askpass
)
- หากรหัสผ่านเป็น ok (และคุณมีสิทธิ์ใน
sudoers(5)
) มันทำงานคำสั่ง/usr/bin/firefox-esr
ในฐานะผู้ใช้อื่น ( guest
)
- หลังจากโปรแกรมเสร็จสิ้นการอนุญาตให้ผู้ใช้รายอื่น (
guest
) ในการเข้าถึงของคุณ$DISPLAY
ถูกเพิกถอนผ่านxhost -SI:localuser:guest
ในที่สุดsudo -K
ลบรหัสผ่านที่แคชดังนั้นการร้องขอครั้งต่อไปssh-askpass
จะขอรหัสผ่านอีกครั้ง (แทนที่จะใช้รหัสผ่านที่เก็บไว้)
ในขณะที่มันใช้งานได้น้อยกว่าสิ่งที่ทำgksu(8)
หรือsux(8)
ทำอยู่ก็สามารถเขียนสคริปต์ได้และมีความปลอดภัยมากกว่า:
xhost +
(ผู้ใช้รายใดก็ตามจะสามารถเข้าถึงการแสดงผลกราฟิกของคุณตราบเท่าที่ยังมีผลอยู่)
- สามารถอ่านได้ ~ / .xauth โดยผู้ใช้รายอื่น (ผู้ใช้รายนั้นเข้าถึงการแสดงผลของคุณโดยไม่ จำกัด จำนวน)
- อะไร
gksu
/ sux
ทำอะไร (คัดลอกชั่วคราว~/.Xauthority
ซึ่งอนุญาตให้ผู้ใช้ที่ระบุเพื่อคัดลอกของคุณMIT-MAGIC-COOKIE-1
และใช้จอแสดงผลของคุณต่อไปแม้หลังจาก gksu / sux เสร็จสิ้นแล้ว (ตราบใดที่คุณไม่ได้ปิดเครื่องหรือออกจากระบบการแสดงผล - หน้าจอ คุกกี้).
เนื่องจากจะอนุญาตให้ผู้ใช้ภายในเครื่องเดียวเข้าถึงการแสดงผลของคุณและจากนั้นตราบใดที่คำสั่งรัน (เมื่อคำสั่งเสร็จสิ้น$AUTHUSER
จะไม่สามารถเข้าถึงการแสดงผลของคุณได้อีกต่อไป)
ทางเลือกที่ปลอดภัยอีกทางหนึ่งคือ ssh -X
(หากไม่มี-Y
ซึ่งจะทำให้คุณปลอดภัยน้อยลง! ดูForwardX11Trusted
ในssh_config(5)
รายละเอียด) เช่นเดียวกับที่ใช้งานได้ง่ายกว่าถ้าคุณไม่ได้เขียนสคริปต์ แต่จะทำให้เกิด overhead additinal โดยไม่ต้องปลอดภัย -Y
$XAUTHORITY
ยังคงถูกตั้งค่าเป็น user1~/.Xauthority
ซึ่งฉันเดาว่าโปรแกรมจะพยายามอ่านและมันล้มเหลวเนื่องจากไฟล์นั้นมักจะมีโหมด 0600 (-rw-------
) ซึ่งหมายความว่าไม่สามารถใช้งานได้ สำหรับการอ่านโดยทุกคนในกลุ่ม "อื่น ๆ " ซึ่งรวมถึง user2 หมายความว่าถ้าคุณchmod o+r ~/.Xauthority
(ในฐานะผู้ใช้ 1) คุณจะแฮ็ควิธีการแก้ปัญหานี้ ฉันเขียนสคริปต์ที่แสดงถึงสิ่งนี้