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

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

我已经更改了ctrl-alt-l快捷方式,因此系统不仅仅锁定屏幕,而且进入挂起状态。

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

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

答案1

打开终端并执行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。

答案2

通常情况下SUID 位是,但在您的情况下,我可能会pm-suspend-hybrid用不需要 root 权限的不同调用来替换(毕竟,在暂停 Unity 时您不需要输入密码)。

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

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

参考:

答案3

  1. 输入命令:

    sudo visudo
    

    然后输入密码。

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

    %sudo   ALL=(ALL:ALL) ALL
    

    编辑 %sudo 行

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

相关内容