![Sudo:当程序作为服务启动时“不允许操作”,但在手动启动时工作。为什么?](https://linux22.com/image/151354/Sudo%EF%BC%9A%E5%BD%93%E7%A8%8B%E5%BA%8F%E4%BD%9C%E4%B8%BA%E6%9C%8D%E5%8A%A1%E5%90%AF%E5%8A%A8%E6%97%B6%E2%80%9C%E4%B8%8D%E5%85%81%E8%AE%B8%E6%93%8D%E4%BD%9C%E2%80%9D%EF%BC%8C%E4%BD%86%E5%9C%A8%E6%89%8B%E5%8A%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E5%B7%A5%E4%BD%9C%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F%20.png)
我需要能够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
操作的列表。