我最近在工作站(不是笔记本电脑)上安装了新的 Fedora 18、LXDE 旋转版。
我想禁用休眠和挂起功能,并将它们从 UI 中的“注销”菜单中删除。
/etc/polkit-1/localauthority/50-local.d/50-disable-suspend.pkla
在 F17 及更早版本中,只需添加包含以下内容的文件即可轻松完成此操作:
[Disable Suspend]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate;org.freedesktop.upower.suspend
ResultAny=no
ResultInactive=no
ResultActive=no
这样做会删除菜单项,只留下注销、重启、关机和取消。
我还找到了修改文件的说明/usr/share/polkit-1/actions/org.freedesktop.upower.policy
,将两个值更改为:
<allow_active>no</allow_active>
这两种方法都不适用于 F-18。
对于 F17 及更早版本,后一种方法的问题是,当 upower 更新时文件可能会被覆盖,但即使这样也是可以接受的。
删除pm-utils
似乎也是理想的,但我无法删除,pm-utils
因为libvirt
间接依赖于它。
有人知道这一点吗?
答案1
根据手册页:
polkit 本地权限不再存在。现有配置文件仍然有效;请参阅 pkla-admin-identities(8) 和 pkla-check-authorization(8) 了解配置格式的描述。
我很确定“现有的配置文件受到尊重”是一个谎言。
这Polkit 的 Arch Linux 维基页面显示一种新方法:
以下规则禁用所有用户的挂起和休眠功能。
/etc/polkit-1/rules.d/10-disable-suspend.rules
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.login1.suspend" || action.id == "org.freedesktop.login1.suspend-multiple-sessions" || action.id == "org.freedesktop.login1.hibernate" || action.id == "org.freedesktop.login1.hibernate-multiple-sessions") { return polkit.Result.NO; } });
该规则在我 Fedora 19 上有效。
答案2
对于 F17 及更早版本,后一种方法的问题是,当 upower 更新时文件可能会被覆盖,但即使这样也是可以接受的。
您可以通过设置“i”属性(chattr +i /path/to/file)来保护这些文件不被覆盖,当然是以 root 身份执行此操作。