基調講演では紹介されない機能の中にも"発見"があるWWDC。もちろん開発者とコンシューマユーザでは目線が異なるものの、こと「ファイルシステム」の仕様変更となれば話は別、すべてのMacユーザに関わる重大案件だ。今回は、次期macOS「Catalina」におけるファイルシステムの変更点について解説してみよう。

大きく変わるファイルシステム

macOSのディレクトリ構造は、前身となるNEXTSTEP/OPENSTEPの時代から連綿と続くもので、ディレクトリに与えられた役割に多少の変化はあったものの、「管理者権限を持つユーザ(スーパーユーザ)のみが書き換えを許される」という原則は一貫していた。

しかし、El Capitanのとき「System Integrity Protection(SIP)」が導入され、/usrなど特定領域の書き替えがスーパーユーザですら書き替えが原則不可能になった。これはセキュリティ向上が目的だ。ただし、SIPには例外のディレクトリ(ex. /usr/localなど)が複数設けられ、SIP自体を無効化することも可能など、セキュリティを緩める余地があった。

Catalinaでは、ファイルアクセスをさらに厳格化する。APFS(Apple File System)でフォーマットされたルートボリューム(起動ディスク)はシステム領域とデータ領域に2分割され、そのうちシステム領域は完全にリードオンリーとなる。Catalinaにアップデートするとき強制処理されるため、これが今後のmacOSのファイルシステムということだ。SIPを無効化すればリードオンリーを解除するのは可能というが、再起動後には自動的にリードオンリーへ戻るという徹底ぶりだ。

リードオンリーのシステム領域には、それほど重要度が高くないUNIXコマンドが置かれるディレクトリ「/usr/bin」のみ配置される。アプリ(/Applications)やユーザの作業領域(/Users)といった書き換えられるファイルはデータ領域に置かれ、適宜振り分けられるしくみだ。

アプリやユーザに新ファイルシステムがどう映るかだが、従来と変わらない。たとえば、システムフォルダは「/System/Library」だし、ユーザshinobuのホームディレクトリは「/Users/shinobu」。どちらも実体はデータ領域にあるが、システム領域に対して行われたアクセスをうまく振り分ける機構が用意されるからだ。

その鍵となるのが、CatalinaでAPFSに導入される「Firmlinks」。シンボリックリンクと似た機能を持つそうで、システム領域へアクセスすればその本体があるデータ領域へ自動的に置き換えられる。しかも対象になるのはディレクトリのみ、確実に存在するディレクトリパスを指定しなければ目的のファイルにはアクセスできないことになる。

WWDCのセッションで使われたスライドでは、その特長を「Bi-directional wormhole in path traversal」と表現しており、予想外のパスを指定し権限のないファイルに不正アクセスしようとする「パストラバーサル攻撃」に備える狙いがあることは確かだろう。

  • Catalinaのファイルシステム図。データ領域とシステム領域に2分される

  • ファイル/ディレクトリへのアクセスは「Firmlinks」によりデータ領域へ置き換えられる

暗号化ボリュームの複製・復元

暗号化されたボリュームの複製・復元がよりセキュアに、確実に行われるよう「Apple Software Restore」が拡張されたことにも注目したい。

まず前提として、APFSには「Space Sharing」という機能/概念があることを理解しておきたい。HFS Plusなど従来のファイルシステムは、パーティションは1つの物理ディスクに固定され、そのサイズを増減する作業は複雑かつリスクを伴うものだったが、APFSでは「コンテナ」の概念を導入、物理的に異なるドライブやパーティションの垣根を越えてボリュームを管理できる。前述したファイルシステムのリードオンリー化(データ領域とシステム領域の分割)は、このSpace Sharingを活用したものだ。

Catalinaでは、APFSボリュームの複製が強化される。APFSがデフォルトのファイルシステムに採用される以前から、macOSにはボリューム複製用の「asr」コマンドが用意されているが、これを利用して暗号化されたAPFSボリュームの複製を実行するとき、復号(暗号を解除)とデフラグを行いつつ新しいコンテナを作成できる。単なる復号ではないところがポイントだ。

なお、APFSにはファイルシステム自体に暗号化/復号化の機能が用意されている。High Sierraより前のシステム(HFS Plus)では、暗号化および復号にはCoreStorageの機能を利用していたため、そのとき暗号化されていないデータが晒されてしまう懸念があったが、CoreStorageを介す必要がないAPFSにその心配はない。FileVaultの利用価値がより高まった、と見ていいだろう。

  • HFS Plusの構造。パーティションは1つの物理ディスクに固定されている

  • APFSの構造。コンテナの概念が導入され、物理的に異なるドライブやパーティションの垣根を越えてボリュームを作成できる

  • Catalinaでは、暗号化されたボリュームを安全に複製すると同時にデフラグも実行される