55

If more than one person is logged in on my computer, Ubuntu requires super user authentication when shutting down the computer. How can I make it so that any user can shutdown the computer without being asked for a password?

4
  • 3
    +1 I suspect entering a password to shutdown annoys many users on a home based PC. Aug 6, 2010 at 14:05
  • 7
    If you shut down a computer while others are logged in, what happens to their open windows? Their open documents? I think anything that doesn't autosave is simply lost. This is worth considering. Feb 16, 2011 at 15:24
  • "Ubuntu requires super user authentication when shutting down the computer", in Ubuntu 11.10 it doesn't ask for superuser authorisation, when shutdown using menu, it only works as logout and brings to Login page, like in this question: askubuntu.com/q/64073/11995, i'm interested how to configure Ubuntu to ask me for a superuser password?
    – Mikl
    Dec 22, 2011 at 21:34
  • 1
    For 14.04 and later: see askubuntu.com/questions/454039/…
    – Takkat
    Jun 11, 2015 at 19:49

9 Answers 9

40

Richard Holloway's answer is not actually the way PolickKit authorisations are meant to be granted. The files installed under /usr/share/polkit-1/actions are not meant to be modified. Instead, you should modify the authorities under /etc/polkit-1/localauthority/50-local.d/.

Here's how you do it for this question:

Create a file named /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla and edit it using sudoedit to look like this:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

Then create another .pkla file in the same directory. Use any name you like ending with .pkla, for example, allow_all_users_to_restart.pkla, and fill it with these contents:

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

References:

5
  • This turned out to be the solution for a very odd problem. On 12.04 after installing PowerBroker (to authenticate to Active Directory), users could not restart or shutdown a computer at all with the GUI (neither lightdm nor indicator-session worked. It would just return to the login screen.) After adding these permissions to policykit, everything worked. Jun 3, 2014 at 17:49
  • man pklocalauthority has the info in Ubuntu
    – Konstigt
    Jun 9, 2014 at 18:09
  • 8
    Note that the names has changed now! This is from 14.04: /usr/share/polkit-1/actions$ grep multiple * org.freedesktop.login1.policy: <action id="org.freedesktop.login1.power-off-multiple-sessions"> org.freedesktop.login1.policy: <action id="org.freedesktop.login1.reboot-multiple-sessions"> org.freedesktop.login1.policy: <action id="org.freedesktop.login1.suspend-multiple-sessions"> org.freedesktop.login1.policy: <action id="org.freedesktop.login1.hibernate-multiple-sessions">
    – Konstigt
    Jun 9, 2014 at 18:16
  • 5
    For 16.04, in addition to @Konstigt's changes, for me the files had to be in /var/lib/polkit-1/localauthority/50-local.d and the additional line ResultAny=yes was necessary for both files. The only warning message I now get is Failed to set wall message, ignoring: Interactive authentication required., but shutting down and restarting works correctly now.
    – sigalor
    Jan 6, 2017 at 14:50
  • 1
    @sigalor's comment worked for me, with the addition that sysctl poweroff -i requires org.freedesktop.login1.power-off-multiple-sessions, so I made a separate file with the same lines except with Action=org.freedesktop.login1.power-off-multiple-sessions Jul 28, 2019 at 16:42
29

You do not need a workaround, just change the policy to allow you to shut down without authenticating as admin for shutdown and reboot when multiple users are logged in.

Edit the file /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy using your favorite text editor. You will need root permissions.

Change the section relating to shutdown when others are logged in from

  <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>

to

  <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>

and the section relating to rebooting when others are logged in from

  <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>

to

  <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>

And that will allow you shutdown and reboot the PC when multiple users are logged in. Whether you want to do that is a different question.

9
16

There is a better way. If you have dbus-send installed, you can shutdown via dbus without the need to escalate to root privileges.

I can't remember the page where the documentation is, but one Archlinux user figured this out.

Shutdown:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Reboot:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

Suspend:

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

Regards.

3
  • Wow that is... hacky. Awesome, yet hacky...
    – jathanism
    Aug 6, 2010 at 18:46
  • 1
    Shutdown and Reboot seems doesn't work anymore in 11.10
    – Mikl
    Dec 18, 2011 at 0:45
  • @Mikl try install hal (sudo apt-get install hal)
    – esamatti
    Jul 15, 2012 at 20:14
12

HAL seems to be now depcrecated and not installed in latest Ubuntu releases.

You must use ConsoleKit and UPower dbus services to manage power state

Shutdown:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Restart:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Suspend:

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

Thanks to Arch Linux forums.

This works for now in Precise and Quantal, but don't know for how long since the Freedesktop focus seems to be shifted from ConsoleKit to systemd. Don't know whether Canonical cares...

10

This works on 14.04. An updated variation of the previous, IMO, correct answer by 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 

Paste this inside:

[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
2
  • 3
    I had to replace ResultActive with ResultAny on Ubuntu 18.04
    – lights0123
    Jun 22, 2020 at 20:01
  • I also had to add blocks for Action=org.freedesktop.login1.power-off, Action=org.freedesktop.login1.reboot, and Action=org.freedesktop.login1.suspend.
    – klugerama
    Mar 13, 2023 at 20:04
1

There is no way to circumvent the prompt for a superuser password when rebooting while other users are logged in short of opening a terminal window and issuing the reboot command as root:

sudo reboot

Even still, if not configured to bypass password prompting for your user account, sudo will also prompt you for your password.

Don't worry, these are GOOD things. Rebooting should be rare and a simple admin password prompt saves accidentally hosing yourself!

1
  • You can also edit visudo and make your user not prompt for password when typing sudo.
    – Da1T
    Mar 4, 2013 at 19:25
0

I believe this is only an issue when doing it through the command line.

If so here is a link that can help with your problem.

1
  • No, there is a popup window that asks for the admin password if there is another user logged in when you shut it down. Using the gui.
    – Isaiah
    Aug 5, 2010 at 16:41
0

Add halt and/or reboot into sudoers file assigned to the group/user you wish to allow to perform this task. That way you can still control who can shutdown, but without giving them full root access to the machine..

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

-1

Apparently, you are able to shut down without root from the GUI because gdm runs as root. Gnome tells gdm to shut down, and gdm does it.

You could do something similar with a script. I'm not sure how handy you are with BASH, but I believe one could write a script that runs as root and, when it receives a certain signal, runs the shutdown command.

Keep in mind that this may pose a security problem.

1
  • I think the problem he's likely to be encountering is the prompt that appears advising that others are still logged in, and requiring a sudo password to enable the shut-down/restart. Aug 5, 2010 at 19:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .