สิทธิ์การปิดระบบ Linux


8

สมมติว่าคุณติดตั้งระบบเดสก์ท็อปพูดอูบุนตูหรือเดเบียน คุณสามารถปิดระบบได้โดยคลิกที่ปุ่มใดก็ได้บนเมนูระบบของคุณในฐานะผู้ใช้ปกติ คุณไม่จำเป็นต้องเปลี่ยนไปใช้ superuser เพื่อทำสิ่งนั้นให้สำเร็จ

อย่างไรก็ตามในสภาพแวดล้อมเดสก์ท็อปเดียวกันถ้าฉันเปิดเทอร์มินัล (พูด gnome-terminal) ในฐานะผู้ใช้ปกติและพิมพ์

shutdown -h now

ฉันจะได้รับแจ้งจาก

shutdown: need to be root

วิธีเดียวในการปิดระบบคือการเพิ่มคำสั่งด้วย sudo

ใครสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนี้?

ขอบคุณ KC


ดูเพิ่มเติมที่: unix.stackexchange.com/questions/18503/…
amyassin

คำตอบ:


8

คำถามที่ถามโดย K.Chen คือ: ทำไมฉันต้องใช้สิทธิ์ sudo เมื่อฉันทำจาก CLI, ahile ฉันไม่ต้องการสิทธิ์พิเศษเมื่อฉันทำจาก GUI

ส่วนแรกของคำตอบคือผู้ที่ออกแบบเดสก์ท็อปสภาพแวดล้อมเช่น Gnome, KDE, Xfce, Mate, Cinnamon, ... พยายามทำให้งานของผู้ใช้ง่ายขึ้นและกำหนดค่าการปิดและรีบูตโดยไม่ต้องใช้ข้อมูลรับรอง sudo ในกรณีนี้หมายความว่าต้องมีลำดับการปิดระบบซึ่งไม่เกี่ยวข้องกับการปิดโปรแกรมซึ่งจำเป็นต้องใช้สิทธิ์ sudo (ไม่มีทางแก้ไข)

ฉันไม่ทราบรายละเอียดว่า DE แต่ละคนทำอย่างไร แต่ฉันรู้ว่ามีวิธีอ่อนโยนที่จะนำมาใช้ใหม่หรือรีสตาร์ท / ปิด / ปิด / จำศีลระบบของคุณซึ่งไม่ต้องการสิทธิ์พิเศษ คุณสามารถค้นหาโพสต์ต้นฉบับในโพสต์ Arch ลินุกซ์ฟอรั่ม ในสาระสำคัญมันมีจำนวนการออกคำสั่ง hese:

หยุด

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

รีบูต

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"  /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

dbus ระงับ

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

จำศีล

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate 

ฉันเดาว่าปุ่ม GUI ใช้คำสั่งเหล่านี้โดยประมาณ เพื่อความมั่นใจควรดูรหัส แต่ฉันเชื่อว่านี่เป็นเดิมพันที่ปลอดภัย


1
หากมีใครบางคนลงชื่อเข้าใช้จากระยะไกลไปยังเครื่องที่มีสภาพแวดล้อมเดสก์ท็อปกำลังทำงานอยู่เขาสามารถออกคำสั่งเหล่านี้และปิดระบบ / รีบูต / หยุดชั่วคราว / ไฮเบอร์เนตได้หรือไม่
gerrit

มีด้านที่เป็นอันตรายต่อคำถามนี้ฉันเชื่อว่าควรใช้ดุลยพินิจ
MariusMatutiae

1
ทำไมจึงเป็นอันตราย ถ้ามันสามารถถูกทำร้ายได้ทางซิสอปควรรู้และรู้วิธีป้องกันด้วย
gerrit

ฉันไม่ได้บอกว่าคุณกำลังเป็นอันตราย แต่การใช้งานที่เป็นอันตรายอาจทำให้ข้อมูลนี้ ฉันเสียใจที่ได้แบ่งปันแล้ว ... บางทีฉันควรทำเช่น @Matteo
MariusMatutiae

5

เหตุผลที่อยู่เบื้องหลังการตัดสินใจออกแบบนี้ไม่ใช่ทางเทคนิค (คุณอาจมีshutdownคำสั่งที่ไม่มีสิทธิพิเศษหรือต้องการรหัสผ่านใน GUI)

  • เมื่อใช้สภาพแวดล้อมเดสก์ท็อปผู้ใช้ควรจะมีการเข้าถึงเครื่องทางกายภาพ ถ้าอย่างนั้นดีกว่าที่จะยอมให้ปิดเครื่องได้ดีกว่าปล่อยให้ผู้ใช้กดปุ่มเปิดปิดหรือถอดปลั๊กไฟ

  • เมื่อใช้เชลล์ผู้ใช้อาจเป็นผู้ใช้ระยะไกลและเพื่อหลีกเลี่ยงการปิดระบบจากระยะไกลขอสิทธิ์เพิ่มเติม

สิ่งเหล่านี้ไม่ใช่กฎแต่เป็นค่าเริ่มต้นตามสมมติฐาน: คุณสามารถมีผู้ใช้โลคัลในเชลล์และผู้ใช้รีโมตที่มีสภาพแวดล้อมเดสก์ท็อป หากคุณต้องการเลือกพฤติกรรมเริ่มต้นคุณสามารถกำหนดค่าระบบของคุณได้


ฉันเห็นประเด็นของคุณ @Matteo แต่อย่างที่ MariusMatutiae กล่าวว่าภายใต้ประทุน DE ต้องเรียกโปรแกรมอื่นนอกเหนือจาก "การปิดระบบ" ไปสู่การปิดระบบโดยไม่ต้องใช้สิทธิ์ superuser คุณมีเงื่อนงำอะไรมันคืออะไร?
K.Chen

1

Sudo (superuser do) อนุญาตให้ผู้ดูแลระบบให้ผู้ใช้บางคน (หรือกลุ่มผู้ใช้) สามารถเรียกใช้คำสั่ง (หรือทั้งหมด) เป็นรูทขณะที่บันทึกคำสั่งและอาร์กิวเมนต์ทั้งหมด คำสั่ง shutdown -h หรือคำสั่ง init 0 สามารถใช้เพื่อปิดเครื่อง แต่คำสั่งทั้งสองต้องการสิทธิ์รูทเพื่อดำเนินการ

คำสั่งที่ตั้งอยู่ใน / sbin ต้องมีสิทธิ์รูทเพื่อดำเนินการ สำหรับการค้นหาตำแหน่งของคำสั่งปิดเครื่อง

พิมพ์ที่ปิดเครื่องในสถานี

หวังว่าตอนนี้ข้อสงสัยของคุณชัดเจน :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.