作为服务运行时 Sudo 失败

作为服务运行时 Sudo 失败

我有一个以普通用户身份运行的程序,但有时需要运行需要 root 权限的命令。因此,我编写了一个 shell 脚本,并授予用户使用 sudo 运行该脚本的权限。

当我从 shell 运行程序时,脚本执行成功,但作为服务运行时失败。Sudo 退出并显示以下错误:

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with
the 'nosuid' option set or an NFS file system without root privileges?0

是服务的单元文件,是脚本,sudoers我已经添加了

user ALL = (root) NOPASSWD: /path/to/script

我不知道为什么。Sudo 工作正常,并且 的权限/usr/bin/usr/bin/sudo正确。

答案1

您已NoNewPrivileges=true在单元文件中设置

来自文档:

如果为 true,则确保服务进程及其所有子进程永远无法获得新权限。此选项比相应的安全位标志(见上文)更强大,因为它还禁止任何类型的 UID 更改。这是确保进程及其子进程永远无法再次提升权限的最简单、最有效的方法。

因此,即使可执行文件设置了 suid 位,sudo 也不会获得 root 权限

相关内容