Sudo:当程序作为服务启动时“不允许操作”,但在手动启动时工作。为什么?

Sudo:当程序作为服务启动时“不允许操作”,但在手动启动时工作。为什么?

我需要能够sudo echo 'toto'在自定义 go 程序中以 sudo (例如)的形式执行命令。我已经添加了我的用户,/etc/sudoers当我以我的用户身份登录并手动运行程序时,它工作得很好。

但是,当我从 systemd 服务运行完全相同的程序时,出现以下错误:

sudo: unable to change to root gid: Operation not permitted
sudo: unable to initialize policy plugin

我的服务是基本的:

[Unit]
Description=test sudo

[Service]
User=test
Group=test
ExecStart=/etc/test/test

在我的/etc/sudoers

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root    ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

test        ALL = NOPASSWD: ALL

作为我的用户手动运行该程序与作为服务启动的同一程序有什么区别?

在 Ubuntu 18.04 和 Debian 9.9 上测试

答案1

我终于发现了问题:我的服务CapabilityBoundingSet由于某种原因添加了一个限制sudo操作的列表。

相关内容