システムサービスで/etc/environmentが機能しない理由

システムサービスで/etc/environmentが機能しない理由

PATHinを設定し、任意の/etc/environmentユーザーとしてログインすると機能しますが、どのユーザーでもサービスを実行してもinは尊重されません/etc/environment

ベストアンサー1

ユーザーがログインするとPAMライブラリが呼び出され、通常はPAM構成が呼び出され、ユーザーのpam_env.so環境を設定します。この設定には読み取りが含まれます/etc/environment

既存のSysVinitサービス起動スクリプトでは、root以外のsuユーザーとしてサービスを開始できます。通常のユーザーログインと同様に、suPAMライブラリも呼び出されるため、読み取ることができます。/etc/environment

しかし、systemdPAMライブラリがまったく存在しない組み込みシステムでも動作するように設計されています。したがって、systemd サービスが root ではなくユーザーとして実行されるように構成されている場合、systemd外部ライブラリに依存せずに環境初期化が処理されます。

よりENVIRONMENTsystemd.exec(5)マンページ段落サービスファイルの設定を使用してサービス環境を調整できます。提供されるデフォルト値はほとんどないため、systemdサービスを初期化するために必要な事項を指定する必要があります(通常は良い方法です)。

たとえば、簡単に追加できます。

EnvironmentFile=/etc/environment

サービス定義を入力してください。

PATHただし、サービスが他のいくつかのタスクを開始する必要がある場合は、サービスパス名に関連していない理由で変更されることに頼るよりも、一部の構成ファイルで絶対パス名で明示的に指定する方が安全です。不快な驚き。

おすすめ記事