カスタム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でのテスト
私はようやく問題を発見しました。私のサービスは、CapabilityBoundingSet
操作を制限している何らかの理由でSudo
のリストを追加していました。