systemd - ユーザーは標準出力を設定できません:権限が拒否されました。

systemd - ユーザーは標準出力を設定できません:権限が拒否されました。

ファイルにsystemd(v241)用にこのデバイスを作成しました。/etc/systemd/user/foo.service

[Unit]
Description=Foo
After=mysqld.service

[Service]
Type=simple
Restart=always
RestartSec=1
StandardOutput=append:/home/pioz/foo/logs/backend.log
StandardError=append:/home/pioz/foo/logs/backend.log
WorkingDirectory=/home/pioz/foo
ExecStart=/home/pioz/foo/backend/current/foo

[Install]
WantedBy=multi-user.target

systemd --user start foo(使用しない)でサービスを開始すると、sudo次のエラーが発生します。

foo.service: Failed to set up standard output: Permission denied

StandardOutputオプションとユニットファイルへのStandardErrorコメントをしようとすると、サービスが正しく開始されます

piozユーザー(通常のLinuxユーザー)としてサービスを実行します。ファイルは/home/pioz/foo/logs/backend.logユーザーpiozが書き込むことができ、実際にnanoを使用してファイルを編集できます。

この権限拒否エラーを解決するには?

答え1

一般ユーザーとしてサービスを実行するには、.serviceファイルを適切な$HOME/.config/systemd/userディレクトリに移動します(もちろん、権限を確認してください)。次に、次のようにサービスを実行します。

systemctl --user start foo.service

関連情報