ポータブル ホーム ディレクトリを管理するために systemd-homed が導入されました

レナート・ポエタリング 紹介された (PDF) All Systems Go 2019 カンファレンスで、システム マネージャー systemd の新しいコンポーネント - systemd ホーム、ユーザーのホームディレクトリを移植可能にし、システム設定から分離することを目的としています。 このプロジェクトの主なアイデアは、識別子の同期や機密性を気にせずに、異なるシステム間で転送できるユーザー データ用の自給自足の環境を作成することです。

ホーム ディレクトリ環境はマウントされたイメージ ファイルの形式で提供され、データは暗号化されます。 ユーザー資格情報は、システム設定ではなく、/etc/passwd および /etc/shadow ではなく、ホーム ディレクトリに関連付けられます。 プロフィール JSON 形式で、~/.identity ディレクトリに保存されます。 プロファイルには、名前、パスワード ハッシュ、暗号化キー、クォータ、割り当てられたリソースに関する情報など、ユーザーの作業に必要なパラメータが含まれています。 プロファイルは、外部 Yubikey トークンに保存されているデジタル署名を使用して認証できます。

パラメータには、SSH キー、生体認証データ、画像、電子メール、アドレス、タイムゾーン、言語、プロセスおよびメモリの制限、追加のマウント フラグ (nodev、noexec、nosuid)、使用されているユーザー IMAP/SMTP サーバーに関する情報などの追加情報が含まれる場合もあります。 、ペアレンタルコントロールの有効化、バックアップオプションなどに関する情報。 パラメータをリクエストおよび解析するための API が提供されています ヴァーリンク.

UID/GID の割り当てと処理は、ホーム ディレクトリが接続されている各ローカル システム上で動的に行われます。 提案されたシステムを使用すると、ユーザーは自分のホーム ディレクトリをフラッシュ ドライブなどに保存し、明示的にアカウントを作成せずに (ホーム ディレクトリのイメージを含むファイルの存在により) 任意のコンピュータ上で作業環境を取得できます。ユーザーの統合につながります)。

データ暗号化には LUKS2 サブシステムを使用することが提案されていますが、systemd-homed では、暗号化されていないディレクトリ、Btrfs、Fscrypt、CIFS ネットワーク パーティションなど、他のバックエンドの使用も許可されています。 ポータブル ディレクトリを管理するために、homectl ユーティリティが提案されています。このユーティリティを使用すると、ホーム ディレクトリのイメージの作成とアクティブ化、サイズの変更、パスワードの設定が可能になります。

システム レベルでは、次のコンポーネントによって動作が保証されます。

  • systemd-homed.service - ホーム ディレクトリを管理し、JSON レコードをホーム ディレクトリ イメージに直接埋め込みます。
  • pam_systemd - ユーザーがログインするときに JSON プロファイルからパラメータを処理し、アクティブ化されたセッションのコンテキストに適用します (認証の実行、環境変数の構成など)。
  • systemd-logind.service - ユーザーがログインするときに JSON プロファイルからパラメータを処理し、さまざまなリソース管理設定を適用し、制限を設定します。
  • nss-systemd - glibc 用の NSS モジュール。JSON プロファイルに基づいてクラシック NSS レコードを合成し、UNIX ユーザー処理 API (/etc/password) との下位互換性を提供します。
  • PID 1 - ユーザーを動的に作成し (DynamicUser ディレクティブを単位で使用するのと同様に合成されます)、システムの残りの部分に表示できるようにします。
  • systemd-userdbd.service - UNIX/glibc NSS アカウントを JSON レコードに変換し、レコードのクエリと反復のための統合 Varlink API を提供します。

提案されたシステムの利点には、/etc ディレクトリを読み取り専用モードでマウントするときにユーザーを管理できること、システム間で識別子 (UID/GID) を同期する必要がないこと、ユーザーが特定のコンピューターから独立していること、ユーザー データがブロックされていることなどが挙げられます。スリープ モード中は、暗号化と最新の認証方法が使用されます。 Systemd-homed は、リリース 244 または 245 で systemd メインストリームに組み込まれる予定です。

JSON ユーザー プロファイルの例:

"自動ログイン" : true、
「バインディング」: {
«15e19cd24e004b949ddaac60c74aa165» : {
"ファイルシステムタイプ" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232、
"ホームディレクトリ" : "/home/test",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize" : 32、
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"ストレージ" : "ルクス",
「uid」: 60233
}
},
"性質" : "通常"、
"enforcePasswordPolicy" : false、
"lastChangeUSec": 1565951024279735、
"メンバー" : [
"車輪"
],
"特権" : {
"ハッシュされたパスワード" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] }、
"サイン" : [
{
"データ" : "LU/HeVrPZSzi3M3J...==",
"key" : "——公開キーの開始——\nMCowBQADK2VwAy…=\n——公開キーの終了——\n"
}
],
"ユーザー名" : "テスト",
"状態" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16、
"lastGoodAuthenticationUSec": 1566309343044322、
"rateLimitBeginUSec" : 1566309342341723、
"rateLimitCount" : 1、
"状態" : "非アクティブ"、
"サービス" : "io.systemd.Home",
「ディスクサイズ」: 161218667776、
「ディスク天井」: 191371729408、
「ディスクフロア」: 5242780、
"signedLocally" : true
}
}

出所: オープンネット.ru

コメントを追加します