How to enable shutdown and reboot for a normal user in Debian Jessie

Although I use Windows as well and our blog has primarily been about Windows so far, I also use Linux regularly. I just installed Debian Jessie on my work PC and noticed that none of the shutdown actions work from the GUI. The Desktop Environment I've installed is Mate, the fork of the good old Gnome 2. Every time I try to execute some shutdown action, the system requests for the root password. In this article, I would like to share with you an easy way to get it working and get rid of the root password request.


Just follow these instructions:

  1. Open your favorite terminal and switch to the root session.
  2. Make sure you have installed the cksession and policykit packages. If not, install them (for Mate DE, I will install a policykit agent too):
    # apt-get install policykit-1 mate-polkit consolekit
  3. After you get these packages installed, you need to correct the policies to allow normal users to shutdown your PC. This can be done with simple file editing.
    Again, from the root terminal you should edit the following text file (I prefer mcedit as my text editor):

    mcedit /usr/share/polkit-1/actions/org.freedesktop.login1.policy

    It is a regular XML file.
    Find the following line:

     <action id="org.freedesktop.login1.power-off">

    Correct the sections inside the action block to make it look like this:

    <action id="org.freedesktop.login1.power-off"> 
                    <description>Power off the system</description> 
                    <message>Authentication is required for powering off the system.</message> 
                    <defaults> 
                            <allow_any>yes</allow_any> 
                            <allow_inactive>yes</allow_inactive> 
                            <allow_active>yes</allow_active> 
                    </defaults> 
            </action>
    
  4. Edit the defaults block similar to the example above in the following sections:
    <action id="org.freedesktop.login1.power-off-multiple-sessions"> 
    <action id="org.freedesktop.login1.reboot"> 
    <action id="org.freedesktop.login1.reboot-multiple-sessions"> 
    <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">

    debian policy

That's it. Now simply reboot your OS (in my case, it started working even without rebooting). The power actions will now work without gksu/elevation requests.

4 thoughts on “How to enable shutdown and reboot for a normal user in Debian Jessie

  1. mewmew

    This covers GUI shutdown actions only, correct? How about console-initiated shutdown from a user?

    Thanks for the article,
    regards,
    mewmew

    Reply
    1. Sergey Tkachenko Post author

      You are right. For console, I did the following:
      # apt-get install sudo
      # export EDTIOR=/usr/bin/mcedit
      # visudo

      In the sudoers file, I defined the wheel group and allowed poweroff/systemctl things.
      %wheel ALL= NOPASSWD: /sbin/halt, /sbin/poweroff, /sbin/reboot
      %wheel ALL= NOPASSWD: /usr/bin/systemctl poweroff, /usr/bin/systemctl reboot

      To allow yourself to run these commands do the following:
      # groupadd wheel
      # usermod -aG wheel your_login_here

      Now, edit ~/.bashrc:
      $ mcedit ~/.bashrc
      Add the following lines:
      alias poweroff='sudo /sbin/poweroff'
      alias reboot='sudo /sbin/reboot'

      or
      alias poweroff='sudo systemctl poweroff'
      alias reboot='sudo systemctl reboot'

      Also, (I not sure), it is quite possible that systemctl can allow you to shutdown/reboot PC without elevation.

      Reply
  2. MDJ

    A personal record! I‘ve just finished scrolling 50 pages down your blog :D!

    Reply
    1. Sergey Tkachenko Post author

      Cool :)

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.