Linuxに、ちょっと変わったファイルシステムが加わろうとしています。名前はFailFS(フェイルエフエス)。「fail」は失敗という意味で、その名のとおり、何をやっても必ず失敗するように作られています。開くこともできない、中身の一覧も見られない、書き込みもできない。生まれつき、何の役にも立たないのです。
提案しているのは、Linuxのファイルシステム基盤(VFS)のメンテナーを務めるChristian Brauner氏。冗談やお遊びではなく、サンドボックスと呼ばれる安全機構をより確実にするための、まじめな道具として設計されています。「役に立たないものを作ることが、なぜ安全につながるのか」——今回はその逆転の発想を追いかけます。
従来のサンドボックスが抱える弱点
サンドボックスとは、プログラムを「砂場」の中に閉じ込めて動かす仕組みです。そのプログラムから触れる範囲を制限しておけば、万が一プログラムが乗っ取られたり暴走したりしても、被害が砂場の外へ広がりません。ウェブブラウザやコンテナ、最近ではAIエージェントに作業させる環境など、いろいろな場面で使われている考え方です。
Linuxでファイルへのアクセスを制限する場合、これまでの主なやり方は「見せたくないものを一つずつ隠していく」ことでした。マウント名前空間で見える範囲を分け、必要なディレクトリだけをはめ込み、ほかを覆い隠し、さらにchroot(ルートディレクトリの付け替え)を重ねる。手間をかけて、制限つきのファイル環境を組み上げていきます。
この方式の弱点は、はっきりしています。「これは禁止、あれも禁止」と数え上げていく以上、塞ぎ忘れが起こりうることです。隠したつもりの場所へ抜け道が残っていた、という類のミスは、セキュリティの世界で繰り返し起きてきました。禁止リストがどれだけ長くても、一つの漏れですべてが台無しになります。
すべての操作が失敗するFailFSの仕組み
FailFSは、この発想を根本からひっくり返しました。隠す作業を積み上げるのではなく、そもそもファイルシステムを丸ごと取り上げてしまうのです。
FailFSに届いた操作は、すべてEOPNOTSUPP(そういう操作には対応していません)というエラーになります。ファイルを開くのも、一覧を見るのも、全部失敗。そして、このFailFSをサンドボックス内のプログラムのルートディレクトリ(すべてのパスの出発点)に据えると、面白いことが起こります。そのプログラムにとって、「/etc/passwd」のようなパス名でファイルを探すという行為そのものが、成立しなくなるのです。絶対パスも、絶対パスを指すシンボリックリンクも、カレントディレクトリからの相対パスも、すべて失敗します。探しに行く先の世界が、最初から存在しないからです。
では、閉じ込められたプログラムはどうやって仕事をするのか。答えは、サンドボックスの管理側が、必要なファイルやディレクトリの「取っ手」だけをあらかじめ手渡しておく、というものです。この取っ手はファイルディスクリプターと呼ばれ、開いたファイルを指し示す整理券のようなものです。プログラムはopenat()のような呼び出しを使い、手渡された取っ手を起点にしてだけ、ファイルを扱えます。渡されていないものは、探すことすらできないので、事実上存在しないのと同じになります。
つまり、「禁止事項を数え上げる」方式から、「渡したものしか触れない」方式への転換です。鍵をかけるべき扉を一つずつ数えて回るのではなく、最初から扉が一つもない空っぽの部屋に入ってもらい、必要な鍵だけを手渡す。塞ぎ忘れという失敗の形が、原理的に消えます。セキュリティの世界で「デフォルト拒否」と呼ばれる基本原則を、ファイルシステムの土台そのもので実現した形です。

実装も徹底しています。マージ予定の説明によると、FailFSはシステムの起動初期にカーネル内部で一度だけマウントされ、どのマウント名前空間にも属しません。ユーザー側から新たにマウントすることはできず、その上に別のものを重ねてマウントすることもできず、マウント一覧にも姿を見せません。外から手出しできる隙を、設計の段階で断ってあります。それでいて、ドライバー本体のコードは200行に満たない小ささです。何もしないのだから短くて済む、というわけです。
なお、FailFSには先にカーネルへ取り込まれた兄弟分としてNULLFSがあります。こちらは中身が永遠に空っぽで書き換えられないディレクトリを提供するもので、ファイルを探すとENOENT(そんなものはありません)が返ります。「対応していません」と答えるFailFSとは、返事の中身が少し違います。NULLFSは本来のルートファイルシステムの下に敷く不変の底として使うことを想定したもので、役割も別です。
動的リンクの実行ファイルが動かない制約
徹底した設計には、はっきりした副作用もあります。現状では、FailFSに完全に閉じ込められたプロセスは、ふつうの実行ファイルの多くを起動できません。
Linuxの実行ファイルの多くは動的リンクという方式で作られていて、起動時に「/lib64/ld-linux-x86-64.so.2」のような絶対パスで指定されたローダー(プログラムを組み立てて動かす係)を読み込む必要があります。ところがFailFSの中では絶対パスの解決ができないので、ローダーにたどり着けず、起動そのものが失敗します。Brauner氏自身がこの挙動をテストコードつきで明記しており、隠された不具合ではなく、把握済みの制約です。
この点からも分かるように、FailFSは一般の利用者がパソコンに設定して使うものではありません。サンドボックスを実装する開発者のための部品です。これを入れればパソコンが安全になる、という話ではない点は押さえておきたいところです。
今後の見通しと限界
FailFSはまだLinuxに入ったわけではありません。現在はVFSの開発ブランチに投入され、「Linux 7.3」向けと印がつけられた段階で、近くLinux 7.3のマージウィンドウ(新機能の受け入れ期間)で提出される見込みです。ただし、Linus Torvalds氏をはじめとする主要開発者から異論が出れば、この予定は変わりえます。続くパッチでは、FailFSを起点として使うための新しいシステムコールfchroot()なども用意されており、サンドボックス構築の道具立てとして整えられていく途中です。
また、ファイルを取り上げただけでサンドボックスが完成するわけではありません。プロセスにはシステムコールもネットワークもプロセス間通信も残っていて、悪さをする経路はほかにもあります。FailFSが受け持つのは、あくまでファイルアクセスの制御という一区画です。
それでも、「守りたいものを数え上げるより、渡すものを数え上げるほうが確実」という考え方そのものは、ソフトウェアに限らず通じる話です。塞ぎ忘れの心配がない空っぽの部屋を最初に用意する——何もできないファイルシステムは、その部屋を用意するための、いちばん短い答えなのかもしれません。
出典
この記事は、以下の情報をもとに執筆しました。
Hackadayの紹介記事:This Filesystem Is Born To Fail(2026年8月7日)
Phoronixの報道:Linux 7.3 Looks Like It Will Upstream FailFS(2026年8月3日)
パッチ投稿(一次情報):fs: add failfs(LWN.net掲載のパッチシリーズ)


コメント