【完全版】Linux systemd-logindとは?機能・設定・loginctl操作まで徹底解説

この記事は約5分で読めます。
スポンサーリンク

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=電源ボタン押下時の動作設定(poweroffsuspendignoreなど)
HandleLidSwitch=ノートPCの蓋を閉じた時の挙動(suspendlockignore
HandleSuspendKey=サスペンドキー押下時の動作指定
HandleHibernateKey=ハイバネートキー押下時の動作指定
IdleAction=一定時間アイドル時の動作設定(suspendpoweroffなど)
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@.servicesystemd-user-sessions.service

まとめ

systemd-logind は Linux システムにおける

  • セッション管理
  • 電源制御
  • マルチシート運用
  • デバイスアクセス制御

といった多機能を一元化する中核サービスです。
/etc/systemd/logind.conf で柔軟に振る舞いを制御でき、loginctl コマンドを使えばユーザーやセッション管理が簡単に行えます。
この仕組みを理解することは、現代Linux環境の運用やトラブルシュートに不可欠です。

コメント

タイトルとURLをコピーしました