systemdでのユーザーとグループの分離
systemdサービスでUser=、Group=、DynamicUser=、SupplementaryGroups=を設定します。専用サービスユーザーの作成方法とサービス間の分離方法について学びます。
Operational Guides
詳細な説明
非rootユーザーでサービスを実行する
rootでサービスを実行することはセキュリティリスクです。systemdは最小限の権限で専用ユーザーとしてサービスを実行することを容易にします。
基本的なユーザー/グループ設定
[Service]
User=myapp
Group=myapp
ユーザーとグループはシステム上に存在する必要があります:
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
DynamicUser — 一時的なユーザー
DynamicUser=yesはサービスが実行中の間だけ存在する一時的なユーザーを作成します:
[Service]
DynamicUser=yes
StateDirectory=myapp
CacheDirectory=myapp
systemd管理ディレクトリ
| ディレクティブ | 作成先 | 典型的な用途 |
|---|---|---|
StateDirectory= |
/var/lib/{name}/ |
永続データ |
CacheDirectory= |
/var/cache/{name}/ |
キャッシュデータ |
LogsDirectory= |
/var/log/{name}/ |
ログファイル |
RuntimeDirectory= |
/run/{name}/ |
ソケット、PIDファイル |
ユースケース
同じサーバー上の複数のサービスに適切なプロセス分離を設定し、各サービスが専用ユーザーとして自身のデータディレクトリと必要なシステムリソースにのみアクセスできるようにする場合に使用します。