如果有多个人登录我的电脑,Ubuntu 在关闭电脑时需要超级用户身份验证。我怎样才能让任何用户都可以关闭电脑而无需输入密码?
答案1
Richard Holloway 的回答实际上,这并不是授予 PolickKit 授权的方式。安装在 下的文件/usr/share/polkit-1/actions
不应被修改。相反,您应该修改 下的权限/etc/polkit-1/localauthority/50-local.d/
。
回答这个问题的方法如下:
创建一个名为的文件/etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla
并使用其编辑它,sudoedit
如下所示:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
.pkla
然后在同一目录中创建另一个文件。使用你喜欢的以 结尾的任何名称.pkla
,例如 ,allow_all_users_to_restart.pkla
并在其中填充以下内容:
[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes
参考:
答案2
您不需要解决方法,只需更改策略以允许您在多个用户登录时无需以管理员身份进行身份验证即可关机并重新启动。
使用您喜欢的文本编辑器编辑文件 /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy。您需要 root 权限。
更改与其他人登录时关机相关的部分
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
<description>Stop the system when multiple users are logged in</description>
<message>System policy prevents stopping the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
到
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
<description>Stop the system when multiple users are logged in</description>
<message>System policy prevents stopping the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
以及与其他人登录时重新启动相关的部分
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
<description>Restart the system when multiple users are logged in</description>
<message>System policy prevents restarting the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
到
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
<description>Restart the system when multiple users are logged in</description>
<message>System policy prevents restarting the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
这样,当多个用户登录时,您就可以关闭并重新启动 PC。但是否要这样做则是另一个问题。
答案3
有一个更好的方法。如果你安装了 dbus-send,你可以通过 dbus 关闭无需升级到 root 权限。
我不记得文档在哪个页面,但有一位 Archlinux 用户弄明白了这一点。
关闭:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
重启:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot
暂停:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1
休眠:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
问候。
答案4
这适用于 14.04。这是之前版本的更新版本,在我看来,是正确的Flimm 的回答。
sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla
将其粘贴到里面:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes
[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes
[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes
[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes
[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes
[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes