如果我的计算机上登录了多个人,则在关闭计算机时,Ubuntu需要超级用户身份验证。我该如何做到这一点,以便任何用户都可以在不要求输入密码的情况下关闭计算机?
如果我的计算机上登录了多个人,则在关闭计算机时,Ubuntu需要超级用户身份验证。我该如何做到这一点,以便任何用户都可以在不要求输入密码的情况下关闭计算机?
Answers:
您不需要解决方法,只需更改策略即可关闭,而无需以管理员身份进行身份验证即可关闭,并在多个用户登录时重新启动。
使用您喜欢的文本编辑器编辑文件/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。是否要这样做是另一个问题。
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
/var/lib/polkit-1/localauthority/50-local.d
并且ResultAny=yes
两个文件都需要附加一行。我现在收到的唯一警告消息是Failed to set wall message, ignoring: Interactive authentication required.
,但是关闭并重新启动现在可以正常工作。
sysctl poweroff -i
要求org.freedesktop.login1.power-off-multiple-sessions
,所以我做了同样的思路一个单独的文件除外Action=org.freedesktop.login1.power-off-multiple-sessions
有个更好的方法。如果已安装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
问候。
HAL现在似乎已被弃用,并且未在最新的Ubuntu版本中安装。
您必须使用ConsoleKit和UPower dbus服务来管理电源状态
关掉:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
重新开始:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
暂停:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
休眠:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
感谢Arch Linux 论坛。
目前,这在Precise和Quantal中有效,但是不知道Freedesktop的焦点似乎已从ConsoleKit转移到systemd了多长时间。不知道Canonical是否在乎...
这适用于14.04。Flimm先前IMO正确答案的更新版本。
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
在重启其他用户而没有打开终端窗口并reboot
以root身份发出命令的情况下重新登录时,无法避免超级用户密码提示。
sudo reboot
即便如此,如果未配置为绕过用户帐户的密码提示,sudo
也会提示您输入密码。
别担心,这些都是好东西。重新启动应该很少,并且简单的管理员密码提示可以避免意外地把自己弄丢!
将暂停和/或重新启动添加到分配给您希望允许执行此任务的组/用户的sudoers文件中。这样,您仍然可以控制哪些人可以关闭,但无需授予他们对计算机的完全root访问权限。
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/