ทำไมฉันต้องรูทเพื่อปิด / รีบูตเครื่องคอมพิวเตอร์จากเครื่อง การทำเช่นนั้นผ่านเมนู GUI ไม่จำเป็นต้องมีสิทธิ์รูท
ทำไมฉันต้องรูทเพื่อปิด / รีบูตเครื่องคอมพิวเตอร์จากเครื่อง การทำเช่นนั้นผ่านเมนู GUI ไม่จำเป็นต้องมีสิทธิ์รูท
คำตอบ:
โดยปกติแล้วระบบปฏิบัติการจะเปิดตัวเมื่อเริ่มต้นบริการที่ทำงานในฐานะรูทและนำเสนอความเป็นไปได้บางประการเกี่ยวกับคอมพิวเตอร์ โดยปกติจะเป็น ConsoleKit หรือ systemd-logind
ตัวอย่างเช่นใน KDE คุณสามารถปิดคอมพิวเตอร์จากบรรทัดคำสั่งเป็น ปกติ ผู้ใช้ที่มีสิ่งที่ชอบ:
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
สิ่งนี้เป็นไปได้เนื่องจากตัวจัดการเซสชัน KDE จะติดต่อบริการ DBus ที่ทำงานเป็นรูทและเมื่อถูกเรียกจะเรียกใช้ shutdown
คำสั่งด้วยสิทธิ์รูต
บนระบบที่ใช้ ConsoleKit คุณสามารถใช้:
gdbus call -y -d org.freedesktop.ConsoleKit \
-o /org/freedesktop/ConsoleKit/Manager \
-m org.freedesktop.ConsoleKit.Manager.Stop
ในระบบที่ใช้ systemd-logind , shutdown
ยูทิลิตี้ใช้แล้ว DBus และไม่ต้องการสิทธิ์
เพื่อสรุปคุณสามารถปิดคอมพิวเตอร์ของคุณในฐานะผู้ใช้ปกติได้เนื่องจาก Desktop Environment จะเรียกใช้บริการที่เสนอความเป็นไปได้ในการเรียกใช้คำสั่งปิดระบบ [1] ในฐานะรูท
[1] ที่จริงแล้วบริการทำสิ่งอื่น ๆ เพื่อให้แน่ใจว่า Desktop Environment ปิดตัวลงอย่างถูกต้อง
ลองนึกภาพคอมพิวเตอร์ของคุณเป็นเซิร์ฟเวอร์เว็บโฮสติ้งที่แชร์ซึ่งผู้ใช้ทุกคนจะได้รับสิทธิ์การเข้าถึง SSH มีผู้ใช้ประมาณ 500 คนต่อหนึ่งเซิร์ฟเวอร์ในการตั้งค่าดังกล่าว
ทุกคนควรได้รับอนุญาตให้รีบูตเซิร์ฟเวอร์ทั้งหมดทำลายการดาวน์โหลด HTTP หยุดเซสชัน SSH ฯลฯ หรือไม่
เหตุผลบางอย่างจากส่วนบนของหัวของฉัน
HTH
นอกเหนือจากเมนู GUI คุณยังสามารถปิด Linux จากคอนโซลข้อความ สิ่งที่มีเหมือนกันกับ GUI คือผู้ใช้ที่ออกคำสั่งนั้นมีสิทธิ์เข้าถึงทางกายภาพ (สำหรับสถานการณ์พิเศษที่ไม่เป็นความจริงเช่นเดียวกับซุ้มสาธารณะก็สามารถปิดได้)
ผู้ใช้เซสชัน TTY โดยพลการไม่สามารถสันนิษฐานได้ว่ามีการเข้าถึงแบบฟิสิคัล มันเป็นรูปแบบของการเข้าถึงระยะไกล ไม่มีวิธีที่จะส่งสัญญาณการปิดระบบผ่านเซสชัน TTY ที่กำหนดเองไม่ว่าจะเป็น xterm โลคัลเทอร์มินัลจริงบนบรรทัดอนุกรมหรือเซสชัน ssh คุณต้องพิสูจน์ว่าคุณมีสิทธิ์เทียบเท่ากับการเข้าถึงทางกายภาพโดยการรูท
หากผู้ใช้ที่ไม่ได้รับอนุญาตหรือไม่ได้รับอนุญาตสามารถรีบูตระบบจากระยะไกลได้นั่นจะเป็นปัญหาด้านความปลอดภัย
เช่นเดียวกับการล็อกอินจากระยะไกลเทอร์มินัลฟิสิคัล (พอร์ตอนุกรมจริง) เป็นรูปแบบการเข้าถึงระยะไกล ผู้ใช้อาจอยู่ในอาคารอื่นหรือในส่วนอื่นของโลก (ผ่านโมเด็ม)
ตัวจำลองเทอร์มินัลกราฟิกเช่น xterm ไม่ใช่รีโมท แต่ระบบปฏิบัติการไม่ทราบ แอปพลิเคชันถูกนำไปใช้โดยใช้ หลอก TTY . นี่เป็นอุปกรณ์ TTY เสมือนจริงซึ่งระบบปฏิบัติการ (ส่วนใหญ่) ไม่ได้แยกความแตกต่างจาก tty จริง ถ้าคุณพิมพ์ stty
ในเซสชัน xterm หรือ ssh คุณจะทราบว่าคุณมีอัตรารับส่งข้อมูลเช่น 9600 หรือ 38400 และสามารถสลับการควบคุมการไหลของ xon / xoff หรือแม้แต่ cts / rts หลอก TTY ได้ ในทางทฤษฎีมีโปรโตคอลการส่งสัญญาณรีบูตพิเศษระหว่างต้นแบบและทาสที่ไม่สามารถใช้ได้ใน TTY ปกติ แต่ก็ไม่มี (อันที่จริงแล้ว xterm อาจเป็นรีโมทเนื่องจากเป็นแอปพลิเคชันไคลเอนต์ X ที่สามารถเปลี่ยนเส้นทางเพื่อสร้างหน้าต่างของตนบนเซิร์ฟเวอร์ X ระยะไกล)
(ไม่แน่ใจว่าหมายถึงอะไร "terminal" ในคำถามนั้นไม่มีใน Linux)