5

I've changed my ctrl-alt-l shortcut so instead of just locking the screen, the system goes into suspend.

(for reference, the command is gksudo pm-suspend-hybrid)

as you can see, the program needs to be run as root, so I added the gksudo. I'd really like to get the system to suspend without having to enter the password. Is there any way I can do this?

jackweirdy
  • 3,440

3 Answers3

10

Open up a terminal and execute sudo visudo.

Then you can edit the sudoers file where you can specify who can execute which command as root with and without password. At the end of the file you paste either this line

nonprivilegeduser ALL=NOPASSWD:/usr/sbin/pm-suspend-hybrid

for every user to be able to execute that command as root without password, or

Your_Username ALL=NOPASSWD:/usr/sbin/pm-suspend-hybrid

for only your user to be able to do this (of course you have to adjust it for your user). Then you save the file (should be Ctrl+O) and exit the program (Ctrl+X).

At last, you have to edit your command to read sudo pm-suspend-hybrid instead of gksudo pm-suspend-hybrid.

NOTE: There should also be the possibility to do this with dbus (doesn't require sudoers editing) but this solution has the advantage that it works with every UI.

jplatte
  • 1,280
1

Normally that's what the SUID bit is for, but in your case I would probably replace pm-suspend-hybrid with different invocation which doesn't need root permissions (you don't need to enter password when suspending Unity, after all).

Just use the following command instead (without sudo):

dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend

References:

jnv
  • 3,314
-2
  1. Type the command:

    sudo visudo
    

    and then enter the password.

  2. You can see the below line in terminal

    %sudo   ALL=(ALL:ALL) ALL
    

    edit the %sudo line with

    %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
    
  3. Save the modifications using CtrlX.

muru
  • 197,895
  • 55
  • 485
  • 740