https://wiki.archlinux.jp/api.php?action=feedcontributions&user=Bruno+Brito&feedformat=atom
ArchWiki - 利用者の投稿記録 [ja]
2024-03-28T14:53:55Z
利用者の投稿記録
MediaWiki 1.34.0
https://wiki.archlinux.jp/index.php?title=Systemd-homed&diff=16435
Systemd-homed
2020-05-30T01:14:50Z
<p>Bruno Brito: Added link to the portuguese version of the article, also, since I did some improvements to the english page as well, this article in japanese can be improved with the latest additions.</p>
<hr />
<div>{{lowercase title}}<br />
[[Category:セキュリティ]]<br />
[[en:Systemd-homed]]<br />
[[pt:Systemd-homed]]<br />
{{Related articles start}}<br />
{{Related|fscrypt}}<br />
{{Related|セキュリティ}}<br />
{{Related|PAM}}<br />
{{Related articles end}}<br />
'''systemd-homed''' は現在のシステム構成に依存しないポータブルなユーザーアカウントを提供する [[systemd]] サービスです。<br />
<br />
ポータビリティを実現するために、systemd-homed は全てのユーザー関連情報をストレージメディアに移動して、可能であれば暗号化を行い、ユーザーに関する署名済み情報 (パスワードやユーザーが属するグループ、UID/GID、その他 {{ic|/}} に散在する情報) を含む {{ic|~/.identity}} ファイルを作成します。<br />
<br />
ポータブルなホームディレクトリを可能にするだけではなく、ログイン時に {{ic|/home}} を暗号化しシステムの停止時にフォルダに施錠するという管理を自動化することでセキュリティも確保されます。<br />
<br />
== インストール ==<br />
<br />
''systemd-homed'' は {{Pkg|systemd}} に含まれています。<br />
<br />
== ユーティリティ ==<br />
<br />
=== homectl === <br />
<br />
homectl を使うことでユーザーを作成・更新・調査して、ホームディレクトリと systemd-homed サービスで管理される {{ic|~/.identity}} を作成することができます。<br />
<br />
最初の空 UID を使用して、'archie' という名前のユーザーを作成 (同じ名前のグループを作成して GID と UID を同じにして ''archie'' をグループのメンバーに設定し、デフォルトシェルを {{ic|/bin/bash}} に設定):<br />
<br />
# homectl create archie<br />
<br />
上記のコマンドでホームディレクトリのマウントポイントは {{ic|/home/archie}} に設定されます。ストレージ方式は次の順番で選択されます (例えば LUKS がサポートされている場合 LUKS が選ばれます): '''LUKS''', '''サブボリューム''', '''ディレクトリ'''。'''LUKS''' のイメージパスは {{ic|/home/archie.home}} に、'''ディレクトリ'''のディレクトリパスは {{ic|/home/archie.homedir}} に設定されます。<br />
<br />
シェルを [[zsh]] に設定してユーザーを作成する例:<br />
<br />
# homectl create archie --shell='/usr/bin/zsh'<br />
<br />
作成したユーザー 'archie' を 'wheel' グループに追加する場合:<br />
<br />
# homectl update archie -G wheel<br />
<br />
{{Note| '''homectl''' はグループの作成・削除は管理しません。古典的なツールを使ってください。}}<br />
<br />
{{Warning|{{ic|~/.identity}} ファイルは署名されるためテキストエディタを使って直接編集してはありません。署名が破壊され不正なファイルとなってしまいます。編集するときは {{ic|1=homectl update --identity=/path/to/.identity}} を使ってください。}}<br />
<br />
=== userdbctl ===<br />
<br />
古典的な Unix によるユーザー管理と [[systemd-homed]] によるユーザー管理、両方によるユーザー・グループ・グループ属性を調査するための問い合わせツール。<br />
<br />
== ストレージ方式 ==<br />
<br />
=== ディレクトリまたは [[btrfs]] サブボリューム ===<br />
<br />
ユーザーのホームディレクトリは {{ic|/home/user.homedir}} に保存され、ログイン時にバインド[[マウント]]を使って {{ic|/home/user}} にマウントされます。この方式では暗号化は行われません。 この方式を使う際は {{ic|1=--storage=directory}} または {{ic|1=--storage=subvolume}} を '''homectl''' に指定してください。<br />
<br />
=== [[fscrypt]] ディレクトリ ===<br />
<br />
{{Tip|fscrypt をサポートしているファイルシステムには [[ext4]] や [[F2FS]] があります。}}<br />
上記の方法と同じようにユーザーのホームディレクトリが保存されますが、ファイルシステムネイティブの暗号化が使われます。この方式を使う場合は {{ic|1=--storage=fscrypt}} を '''homectl''' に指定してください。<br />
<br />
=== [[LUKS]] ホームディレクトリ ===<br />
<br />
ユーザーのホームディレクトリはループバックファイルあるいはリムーバルメディアの [[LUKS]] ボリューム内の Linux [[ファイルシステム]]に保存されます。この方式を使う際は {{ic|1=--storage=luks}} を '''homectl''' に指定してください。<br />
<br />
リムーバルメディアを使う場合は以下の条件を満たす必要があります:<br />
<br />
* イメージには GPT パーティションテーブルが必要です。現在のところ、そのパーティションひとつだけで、パーティションのタイプが {{ic|UUID 773f91ef-66d4-49b5-bd83-d683bf40ad16}} である必要があります。また、パーティションのラベルがユーザーの名前でなくてはなりません。<br />
<br />
* パーティションには LUKS2 ボリュームが必要で、ラベルがユーザー名と一致している必要があります。LUKS2 ボリュームには systemd-homed タイプの LUKS2 トークンフィールドが必要です。このトークンの JSON データには base64 でエンコードされたデータを含むレコードフィールドが必要です。このデータは JSON のユーザーレコードであり、{{ic|~/.identity}} と同じようにシリアライゼーションされています。このトークンの JSON データには iv フィールドも必要で、暗号化のための base64 でエンコードされたバイナリ初期化ベクタを記述します。LUKS2 ボリュームが使用するのと同じ暗号化が使われ、同じボリュームキーで解錠されますが、自己の IV を使います。<br />
<br />
* LUKS2 ボリュームの中は [[ext4]], [[btrfs]], [[XFS]] のいずれかの Linux ファイルシステムである必要があり、ファイルシステムのラベルはユーザー名でなければなりません。<br />
<br />
* ファイルシステムにはユーザーと同じ名前のディレクトリが必要です。このディレクトリがログイン時にユーザーのホームディレクトリになります。他のストレージ方式と同じように {{ic|~/.identity}} ファイルにユーザーレコードのコピーを保持します。<br />
<br />
== PAM モジュールの有効化 ==<br />
''systemd-homed'' のユーザーは伝統的な UNIX の NSS データベース ({{ic|/etc/passwd}}, {{ic|/etc/shadow}}, {{ic|/etc/group}} など) にレコードを記録しないため、デフォルトの {{ic|pam_unix.so}} モジュールではログインができません。提供されている [[PAM]] モジュールを使う必要があります。<br />
<br />
例:<br />
{{hc|head=/etc/pam.d/system-auth|output=#%PAM-1.0<br />
<br />
auth sufficient pam_unix.so try_first_pass nullok<br />
-auth sufficient pam_systemd_home.so<br />
auth optional pam_permit.so<br />
auth required pam_env.so<br />
auth required pam_deny.so<br />
<br />
account sufficient pam_unix.so<br />
-account sufficient pam_systemd_home.so<br />
account optional pam_permit.so<br />
account required pam_time.so<br />
<br />
-password sufficient pam_systemd_home.so<br />
password sufficient pam_unix.so try_first_pass nullok sha512 shadow<br />
password optional pam_permit.so<br />
<br />
session required pam_limits.so<br />
-session optional pam_systemd_home.so<br />
session required pam_unix.so<br />
session optional pam_permit.so}}<br />
{{Tip|オプションについて詳しくは {{man|8|pam_systemd_home}} を参照。}}<br />
<br />
== 例 ==<br />
<br />
以下は '''homectl''' の使用例です。<br />
<br />
=== fscrypt を使ってユーザー archie を作成 ===<br />
<br />
# homectl create archie --storage=fscrypt<br />
<br />
=== UID とシェル、グループを指定してユーザー alan を作成 ===<br />
<br />
# homectl create alan --shell=/bin/zsh --uid=1001 -G wheel,storage,games<br />
<br />
=== ユーザーの削除 ===<br />
{{Warning|ユーザーの削除は即座に実行されます。注意してください。}}<br />
# homectl remove archie<br />
<br />
== 参照 ==<br />
<br />
* https://systemd.io/HOME_DIRECTORY/</div>
Bruno Brito