我有一台装有GNOME的Ubuntu 10.04 LTS台式机。
如何完全禁用GNOME中的重启/关机/挂起/休眠功能,甚至连root也禁用?这样,根发出“ reboot”或“ pm-suspend”命令后,它什么也不做,机器继续运行。如何完全禁用这些基本“功能”?
我有一台装有GNOME的Ubuntu 10.04 LTS台式机。
如何完全禁用GNOME中的重启/关机/挂起/休眠功能,甚至连root也禁用?这样,根发出“ reboot”或“ pm-suspend”命令后,它什么也不做,机器继续运行。如何完全禁用这些基本“功能”?
Answers:
用户对这些操作的访问由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版本中,有人决定破坏兼容性。如在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(如对所有用户(甚至包括root用户)禁用shutdown命令中所述)的后果?
考虑安装molly-guard。
sudo apt-get install molly-guard
该软件包将以交互方式提示您输入系统的主机名,以防止意外的关机/重新引导/挂起/休眠。
但是,配置molly-guard完全禁用关闭/重启/挂起/休眠是微不足道的。只需在/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
/bin/systemctl
并且将从其中删除可执行位。这是一个重要的可执行文件,它也可以控制service SERVICE_NAME [stop|start|restart]
。您的系统可能不再启动(如果您可以使其完全关闭)。
/bin/systemctl
设置为只读-rw-r--r-- 1 root root
shutdown
,并pm-suspend
从/sbin/
和/bin/