允许“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
参考文献:
-
输入命令:
sudo visudo
然后输入密码。
-
您可以在终端中看到以下行
%sudo ALL=(ALL:ALL) ALL
编辑%sudo行
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
-
使用Ctrl X保存修改。