如何禁用关机/重启/挂起/休眠?

Lan*_*nes 15 shutdown

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

如何在 GNOME 甚至 root 中完全禁用重启/关机/挂起/休眠功能?所以 root 发出“rebo​​ot”或“pm-suspend”命令它什么都不做,机器继续运行。如何完全禁用这些基本“功能”?

Jam*_*dge 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
Run Code Online (Sandbox Code Playgroud)

这应该会阻止这些操作完成。通过运行 可以找到有关这些策略文件的更多信息man pklocalauthority

如果您试图限制root,这只会带来轻微的不便。顾名思义,root是根据传统的UNIX 任意访问控制系统的不受限制的帐户。如果您不能信任已授予完全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
Run Code Online (Sandbox Code Playgroud)

另外请注意,此方法仅阻止从 GUI 发出的重新启动/等命令。要从命令行阻止重启/等命令,可以使用 molly-guard - 如禁用所有用户的关机命令中所述,甚至是 root - 结果?

  • 停止使用 Ubuntu 13.10 在这里工作!!! (3认同)

Dus*_*and 6

考虑安装molly-guard

sudo apt-get install molly-guard
Run Code Online (Sandbox Code Playgroud)

该软件包将通过交互式提示您输入系统的主机名来防止意外关机/重启/挂起/休眠。

然而,配置 molly-guard 以完全禁用关机/重启/挂起/休眠是微不足道的。只需在 /etc/molly-guard/run.d/99-prevent-all 创建一个可执行文件,其中包含以下内容:

#!/bin/sh
exit 1
Run Code Online (Sandbox Code Playgroud)

请注意,它仅针对从命令行发出的命令提供保护,从 GUI 发出的关闭/重启/挂起/休眠会绕过它。要使用重新启动也阻止 GUI,可以使用polkit 规则