次のように構成されたsystemdサービスがあります。
[Unit]
Description=example systemd service unit file.
[Service]
ExecStart=/path/to/program
EnvironmentFile=/etc/program.conf
User=someuser
[Install]
WantedBy=multi-user.target
今問題は、EnvironmentFile
どのユーザーが読んでいるかということです。行動するのかroot
、行動するのかsomeuser
?文書はあまり明確ではありませんが、テキストは次のとおりです。
このディレクティブでリストされたファイルは、プロセスが実行される直前に読み取られます(具体的には、前のデバイス状態のすべてのプロセスが終了した後)。これは、1つのデバイス状態でこれらのファイルを生成し、このオプションを使用して、次のデバイス状態でファイルシステムの変更(バインドマウントなど)が発生する前に、サービスマネージャのファイルシステムから読み取ることができることを意味します。
したがって、バインドマウントをで行う必要があるかもしれません。これは、バインドマウントの前にroot
環境ファイルを読み取るので、環境ファイルをに読み込むと仮定できることを意味しますか?root
試してみることができますが、それについての文書がより明確ではないという事実に少し驚きました。たぶん私が間違った場所を探しているのかもしれません。
答え1
EnvironmentFile
いくつかの実験で読み込まれていることを確認できますroot
。したがって、定義された環境変数は、にEnvironmentFile
属し、root
同様の権限を持っていても0600
実行されるプロセスに設定されますUser=someuser
。