Linuxのsystemd-logind(logind)は、ユーザーのログイン管理やセッション制御、電源管理・マルチシート管理などを一手に担うsystemdの重要コンポーネントです。本記事ではlogindの仕組みと役割、設定方法、主要オプション、そしてloginctlコマンドによる制御方法までを総合的に解説します。
systemd-logindの概要
systemd-logind は /usr/lib/systemd/systemd-logind として動作し、ユーザーとセッションを識別・追跡し、各ユーザーに対して systemd の slice と scope 単位でリソースを割り当てます。これにより、プロセスをユーザー単位・セッション単位で効率的に制御できます。
主な機能は以下の通りです。
- ユーザーとセッションの追跡、アイドル状態の監視
- systemdの
user.slice以下にユーザー用cgroupを生成 - セッションIDの生成・管理(audit ID再利用含む)
- polkitを介した電源操作(シャットダウン、スリープ等)の認可制御
- スリープ・シャットダウン抑止ロジック実装(Inhibitor Locks)
- 電源・スリープキー入力の処理
- マルチシート管理(複数端末を複数ユーザーに割り当て)
- デバイスアクセス権限の制御
- gettyや /run/user/UID ディレクトリの管理
- 壁メッセージ(
wallコマンド)送信サポート
logindは、PAMモジュールpam_systemdを通じてユーザーセッション登録を自動で行います。また、D-Bus経由で外部アプリケーションやGUIログインマネージャとの統合も可能です。
logind.confの設定項目一覧
logindの動作設定は /etc/systemd/logind.conf で制御します。コメントアウトされている行はデフォルト値であり、必要に応じて明示的に変更して再読み込みします。
sudo systemctl restart systemd-logind.service| オプション名 | 説明 |
|---|---|
KillUserProcesses= | セッション終了時にプロセスも終了させる(yes/no) |
KillExcludeUsers= | 終了除外対象ユーザー(スペース区切り) |
KillOnlyUsers= | 強制終了対象ユーザーを限定指定 |
HandlePowerKey= | 電源ボタン押下時の動作設定(poweroff, suspend, ignoreなど) |
HandleLidSwitch= | ノートPCの蓋を閉じた時の挙動(suspend, lock, ignore) |
HandleSuspendKey= | サスペンドキー押下時の動作指定 |
HandleHibernateKey= | ハイバネートキー押下時の動作指定 |
IdleAction= | 一定時間アイドル時の動作設定(suspend, poweroffなど) |
IdleActionSec= | アイドル状態を検知してから実行までの待機時間設定 |
RemoveIPC= | ユーザーセッション終了時にIPC(共有メモリ等)削除を行うか設定 |
InhibitDelayMaxSec= | 抑止ロック解除までの最大遅延時間 |
これらの設定により、ユーザーセッションや電源管理、プロセス終了ポリシーを細かく制御できます。
loginctlコマンドによる操作
loginctl は systemd-logindの制御・管理ツールであり、ユーザーやセッション、シートの状態確認や制御を行えます。
| コマンド | 内容 |
|---|---|
loginctl list-sessions | 現在アクティブなセッション一覧を表示 |
loginctl session-status [ID] | 特定セッションの詳細情報表示 |
loginctl list-users | 現在ログイン中のユーザーリスト表示 |
loginctl user-status [USER] | 指定ユーザーのセッションおよびプロセス確認 |
loginctl enable-linger [USER] | ログアウト後もユーザーサービスを維持(linger有効) |
loginctl disable-linger [USER] | linger無効化 |
loginctl terminate-user [USER] | ユーザーの全セッション終了 |
loginctl kill-session [ID] | 特定セッションを強制終了 |
loginctl list-seats | システム上のシート一覧表示 |
loginctl seat-status [SEAT] | 指定シートの詳細状態確認 |
マルチシート環境の管理
マルチシート(Multi-seat)は、1台のLinuxマシンを複数ユーザーで同時利用できる機能です。
systemd-logindはそれぞれのシートにGPU、キーボード、マウス、ディスプレイを割り当てることで同時利用を実現します。
設定・確認コマンド例:
loginctl list-seats
loginctl seat-status seat0
loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/drm/card0
loginctl flush-devicesこれにより、複数のワークスペースや端末で独立したセッション環境を作ることができます。
関連サービス・確認コマンド
| コマンド | 説明 |
|---|---|
systemctl restart systemd-logind.service | 設定反映(再起動) |
systemctl status systemd-logind.service | サービスの稼働状況確認 |
journalctl -u systemd-logind | ログの確認 |
| 関連ユニット | user@.service、systemd-user-sessions.service |
まとめ
systemd-logind は Linux システムにおける
- セッション管理
- 電源制御
- マルチシート運用
- デバイスアクセス制御
といった多機能を一元化する中核サービスです。/etc/systemd/logind.conf で柔軟に振る舞いを制御でき、loginctl コマンドを使えばユーザーやセッション管理が簡単に行えます。
この仕組みを理解することは、現代Linux環境の運用やトラブルシュートに不可欠です。




コメント