我使用的 XFCE 不支持笔记本电脑上的键盘背光控制键。
我找到了一个可以控制它的脚本(/etc/acpi/asus-keyboard-backlight.sh
),但我需要以 root 身份运行它。
我不想每次更改键盘背光时都输入 root 密码。
如何配置键盘快捷键,使其以 root 身份运行而不询问我的密码?
答案1
您可以sudo
在运行添加后visudo
使用, 运行它YOURUSER ALL=(ALL) NOPASSWD:ALL
,这将停止sudo
提示用户输入密码。
答案2
编写一个调用 Bash 来运行脚本的小 C 程序。您编译该程序并对其进行一些修改suid
,以便它将以 root 身份运行 Bash(以及脚本)。
这是所述包装器的示例:
#include <unistd.h>
int main(void) {
const char *bin = "/bin/bash";
const chrar *script = "/tmp/myscrypt.sh";
char *const argv[] = {bin, script, NULL};
char *const env[] = {"SHELL=/bin/bash",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"HOME=/root", "LOGNAME=root", "_=/usr/bin/env", NULL};
execve(bin, argv, env);
return 0;
}
请注意,这会运行脚本作为根用户,包括相信根是/root
。如果您不想这样做,请修改包装器。
所以,一旦你编译了它,你剩下的就是给它一suid
点点。
gcc wrapper.c -o wrapper
chown root wrapper
chmod u+wrxs,g+rx,o-wrx wrapper
如果您ls -l
这样做,权限将如下所示:
-rwsr-x--- 1 root group [snip] wrapper
这意味着只有组中的用户group
才能运行此包装器。当他们这样做时,s
in 将意味着他们的有效用户 ID 将为 0。
如果您正在执行此操作是一个共享环境,其中许多用户属于同一组,则可以仅为该文件创建一个特殊组,并仅将您的用户添加到该组中。例如,也许您使用 LDAP 登录,并且所有用户都属于“域用户”组。您可以创建一个名为“JulieOnly”的本地组,然后仅将您的用户添加到该组中。然后你将chown
包装器发送到root:JulieOnly
.