如何在后台执行需要 sudo 权限的脚本?

如何在后台执行需要 sudo 权限的脚本?

由于我的华硕 VivoBook 键盘快捷键无法更改键盘闪电级别,因此我制作了一个 bash 脚本并将其配置为在按下组合键时激活。这是我的脚本:

level=$(cat /sys/class/leds/asus\:\:kbd_backlight/brightness)

[[ $level = 3 ]] && echo 0 | sudo tee /sys/class/leds/asus\:\:kbd_backlight/brightness || echo $(($level+1)) | sudo tee /sys/class/leds/asus\:\:kbd_backlight/brightness

当我在终端上运行脚本时,它正在运行,但当我按下按键时,它却不运行,我想是因为 sudo 权限需要密码。有什么方法可以更改脚本权限,以便当我在后台运行它时它不会要求输入密码?

答案1

可能有几种选择,但我建议您选择三种:

一种方法是使用sudo -i而不是sudo 该命令在类似于用户登录时收到的环境中运行。

另一种方法是使用,sudo -v而不是sudo使用缓存的凭据。

第三个选项是配置sudo为从不要求您输入密码。该visudo命令将编辑sudoers命令使用的文件sudo。要更改允许哪些用户和组运行 sudo,请运行 visudo

sudo visudo

在文件底部添加以下行:

<username> ALL=(ALL) NOPASSWD: ALL

用您的用户名替换。例如,我将添加行

tejas ALL=(ALL) NOPASSWD: ALL 

添加此行后,您可以在终端窗口中输入 sudo,而无需输入密码。

请注意,此解决方案仅适用于sudo在终端中使用该命令。

要限制无需密码提示即可执行脚本的位置,请使用以下命令:

<username> ALL=NOPASSWD:/bin/bash /path/to/script/*

严格注意:仅对您可以信任的脚本使用此解决方案。

相关内容