如何禁用shutdown / reboot / suspend / hibernate?
我有一台带GNOME的Ubuntu 10.04 LTS台式电脑。
如何在GNOME甚至root中完全禁用reboot / shutdown / suspend / hibernate函数? 因此root发出了“reboot”或“pm-suspend”命令,它什么也没做,机器继续运行。 如何完全禁用这些基本“function”?
用户对这些操作的访问权限由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
,这只会是一个小小的不便。 根据定义,根据传统的UNIX自主访问控制系统, root
是一个不受限制的帐户。 如果你不能信任那些你已经获得完全root
权限的用户,那么你遇到的问题比他们关闭系统要大。
请注意,在以后的Ubuntu版本中,有人决定破坏兼容性。 如在14.04中如何禁用lightdm的关机/重启一样? 该动作似乎已更改为“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
另外请注意,此方法仅阻止从GUI发出的reboot / etc命令。 要阻止来自命令行的重启/ etc命令,可以使用molly-guard – 如所有用户的禁用关闭命令,甚至根本结果所述?
考虑安装molly-guard 。
sudo apt-get install molly-guard
此程序包将通过交互式提示您输入系统的主机名来防止意外关闭/重新启动/挂起/hibernate。
但是,配置molly-guard以完全禁用shutdown / reboot / suspend / hibernate是微不足道的。 只需在/etc/molly-guard/run.d/99-prevent-all中创建一个可执行文件,其中包含以下内容:
#!/bin/sh exit 1
请注意,它仅保护命令行发出的命令,从GUI发出的shutdown / reboot / suspend / hibernate绕过它。 要使用重新启动来阻止GUI,可以使用polkit规则 。
警告! 此处列出的命令使用起来很危险 。 除非您自担风险,否则请勿使用这些!
chmod -x /usr/sbin/pm-suspend chmod -x /sbin/reboot chmod -x /sbin/shutdown