วิธีการปิดการใช้งานการปิด / รีบูต / ระงับ / จำศีล?


12

ฉันมีคอมพิวเตอร์ตั้งโต๊ะ Ubuntu 10.04 LTS กับ GNOME

ฉันจะปิดการใช้งานฟังก์ชั่นรีบูต / ปิดระบบ / หยุดชั่วคราว / ไฮเบอร์เนตใน GNOME หรือแม้แต่กับรูทได้อย่างไร? เพื่อให้รูทแสดงคำสั่ง "reboot" หรือ "pm-suspend" มันจะไม่ทำอะไรเลยและเครื่องก็จะทำงานต่อไป ฉันจะปิดการใช้งาน "คุณสมบัติ" พื้นฐานเหล่านี้ได้อย่างไร?


ฉันไม่รู้? ในฐานะที่เป็นตู้? คุณเพิ่งลบshutdownและออกpm-suspendจาก/sbin/และ/bin/
Amith KK

ไฟล์เหล่านั้นอาจอยู่ในแคชใช่ไหม การลบออกจะไม่อนุญาตให้ฟังก์ชั่นรีบูต / ปิด / หยุดชั่วคราว / ไฮเบอร์เนตอย่างถาวรแม้ใน GNOME หรือไม่
LanceBaynes

ใช่มันอาจเป็นไปได้ที่
@Lance

คำตอบ:


15

การเข้าถึงของผู้ใช้เพื่อการกระทำเหล่านี้ถูกควบคุมโดย polkit โดยเฉพาะอย่างยิ่งพวกเขาสอดคล้องกับการกระทำดังต่อไปนี้:

  • org.freedesktop.consolekit.system.stop
  • org.freedesktop.consolekit.system.restart
  • org.freedesktop.upower.suspend
  • org.freedesktop.upower.hibernate

การดำเนินการทั้งหมดเหล่านี้ได้รับอนุญาตโดยค่าเริ่มต้นสำหรับผู้ใช้ในท้องถิ่นที่ใช้งาน (แม้ว่าจะconsolekitจำกัด การอนุญาตสองครั้งแรกให้ทำงานเฉพาะเมื่อมีผู้ใช้คนเดียวที่ล็อกอินเข้าสู่ระบบ)

หากคุณต้องการปิดใช้งานการกระทำเหล่านี้ให้สร้างไฟล์/etc/polkit-1/50-local.d/disable-shutdown.pklaที่มีลักษณะดังนี้:

[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

สิ่งนี้ควรป้องกันไม่ให้การกระทำเหล่านั้นสำเร็จ man pklocalauthorityข้อมูลเพิ่มเติมเกี่ยวกับแฟ้มนโยบายเหล่านี้สามารถพบได้โดยการทำงาน

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

โปรดทราบว่าใน Ubuntu รุ่นต่อมาบางคนตัดสินใจที่จะทำลายความเข้ากันได้ ตอบว่าในวิธีการปิดการใช้งานการปิด / รีบูตจาก lightdm ใน 14.04? ดูเหมือนว่าการกระทำจะเปลี่ยนเป็น "org.freedesktop. login1 .reboot" (และสิ่งที่คล้ายกัน)

ตัวอย่างเช่นใน 14.04 เพิ่มบรรทัดต่อไปนี้เป็น/etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pklaงาน:

[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

นอกจากนี้โปรดทราบว่าวิธีการนี้จะบล็อกคำสั่งรีบูต / etc ที่ออกให้โดย GUI เท่านั้น เพื่อบล็อกคำสั่ง reboot / etc จากบรรทัดคำสั่งหนึ่งอาจใช้ molly-guard - ตามที่อธิบายไว้ในการปิดการใช้งานคำสั่งปิดสำหรับผู้ใช้ทั้งหมดแม้แต่ราก - ผลกระทบ?


3
หยุดทำงานที่นี่กับ Ubuntu 13.10 !!!
GabrieleV

@GabrieleV อาจเป็นรุ่นที่มี login1 ทำงานใน 13.10 หรือไม่ ฉันทดสอบใน 14.04 - และหวังว่าจะไม่มีใครใน Canonical ที่เข้ากันได้แบบย้อนหลังใน polkit ในทุกรุ่นเพื่อความสนุกสนาน
ลดกิจกรรม

ในฐานะที่เป็นจุดข้อมูลอื่นฉันเพิ่งใช้สิ่งนี้ได้สำเร็จกับ Ubuntu 18.04.1 LTS ใหม่เพื่อไม่อนุญาตให้ปิดและรีบูต (แต่อนุญาตให้ไฮเบอร์เนตและหยุดชั่วคราว) โปรดทราบว่าฉันต้องใช้ชื่อ 'login1' เหล่านี้ ที่ฉันยังปิดใช้งาน 'หยุด' และ 'หยุดหลายเซสชัน'; ที่ฉันทำอย่างนั้นเพราะฉันพบการกระทำเหล่านั้นใน /usr/share/polkit-1/actions/org.freedesktop.login1.policy; และในที่สุดนั้นใน gdm3 UI ของ Ubuntu 18.04 ปุ่มในกล่องโต้ตอบการยืนยันจะไม่ถูกซ่อน แต่ก็ไม่มีผลใด ๆ
MarnixKlooster ReinstateMonica

6

พิจารณาติดตั้งมอลลี่ยาม

sudo apt-get install molly-guard

แพคเกจนี้จะป้องกันการปิด / รีบูต / หยุดชั่วคราว / ไฮเบอร์เนตโดยไม่ตั้งใจโดยแจ้งให้คุณป้อนชื่อโฮสต์ของระบบ

อย่างไรก็ตามมันเป็นเรื่องเล็กน้อยที่จะกำหนดค่ามอลลี่การ์ดให้ปิดการใช้งานการปิดระบบ / รีบูต / หยุดชั่วคราว / ไฮเบอร์เนตโดยสมบูรณ์ เพียงสร้างไฟล์ที่ปฏิบัติการได้ที่ /etc/molly-guard/run.d/99-prevent-all ที่มีสิ่งนี้อยู่ในนั้น:

#!/bin/sh
exit 1

หมายเหตุมันป้องกันเฉพาะคำสั่งที่ออกจากบรรทัดคำสั่งปิด / รีบูต / ระงับ / จำศีล / จำศีลที่ออกจาก GUI จะข้ามมัน เพื่อป้องกันการยัง GUI โดยใช้การรีบูตหนึ่งอาจจะใช้กฎ polkit


นี่เป็นวิธีแก้ปัญหาที่ดีสำหรับคอมพิวเตอร์ที่มีผู้ใช้หลายคนซึ่งผู้ดูแลระบบต้องทำงานและป้องกันไม่ให้ผู้ใช้รายอื่นปิดการทำงานชั่วคราว
Alexis Wilke

1
ทำงานได้จากคอนโซล แต่แม้จะมีระบบป้องกันมอลลี่อยู่ (และตั้งค่าเป็น "ถามทุกครั้ง") การปิดเครื่องจะดำเนินต่อโดยไม่ต้องถามเมื่อเริ่มต้นจาก GNOME (3.4)
Jan

ใช่มันไม่ทำงานอีกต่อไป ... ตั้งแต่ 13.10 หรือ 13.04
Alexis Wilke

3

คำเตือน! คำสั่งที่แสดงไว้ที่นี่เป็นอันตรายต่อการใช้งาน อย่าใช้สิ่งเหล่านี้ยกเว้นความเสี่ยงของคุณเอง!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown

4
คุณสามารถยืนยันคำตอบของคุณได้ไหม? ฉันไม่คิดว่าเขาต้องการกำจัดโอกาสในการรีบูตและปิดเครื่อง
viyyer

คนเราจะเปิดใช้งานการจำศีลอีกครั้งด้วยวิธีนี้ได้อย่างไร
Gabriel Fair

ใช้ "chmod + x" ไม่ใช่ "chmod -x"
LanceBaynes

5
คำเตือน! อย่าทำสิ่งนี้คำสั่งเหล่านี้จะเชื่อมโยงกับ/bin/systemctlและจะลบบิตที่เรียกใช้งานได้จากมัน นี่เป็นไฟล์ปฏิบัติการที่สำคัญซึ่งควบคุมservice SERVICE_NAME [stop|start|restart]ได้เช่นกัน ระบบของคุณอาจจะไม่สามารถบู๊ตได้อีกต่อไป (หากคุณสามารถปิดระบบได้เลย)
Daniel F

ฉันรันคำสั่งเหล่านี้บน Ubuntu VPS ปิดการใช้งาน VPS จากโฮสต์การปิดเครื่องล้มเหลว มันฆ่า SSH daemon บังคับหยุดและเริ่มต้นใหม่ SSH สามารถใช้ได้ หลังจากรีสตาร์ท/bin/systemctlถูกตั้งค่าเป็นอ่าน - เขียนเท่านั้น-rw-r--r-- 1 root root
kryo

0

จากคำตอบของ OP คุณสามารถทำได้

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

สิ่งนี้จะเปลี่ยนชื่อ symlink และแทนที่ด้วยไฟล์เปล่า สิ่งนี้จะป้องกันการปิดระบบบรรทัดคำสั่งฉันไม่ทราบว่าคำสั่ง GUI เรียกมันหรือทำสิ่งของตนเองดังนั้นคุณอาจต้องทำคำตอบที่ยอมรับเช่นกัน

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