次の定義でsystemdサービスを使用する際に問題があります。
[Unit]
Description=Test
After=network.target
[Service]
WorkingDirectory=/home/testuser/testdir
User=testuser
Group=testuser
ProtectHome=true
...
数日前、パッケージを更新するまでは正常に動作しました。ただし、ProtectHomeがtrueに設定されていると、サービスが実行されているユーザーのホームディレクトリにアクセスしようとすると、サービス権限が拒否されます。
意図的なものですか(たとえば、ProtectHomeはユーザーのホームディレクトリを含むすべてのホームディレクトリへのアクセスを拒否します)。それでは、家の下の特定のディレクトリをホワイトリストに追加する方法はありますか? ReadWriteDirectoriesに追加しても機能しないようです。それとも、サービスディレクトリを家の外に移動する必要がありますか?
ご協力ありがとうございます
飛んでいる鳥
答え1
~からsystemd.exec のマニュアルページ議論するProtectHome=
:
trueの場合、/home/、/root、および/run/userディレクトリは、このユニットを呼び出すプロセスにアクセスできず、空になります。
サービスがディレクトリを所有しているユーザーとして実行されていても、サービスがホームディレクトリにアクセスできないことを期待する必要があります。
私はこの動作が最近変わったと信じていないので、以前はなぜ動作したのかわかりません。設定を追加しましたが、デーモンが再ロードされませんでしたか?