/path/to/file
この問題を解決するために、ファイルシステムに次の内容のファイル()があるとしましょう。
$> cat /path/to/file
this is the content of the
file /path/to/file
私はほとんどすべてのプロセスを実行し(このファイルへの読み取りアクセス権を持っている)、これを読むのに問題はありません。
しかし(これが問題の核心である/path/to/file
)は、読み取り時に別のファイルコンテンツを提供する必要がある特定のプロセスです。
$> cat /path/to/file
this is the DIFFERNT content of the
file /path/to/file
特定のプロセスのファイル内容をどのようになりすましますか?
どのルートを選択するかについての私の推測のいくつかは、次のような解決策です。
- シンボリックリンクのヒント
- (linux)名前空間(ファイルシステム名前空間)のヒント
chroot
いたずら$LD_PRELOAD
フッキング技術- ファイルシステムの上書き
私のプラットフォームはGNU / Linuxですが、POSIX方式があれば良いでしょう:)
修正する
良い解決策/答えは何ですか?
良い解決策/答えの基準は、理想的には、偽装されたファイルが最初にユーザーが書き込むことができないにもかかわらず、rootユーザーとの対話なしに「特定のプロセス用の他のファイルコンテンツ」を取得できることです。
もう一つの良い基準は、プロセスによって表示されるファイルの変更がプロセスごとに行われ、競合状態がないことが望ましいことです。
背景
/usr/lib/firefox/omni.ja
Mozilla Firefoxは、多くのFirefoxコード(ほとんどのJavascriptで書かれた項目)を含む2つのzipアーカイブを使用します/usr/lib/firefox/browser/omni.ja
。ファイルをスプーフィングしてFirefoxのバージョンを変更することができます(Droppedが提供している場合は拡張機能で実装できなくなったいくつかのアイテムを含む)。 XPCOMをサポートし、アドオン署名の実施が好きではありません)
ベストアンサー1
はい、名前空間をマウントする方法は1つあります。
$ cat file
foo
$ cat other-file
bar
$ sudo unshare -m zsh -c 'mount --bind other-file file; USERNAME=$SUDO_USER; cat file'
bar
$ cat file
foo
zsh
上記は、ハイジャックされたcatコマンドの元のユーザーのuid / gidsを復元するために使用されます。