允许“root”程序在没有权限的情况下运行

我已经改变了我的ctrl-alt-l快捷方式,而不是只是锁定屏幕,系统进入暂停状态。

(作为参考,命令是gksudo pm-suspend-hybrid

如你所见,程序需要以root身份运行,所以我添加了gksudo 。 我真的想让系统暂停而无需输入密码。 有什么方法可以做到这一点吗?

打开终端并执行sudo visudo

然后,您可以编辑sudoers文件,您可以在其中指定谁可以使用和不使用密码以root身份执行哪个命令。 在文件的末尾,您粘贴此行

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

为每个用户能够以root身份执行该命令而无需密码,或者

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

只有你的用户才能这样做(当然你必须为你的用户调整它)。 然后保存文件(应该是Ctrl + O)并退出程序(Ctrl + X)。

最后,你必须编辑你的命令来读取sudo pm-suspend-hybrid而不是gksudo pm-suspend-hybrid

注意:还应该有可能使用dbus执行此操作(不需要sudoers编辑),但此解决方案的优点是它适用于每个UI。

通常这就是SUID位的用途,但在你的情况下,我可能用不同的调用替换pm-suspend-hybrid ,这不需要root权限(毕竟你不需要在挂起Unity时输入密码)。

只需使用以下命令(不使用sudo ):

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

参考文献:

  1. 输入命令:

     sudo visudo 

    然后输入密码。

  2. 您可以在终端中看到以下行

     %sudo ALL=(ALL:ALL) ALL 

    编辑%sudo行

     %sudo ALL=(ALL:ALL) NOPASSWD:ALL 
  3. 使用Ctrl X保存修改。