第2章 logind

logind (さらに具体的には systemd-logind) はユーザーログインを管理するシステムサービスです。このサービスは以下を行います。
  • ユーザーおよびセッション、それらのセッションおよびアイドル状態の追跡
  • ユーザープロセスの制御グループの作成
  • システムのシャットダウンまたはスリープなどの操作のために PolicyKit ベースのアクセスをユーザーに提供
  • アプリケーション用にシャットダウン/スリープを抑止するロジックの実装
  • 電源/スリープハードウェアキーの処理
  • 複数のユーザー用のマルチシート管理、セッション切り替え管理、およびデバイスアクセス管理
  • 仮想端末 (コンソール) のアクティブ化時のテキストログイン (getty) の自動起動およびユーザーランタイムディレクトリーの管理
logind サービスは Red Hat Enterprise Linux 7 の新たな初期化システムである systemd と密接に統合しており、Red Hat Enterprise Linux 6 の upstart 初期化システムに置き換わるサービスです。この変更により、数多くの新機能が導入されました。以下は、これらの内のとりわけ大きな変更点の要約です。
ConsoleKit
ConsoleKit フレームワークの使用は Red Hat Enterprise Linux 7 では非推奨となりました。これと同等の機能は systemd によって提供されるようになりました。ConsoleKitlogind はいずれも現在実行されているユーザーセッションを追跡するためのサービスです。

注記

ConsoleKit には、システム上のアクティブなセッションの変更時にはいつでも任意のシェルスクリプトを実行できる機能 (仮想端末の切り替えを使用) がありましたが、この機能は提供されなくなりました。
/var/log/ConsoleKit/history ファイル
これまで、ConsoleKit はログファイルを /var/log/ConsoleKit/history に送信していましたが、現在の logind はこれをサポートしていません。このファイルは従来の wtmp ファイルおよび utmp ファイルに置き換わり、これらのファイルによりシステム上のすべてのログインおよびログアウトが追跡されるようになりました。/var/log/ConsoleKit/history は、形式は異なるものの、基本的に wtmp ファイルと類似する情報を提供していました。機能的に重複しているため、logindwtmp ファイルの役割のみを採用しています。
seat.d スクリプト
ConsoleKit は使用されなくなったため、seat.d スクリプトは ConsoleKit フレームワークを補完するものとはならず、systemd-logind に置き換わっています。
ck-list-sessions コマンド
ConsoleKit は、最近のユーザー情報だけでなく、GDM を使用した GUI アクセスも含む拡張情報を戻す ck-list-sessions コマンドを提供していました。これに相当する結果は、loginctl コマンドを実行することによって得ることができます。
$ loginctl list-sessions
マルチシートサポート
logindGDM と共に使用すると、ユーザーが別のモニター、マウスまたはキーボードをマシンに割り当てることを可能にする マルチシート 機能を利用できます。これを実行すると、追加のログイン画面が表示され、ユーザーは別のマシンを使用しているかのようにログインできます。
システム上で利用可能なシートを一覧表示するには、以下のコマンドを実行します。
$ loginctl list-seats
システム上で特定のシートのステータスを表示するには、以下のコマンドを実行します。
$ loginctl seat-status seat
ここで、seatseat0 などのシートの名前になります。
特定のハードウェアを特定のシートに割り当てるには、以下のコマンドを実行します。
# loginctl attach seat device
ここで、seatseat1 などのシートの名前となり、device/sys/devices/pci0000:00/0000:00:02.0/drm/card0 のような /sys デバイスパスで指定されるデバイス名になります。
この割り当てを変更するには、ハードウェアを別のシートに割り当てるか、または loginctl flush-devices コマンドを使用します。

詳細情報の入手

systemd-logind.service(8) – logind の man ページは logind の使用方法や機能についての詳細情報を提供します。さらに、systemd-logind が提供する API についても記載しています (logind D-Bus API についてのドキュメント)。
logind.conf(5) – logind.conf の man ページはログインマネージャーの設定ファイルについて説明しています。
loginctl(1) – systemd ログインマネージャーの man ページには、マルチシート機能についての詳細情報が記載されています。