如何关机不需要管理员密码?

如果我的计算机上登录了多个人,则在关闭计算机时,Ubuntu需要超级用户身份validation。 我怎样才能让任何用户在不被要求输入密码的情况下关闭计算机?

您不需要解决方法,只需更改策略以允许您关闭而无需作为管理员进行身份validation以关闭并在多个用户登录时重新启动。

使用您喜欢的文本编辑器编辑文件/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy。 您将需要root权限。

在其他人登录时更改与关机相关的部分

 Stop the system when multiple users are logged in System policy prevents stopping the system when other users are logged in  no auth_admin_keep   

   Stop the system when multiple users are logged in System policy prevents stopping the system when other users are logged in  no yes   

和其他人登录时重启的部分

   Restart the system when multiple users are logged in System policy prevents restarting the system when other users are logged in  no auth_admin_keep   

   Restart the system when multiple users are logged in System policy prevents restarting the system when other users are logged in  no yes   

这将允许您在多个用户登录时关闭并重新启动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 

参考文献:

  • polkit参考手册:pklocalauthority
  • PolicyKit上的ArchWiki页面

有一个更好的办法。 如果安装了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 

hibernate:

 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 

hibernate:

 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 

重新启动时无法绕过超级用户密码的提示,而其他用户只需打开终端窗口并以root身份发出reboot命令就会记录:

 sudo reboot 

即便如此,如果没有配置为绕过用户帐户的密码提示, sudo也会提示您输入密码。

别担心,这些都是好东西。 重新启动应该是罕见的,一个简单的管理员密码提示可以节省意外的自己!

我相信这只是通过命令行进行的一个问题。

如果是这样,这里有一个可以帮助解决问题的链接 。

添加暂停和/或重新启动到分配给您希望允许执行此任务的组/用户的sudoers文件。 这样你仍然可以控制谁可以关闭,但没有给他们完全root权限访问机器..

http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/

显然,您可以在没有root的情况下从GUI关闭,因为gdm以root身份运行。 Gnome告诉gdm要关闭,而gdm会这样做。

你可以用脚本做类似的事情。 我不确定你对BASH有多么方便,但我相信你可以编写一个以root身份运行的脚本,当它收到某个信号时,会运行shutdown命令。

请记住,这可能会带来安全问题。

Interesting Posts