如何禁用shutdown / reboot / suspend / hibernate?

我有一台带GNOME的Ubuntu 10.04 LTS台式电脑。

如何在GNOME甚至root中完全禁用reboot / shutdown / suspend / hibernate函数? 因此root发出了“rebo​​ot”或“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