我有一台带有 GNOME 的 Ubuntu 10.04 LTS 台式机。
如何在 GNOME 甚至 root 中完全禁用重启/关机/挂起/休眠功能?所以 root 发出“reboot”或“pm-suspend”命令它什么都不做,机器继续运行。如何完全禁用这些基本“功能”?
Jam*_*dge 15
用户对这些操作的访问由 polkit 控制。具体而言,它们对应于以下操作:
org.freedesktop.consolekit.system.stoporg.freedesktop.consolekit.system.restartorg.freedesktop.upower.suspendorg.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 - 结果?
考虑安装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 规则。