午前2時の悪夢と /etc/passwd の時代遅れ感
こんなシナリオを想像してみてください。午前2時、開発チームの重要なデータが入ったFedoraサーバーでファイルシステムエラーが発生しました。データを救出するために別のマシンにハードドライブをマウントしようとしますが、そこには混乱が待ち受けています。UIDの不一致、パーミッションの乱れ、そしてバラバラな設定ファイル群を前に、あなたは頭を抱えることになります。
Fedoraをメインマシンとして2年間使用してきて、パッケージの更新速度には非常に満足しています。しかし、1970年代から続く古いユーザー管理手法は、大きなマイナス点だと感じていました。ユーザー情報はあちこちに分散しており、ユーザーを別のマシンに移行しようとすると、ほぼすべての工程を手動で行う必要があります。
そこで登場するのが systemd-homed です。これはユーザーのすべての情報を単一のエンティティにカプセル化し、自己暗号化機能を備え、非常に高いポータビリティを実現します。このモダンなユーザー管理の考え方に切り替えていきましょう。
コアコンセプト:systemd-homedとは?
テキストファイルに情報を分散させる代わりに、systemd-homed はパスワードハッシュからリソース制限まで、すべてを含むJSONレコードを作成します。ホームディレクトリはもはや静的なフォルダではありません。LUKSイメージファイル、専用パーティション、あるいは柔軟なBtrfsサブボリュームとして存在できます。
最大の利点はセキュリティにあります。ログアウトすると、システムはホームディレクトリをアンマウントし、強固にロックします。たとえあなたが不在の間にハッカーがroot権限を取得したとしても、個人データへのアクセスはほぼ不可能です。
ステップ1:Fedoraでsystemd-homedを有効にする
Fedoraは常に新技術の「実験場」ですが、Fedora Serverをインストールした直後の環境でも、既存の設定との競合を避けるため、systemd-homed はデフォルトでは有効になっていません。まず最初に行うべきは、これを起動することです。
# パッケージのインストール(通常、Fedora Workstationにはプリインストールされています)
sudo dnf install systemd-homed
# サービスを有効化し、すぐに実行する
sudo systemctl enable --now systemd-homed
homectl list コマンドでステータスを確認しましょう。リストが空であれば、システムは最初のメンバーを受け入れる準備ができています。
ステップ2:homectlで新しいユーザーを作成する
useradd とはおさらばして、homectl に慣れていきましょう。ここでは、容量10GBで、最大限のセキュリティを確保するためにLUKS暗号化を使用するユーザー itzero を作成すると仮定します。
sudo homectl create itzero --storage=luks --disk-size=10G
パスワードを入力すると、systemd-homed は /home/itzero.home にイメージファイルを作成します。ユーザーがログインすると、このファイルは自動的に /home/itzero にマウントされます。ログアウト時には、システムディレクトリツリーから完全に消え去り、痕跡を残しません。
内部のJSON設定を詳しく確認したい場合は、次のコマンドを使用します:
homectl inspect itzero
ステップ3:リソース制限 – プロのように管理する
これこそが、ラボサーバーを管理するエンジニアにとっての「秘密兵器」です。cgroupsを手動でいじることなく、ユーザーのレコード内で直接、RAMやCPUの制限をかけることができます。
例えば、ユーザー itzero が使用できるRAMを最大2GB、CPUウェイトを20%に制限したい場合は次のようにします:
sudo homectl update itzero --memory-max=2G --cpu-weight=20
この変更は即座に、または次回のログイン後に有効になります。この方法は、インターン生に分離された開発環境を提供しつつ、システム全体がフリーズするのを防ぎたい場合に非常に実用的です。
ステップ4:ログインエラーの処理(PAM)
実体験からの教訓:ユーザーを作成したのにGDM画面からログインできない場合でも、慌てないでください。多くの場合、原因は PAM (Pluggable Authentication Modules) がこの新しい仕組みを認識していないことにあります。
Fedoraでは、authselectを使用して systemd-homed を優先的にチェックするようにシステムに指示する必要があります:
sudo authselect select sssd with-systemd-home --force
このコマンドは認証フローを再構成し、pam_systemd_home.so が適切なタイミングで呼び出されるようにします。
ステップ5:ポータビリティ(可搬性) – 最も価値のある機能
データの「引っ越し」がこれほど簡単になったことはありません。外付けハードドライブにLUKSイメージファイルとしてホームディレクトリを保存している場合、新しいマシンへの移行はわずか2ステップです:
- イメージファイルが入ったハードドライブを新しいFedoraマシンに接続します。
- コマンドを実行します:
sudo homectl activate /path/to/itzero.home
新しいシステムは自動的にJSONレコードを読み取り、以前のUIDとパスワードを認識します。rsyncや複雑なファイル所有権の修正を行うことなく、すぐに慣れ親しんだ作業環境が手に入ります。
現場の経験からの結論
systemd-homed への移行は、単にトレンドを追うことではありません。これはデータを保護し、長期的な管理を簡素化するための方法です。最初は慣れないかもしれませんが、homectl のスマートさを知れば、二度と手動で /etc/passwd を編集したくなくなるでしょう。
マルチユーザーシステムを運用している場合や、OpenSSH Server経由でのアクセスなど、個人ディレクトリのセキュリティを強化したい場合は、ぜひ今すぐ試してみてください。夜中にデータ救出作業に追われるまで、その真の価値を待つ必要はありません。

