web-dev-qa-db-ja.com

Sudo:サービスとしてプログラムが開始されると「操作は許可されません」が、手動で開始すると機能します。どうして?

カスタムgoプログラムでコマンドをSudo(例:Sudo echo 'toto')として実行できるようにする必要があります。ユーザーを/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でのテスト

2
Quentin

私はようやく問題を発見しました。私のサービスは、CapabilityBoundingSet操作を制限している何らかの理由でSudoのリストを追加していました。

3
Quentin