技術ノート Linux Systemd が Linux ホーム ディレクトリの動作を変える

Systemd が Linux ホーム ディレクトリの動作を変える

systemd の背後にあるチームは、ホーム ディレクトリを管理する新しい方法を採用することを望んでいます。これを「新しい方法」と呼ぶのは軽々しく言っています。これは Linux にとって本当のパラダイム シフトです。 systemd-homed について知っておくべきことはすべてここにあります。これはおそらく近くの Linux ディストリビューションに導入される予定です。

論争を知らない人はいない

2010 年に systemd 導入されたとき、Linux コミュニティは 3 つの陣営に分かれました。これは改善されたと考える人もいれば、 Unix の哲学 に準拠していない欠陥のある設計だと考える人もいます。そして、どちらにしても気にしない人もいました。

反対派からの反発は大きく、激しく、場合によってはほとんど狂信的でした。 Red Hat のソフトウェア エンジニアであり、systemd の共同開発者である Lennart Poettering 氏は 、殺害の脅迫さえ受けました。

ポエタリングに対する暴力を推奨する曲が YouTube に投稿され、Linux ユーザーに systemd をボイコットするよう強制しようとする Web サイトが現れました。彼の共同開発者である ケイ・シーバース も批判と罵倒を受けたが、ポエタリングは確かにその矢面に立たされた。

しかし、8 か月以内に、Fedora は systemd を使用するようになりました。 2013 年末までに、 Arch Debian Manjaro 、および Ubuntu は すべて systemd に移行しました。もちろん、オープンソースの栄光は、何か気に入らないことがあれば、ソース コードをフォークして、それを使って独自のことを実行できることです。 Debian のフォークである Devuan のような新しいディストリビューションは、 systemd の使用を避けるためだけに作成されました。

Systemd が Linux ホーム ディレクトリの動作を変える

あなたの $HOME ディレクトリ

Linux のディレクトリ構造 では、行うことはすべて「/home」ディレクトリ内に存在します。データ ファイル、画像、音楽、および個人ディレクトリ ツリー全体が、ユーザー アカウントにちなんで名付けられたこの 1 つのディレクトリ内に保存されます。

アプリケーションの設定は、ホーム フォルダーの非表示の「ドット ディレクトリ」に保存されます。ファイル名またはディレクトリ名の最初の文字がピリオド (.) の場合、それは非表示になります。これらの設定は中央のレジストリではなくローカルに保存されるため、また、ホーム ディレクトリのバックアップにはこれらの隠しファイルやフォルダが含まれるため、すべての設定もバックアップされます。

バックアップを復元し、LibreOffice や Thunderbird などのアプリケーションを起動すると、隠しディレクトリが検索されます。また、ドキュメントの設定、ツールバーの設定、その他のカスタマイズも検索されます。 Thunderbird は、電子メール アカウント情報と電子メールを見つけます。各アプリケーションをゆっくりとセットアップするという面倒な作業を行う必要はありません。

使用できます

ls

とともに

-a

(all) オプションを使用すると、隠しファイルとディレクトリが表示されます。まず、次のように入力します。

 ls

これにより、通常のファイルとディレクトリが表示されます。次に、次のように入力します。

 ls -a

これで、隠しファイルとディレクトリが表示されるようになります。

これはインストールの最も重要な部分であるため、「/home」ディレクトリは独自のパーティションまたは別のハード ドライブにマウントされるのが一般的です。こうすることで、オペレーティング システムまたはそのパーティションに致命的な問題が発生した場合でも、Linux ディストリビューションを再インストールするか、新しいディストリビューションに切り替えることができます。その後、既存のホーム パーティションを「/home」に再マウントするだけです。

Systemd が Linux ホーム ディレクトリの動作を変える

あなたに関するデータ

ホーム ディレクトリにはデータが保存されるだけではありません。あなたに関する情報も保存されます。これには、デジタル アイデンティティのいくつかの属性が含まれます。たとえば、「.ssh」ディレクトリには、他のコンピュータに対して行ったリモート接続と、生成した SSH キーに関する情報が保存されます。

アカウントのユーザー名、パスワード、一意の ユーザー ID などのその他のシステム属性は、「/etc/passwd」や「/etc/shadow」などのファイルに保存されます。これらの一部は誰でも読み取ることができますが、その他は root 権限を持つユーザーのみが読み取ることができます。

「/etc/passwd」ファイルの内容は次のようになります。

猫/etc/passwd 

Systemd が Linux ホーム ディレクトリの動作を変える

systemd ホームの変更点

systemd-homed の変更の目的は、データと Linux デジタル ID の両方が保存された完全にポータブルなホーム ディレクトリを提供することです。 UID およびその他すべての識別および認証メカニズムは、ホーム ディレクトリ内にのみ保存されます。

「すべての卵を 1 つのバスケットに」設計されているため、ホーム ディレクトリは暗号化されます。これらはログインするたびに自動的に復号化され、ログアウトするたびに再度暗号化されます。推奨される方法は 、Linux Unified Key Setup (LUKS) ディスク暗号化を使用することです。ただし、 fscrypt など、他のスキームも利用できます。

JavaScript Object Notation (JSON) ユーザー レコードは、すべての ID 情報を「~/.identity」というディレクトリに保存します。これは、制御できないキーを使用して暗号的に署名されています。

各ユーザーのホーム ディレクトリは、 snap アプリケーションがマウントされるのと同様の方法で、ループバック デバイスにマウントされます。これは、ホーム ディレクトリ内のディレクトリ ツリーがオペレーティング システムのディレクトリ ツリーのシームレスな部分として表示されるようにするためです。マウント ポイントのデフォルトは「/home/$USER.homedir」です (「$USER」はユーザーのアカウント名に置き換えられます)。

Systemd が Linux ホーム ディレクトリの動作を変える

メリットは何ですか?

ホーム ディレクトリはすべてのデータを安全にカプセル化するため、リムーバブル デバイス上にホーム ディレクトリを置くこともできます。たとえば、USB ドライブを使用して、職場のマシンと自宅のマシン、またはその他の systemd-homed コンピュータ間で USB ドライブを移動できます。

これが、ポエタリングが「完全にポータブルなホーム ディレクトリ」という言葉で意味したものです。同氏は、ポータブルデバイス上でホームディレクトリを移動したくない場合でも、これによりアップグレードと移行が容易になり、セキュリティが向上すると述べた。

これにより、同氏が「サイドカー データベース」と呼ぶものを削除します。このデータベースには、ポエタリング氏が一元化すべきだと考えている、ユーザーに関する重要な情報の断片が含まれています。 「/etc/passwd」ファイルと「/etc/shadow」ファイルには、認証情報とハッシュ化されたパスワードが含まれています。ただし、デフォルトのシェルである General Electric Comprehensive Operating Supervisor (GECOS) フィールドのような情報も保持します。

ポエタリング氏は、この メタデータは 合理化され、ホーム ディレクトリ内の各個人の JSON レコード内の意味のあるグループに保存されるべきだと述べました。

Systemd が Linux ホーム ディレクトリの動作を変える

新しい $HOME の管理

systemd-homed サービスは、新しい homectl コマンドライン ツール を通じて制御されます。

ユーザーとホーム ディレクトリを作成し、各ユーザーにストレージ制限を設定するオプションがあります。パスワードを設定したり、誰かをアカウントからロックアウトしたり、アカウントを完全に削除したりすることもできます。ユーザーを検査したり、JSON ユーザー レコードを読み取ることもできます。

タイムゾーンやその他の位置情報もユーザーごとに設定できます。デフォルトのシェルを指定したり、誰かがログインするたびに特定の状態になるように環境変数を設定したりすることもできます。

「/home」ディレクトリを見ると、ユーザー名に「.homedir」が追加された次のような systemd-homed 管理エントリが表示されます。

 /home/dave.homedir

これは単なるマウント ポイントであることに注意してください。実際の暗号化されたホーム ディレクトリの場所は別の場所にあります。

Systemd が Linux ホーム ディレクトリの動作を変える

制限と問題

systemd-homed 人間のユーザー アカウントでのみ使用されます。 UID が 1,000 未満のユーザー アカウントは処理できません。つまり、root、デーモン、bin などは、新しいスキームを使用して管理できません。ユーザーを管理する標準的な方法が常に必要になります。したがって、 systemd-homed グローバル ソリューションではありません。

解決する必要がある既知の キャッチ 22 があります。前に述べたように、ユーザーのホーム ディレクトリはログインするたびに復号化されます。しかし、誰かが SSH 経由でコンピュータにリモート アクセスしている場合、ホーム ディレクトリは暗号化されたままであるため、ホーム ディレクトリ内の SSH キーは参照できません。もちろん、ログインする前に認証用の SSH キーが必要です。

これは systemd-homed チームによって認識されていた問題ですが、この問題の修正に関する参考資料は見つかりませんでした。彼らはきっと解決策を見つけてくれるでしょう。そうしないと、とんでもないことになるでしょう。

誰かが自分のホーム ディレクトリを新しいマシンに移したとします。 UID が新しいマシン上で他の誰かによってすでに使用されている場合、その人には新しい UID が自動的に割り当てられます。もちろん、彼のすべてのファイルの所有権を新しい UID に再割り当てする必要があります。

現在、これは chown -R コマンド の再帰的自動アプリケーションによって処理されています。将来、より洗練されたスキームが開発されると、これはおそらく別の方法で処理されるでしょう。この強引なアプローチでは、他のユーザーとして実行されるデーモンやプロセスが考慮されていません。

これはいつ起こりますか?

これが今起きています。コードの変更は 2020 年 1 月 20 日に提出 され、2020 年 4 月に Ubuntu 20.04 に同梱された systemd のビルド 245 に含まれていました。

使用しているバージョンを確認するには、次のように入力します。

 systemd --バージョン

ただし、 homectl コマンドはまだ存在しません。 Ubuntu 20.04 は従来の /home ディレクトリを使用し、systemd-homed を使用しません。

もちろん、 systemd-homed homectl をいつ含めてサポートするかは、個々のディストリビューションによって決定されます。

したがって、誰も完全にピッチフォークを使用したり、たいまつを燃やすモードに入る必要はありません。ユーザーとホーム ディレクトリを管理する標準的な方法は今後も残るため、私たちには依然として選択肢があります。

「 Systemd が Linux ホーム ディレクトリの動作を変える」に関するベスト動画選定!

【毎日Python】Pythonでホームディレクトリを確認する方法|os.environ
Linuxディレクトリ構造を完全解説!