ปุ่มเพาเวอร์ปิดเครื่องคอมพิวเตอร์โดยไม่ได้รับอนุญาตจากรูทอย่างไร


36

เมื่อฉันพยายามปิดเครื่องคอมพิวเตอร์จากบรรทัดคำสั่งหรือเทอร์มินัลฉันต้องมีสิทธิ์ใช้งานรูต:

amy@amy:~$ shutdown now
shutdown: Need to be root

และ

amy@amy:~$ halt
halt: Need to be root

แต่เมื่อปิดเครื่องโดยใช้ส่วนต่อประสานกราฟิกกับผู้ใช้เช่นปุ่มปิดเครื่องหรือปุ่มปิดเครื่องฮาร์ดแวร์ฉันไม่ได้ขอให้ใส่รหัสผ่าน การปิดอินเทอร์เฟซแบบกราฟิกนั้นคืออะไรและทำไมจึงไม่ต้องการรหัสผ่านหรือสิทธิ์การใช้งานรูท

ฉันใช้ Ubuntu 11.04 Natty



1
เพราะหากผู้โจมตีมีการเข้าถึงเครื่องคอมพิวเตอร์ของคุณคุณได้สูญเสียไปแล้ว ความพยายามที่จะป้องกันไม่ให้ใครบางคนที่อยู่ในวงแขนไม่สามารถทำอะไรได้เลยเป็นวิธีที่ดีที่สุดในการล่าช้าและทำให้เกิดความไม่สะดวกสำหรับผู้ใช้แบบวันต่อวันมากกว่าการโจมตี Linux distros ส่วนใหญ่จะให้พรอมต์รูตแก่คุณหากพูดคุยอย่างจริงจังระหว่างการบูทเครื่องด้วยเหตุผลนี้
Joseph Rogers

คำตอบ:


33

ปุ่มเปิด / ปิดฮาร์ดแวร์เปิดใช้งานเหตุการณ์ ACPI ที่acpid(ACPI daemon) ประกาศและตอบสนองต่อ ในกรณีนี้โดยการปิดระบบแม้ว่าคุณจะสามารถทำสิ่งที่คุณต้องการ ACPI daemon รันเป็นรูทดังนั้นจึงมีสิทธิ์ในการปิดระบบ สภาพแวดล้อมของเดสก์ท็อป (เช่นgdmGnome) มักจะทำงานเป็นรูทเช่นกันดังนั้นฉันสงสัยว่ามันทำงานในลักษณะเดียวกันคุณไม่ได้รับอนุญาตให้ปิดระบบ แต่คุณสามารถบอกได้ว่าgdmคุณต้องการปิดระบบและสามารถทำได้ ในนามของคุณ


ปลอดภัยไหม 'คุณสามารถทำสิ่งที่คุณต้องการได้'
amyassin

7
หากต้องการacpidทำสิ่งที่แตกต่างไปจากที่มีอยู่แล้วคุณจะต้องรูทดังนั้นคุณจึงต้องได้รับอนุญาตให้ทำสิ่งที่ไม่ปลอดภัย นอกจากนี้ยังเป็นไปได้ที่จะใช้ระบบ MAC เช่น SELinux เพื่อป้องกันacpidจำกัด สิ่งที่พวกเขาได้รับอนุญาตให้ทำแม้ในขณะที่พวกเขาทำงานเป็นราก
Warren Young

5
@amyassin เอ่อเปลี่ยนสิ่งที่คุณต้องการสิทธิ์รูท; ผู้ใช้ปกติไม่สามารถบอกได้ว่าจะทำอย่างไร แต่acpidสามารถกำหนดค่าได้สามารถเรียกใช้สคริปต์ที่แตกต่างกันขึ้นอยู่กับเหตุการณ์ฮาร์ดแวร์ที่เห็น (ตัวอย่างเช่นฉันacpidล็อคคอมพิวเตอร์ของฉันเมื่อฉันกดปุ่มเปิด / ปิด)
Michael Mrozek

7
@amyassen หากใครบางคนสามารถเข้าถึงเครื่องของคุณได้แล้วมันก็สายเกินไปที่จะกังวลเกี่ยวกับความปลอดภัย - หากปุ่มเปิดปิดไม่ทำงานอย่างสง่างามพวกเขาสามารถดึงสายไฟและทำให้การปิดเครื่องไม่น่าสนใจ
Shadur

3
กล่าวว่า 'ซอฟต์แวร์ที่เป็นอันตราย' จะต้องได้รับสิทธิ์การเป็นเจ้าของรูทและสิทธิ์ของ SUID เพื่อบอกให้ init ทำการปิดเครื่อง - และอีกครั้งเมื่อถึงจุดนั้นคุณจะพบปัญหาที่ใหญ่กว่าที่จะกังวลมากกว่าการปิดระบบที่เป็นไปได้
Shadur

11

คำตอบของ Michael อธิบายเกี่ยวกับฟังก์ชั่นระบบอย่างถูกต้องเมื่อใช้สวิตช์ไฟฮาร์ดแวร์ แต่สภาพแวดล้อมเดสก์ท็อปส่วนใหญ่ใช้dbusเพื่อจุดประสงค์นี้แทนที่จะทำเอง ยกตัวอย่างเช่นการใช้ GNOME dbus's org.freedesktop.Hal.Device.SystemPowerManagement.Shutdownเมื่อกดปุ่มปิดมีการคลิก เมื่อสิ่งนี้ถูกส่งไปdbusจะทำการตรวจสอบบางอย่างเพื่อตรวจสอบว่าผู้ใช้ที่ส่งข้อความนั้นได้รับอนุญาตให้ทำการปิดเครื่องหรือไม่และหากเป็นเช่นนั้นจะเป็นการปิดระบบ

dbus-sendคุณสามารถเลียนแบบนี้ได้โดยใช้ ตัวอย่างเช่นหากต้องการปิดระบบโดยdbusใช้สิ่งนี้:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.