hum*_*ace 5 process chroot files namespace
出于这个问题的目的,让我们假设文件/path/to/file
系统中有一个文件 ( ) 具有如下特定内容:
$> cat /path/to/file
this is the content of the
file /path/to/file
Run Code Online (Sandbox Code Playgroud)
我对几乎所有正在运行的进程(并具有读取此文件的权限)、读取此内容感到满意。
但是(这是问题的核心)应该有一个特定的过程,在读取时/path/to/file
应该提供不同的文件内容。
$> cat /path/to/file
this is the DIFFERNT content of the
file /path/to/file
Run Code Online (Sandbox Code Playgroud)
如何以某种方式欺骗特定进程的文件内容?
我的一些猜测,走哪条路将是与以下相关的孤独:
chroot
诡计$LD_PRELOAD
勾搭技巧我的平台是 GNU/linux,但如果有一种 POSIX 方式来实现它会更好:)
更新
什么是好的解决方案/答案?
一个好的解决方案/答案的标准是可以实现“特定进程的不同文件内容”,而无需 root 用户的交互,即使理想情况下,欺骗文件首先不应该是用户可写的。
另一个好的标准是,显示给进程的文件进程的修改是特定的,理想情况下没有竞争条件。
Mozilla firefox 使用 2 个 zip 存档/usr/lib/firefox/omni.ja
和/usr/lib/firefox/browser/omni.ja
,其中包含相当多的 firefox 代码(主要是用 Javascript 编写的内容),通过欺骗文件,我将能够修改我的 firefox 版本(包括一些我无法再实现的功能)扩展,提供放弃 XPCOM 支持和不喜欢插件签名强制)
是的,挂载命名空间是一种方法:
$ 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
Run Code Online (Sandbox Code Playgroud)
以上zsh
用于恢复被劫持的cat命令的原始用户的uid/gids。