如何给一个Bash脚本授予sudo权限?

14

我有一个bash脚本(chbr.sh),用于在终端中更改我的显示屏亮度,因为我的亮度键不起作用。

`sudo setpci -s 00:02.0 F4.B=30`

现在,每次我运行这个脚本时,它都会要求输入密码,我不喜欢这样。所以,我上网搜索了一下,发现可以编辑/etc/sudoers文件来禁用密码功能。

因此,我编辑了我的sudoers文件,内容如下:

ronnie ALL = (ALL) NOPASSWD: /home/ronnie/chbr.sh

现在当我运行我的脚本./chbr.sh时,它再次要求输入密码。那么,这不是给bash脚本sudo访问权限的正确方式,还是我在做错了什么。

ronnie@ronnie:~$ ls -l chbr.sh
~rwxrwxr-x 1 ronnie ronnie 46 Jul 13 15:59 /home/ronnie/chbr.sh
3个回答

15

你的所有操作都是正确的,但要使用完整路径执行该脚本:

$ sudo /home/ronnie/chbr.sh

有没有办法让我在启动时运行这个脚本? - ronnie
1
如果您在启动时运行它,则不需要使用sudo。根据您的系统,有不同的方法(init.d,upstart等)。 - fragmentedreality
我刚刚安装了Openbox。那么,我可以将sudo /home/ronnie/chbr.sh添加到我的autostart.sh中吗? - ronnie
当然,您可以在启动过程中运行脚本,但是您不需要sudo;启动进程已经以root权限启动。只需将脚本添加到/etc/rc.local即可。 - Igor Chubin
$ touch temp.sh $ sudo temp.sh sudo: temp.sh: command not found Mac OS X 10.8 - Nakilon
1
@Nakilon: chmod +x temp.sh; sudo ./temp.sh -> @Nakilon:chmod +x temp.sh; sudo ./temp.sh - Igor Chubin

3

您运行sudo /home/ronnie/chbr.sh吗?

文件内容如下:

setpci -s 00:02.0 F4.B=30

你可以允许用户 ronnie 通过sudo命令执行 setpci 而无需密码:

ronnie ALL = (ALL) NOPASSWD: /sbin/setpci <-- 或者你的 setpci 文件所在的路径。


2

对于任何偶然进入这个旧论坛的人。你不需要使用sudo来改变亮度。可以使用“light”程序来完成操作,其中

Original Answer

最初的回答

light -A 5

increases brightness with 5 and

light -U 5

decreases the brightness with 5.


在我的情况下,它确实需要sudo。 - m_ocean
轻松地运行你的脚本?好吧,你可以将你的脚本添加到sudoers(关于这个问题有很多其他的帖子),但一定要限制对你的文件的写入/编辑,否则它会变得不安全。 - Jakob Guldberg Aaes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接