授予用户启动 systemd 服务的权限

授予用户启动 systemd 服务的权限

我想允许所有用户(或者可能只有其中一些,但所有用户都已经很好了)能够启动/停止特定的 systemd 服务。

我找到了以下解决方案

#include <stdlib.h>
#include <unistd.h>

int main(void)
{
    execl("/usr/bin/systemctl", "systemctl", "start", "myService", NULL);
    return(EXIT_SUCCESS);
}

gcc allow.c -o allow
chown root:root allow
chmod 4755 allow

这似乎可以解决问题,但我想知道这在安全方面是否可以接受,或者是否还有其他选择(我正在使用 CentOS 7)

更新:这是不好的做法。“sudo”在这里是你最好的朋友,因为该命令具有特定的非变量参数,它可以在 sudoers 文件中允许。

答案1

execl保留环境变量。用户可以使用环境变量来更改 加载的库systemctl,这可能会导致 执行任意代码systemctl

答案2

由于该命令具有非变量的特定参数,因此它可以适合 sudoers 文件。

所以答案是:man sudo

相关内容