XFCE - 以 root 身份运行快捷方式,无需密码

XFCE - 以 root 身份运行快捷方式,无需密码

我使用的 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才能运行此包装器。当他们这样做时,sin 将意味着他们的有效用户 ID 将为 0。

如果您正在执行此操作是一个共享环境,其中许多用户属于同一组,则可以仅为该文件创建一个特殊组,并仅将您的用户添加到该组中。例如,也许您使用 LDAP 登录,并且所有用户都属于“域用户”组。您可以创建一个名为“JulieOnly”的本地组,然后仅将您的用户添加到该组中。然后你将chown包装器发送到root:JulieOnly.

相关内容