如何暂时离开fakeroot环境

如何暂时离开fakeroot环境

为了运行一些测试,我想撤销文件夹的写入权限。这是一个最小的例子:

$ mkdir test
$ chmod a-w test
$ touch test/test || printf '%s\n' "write permissions successfully revoked"
touch: cannot touch 'test/test': Permission denied
write permissions successfully revoked

但是,如果我用 fakeroot 运行它,这不起作用:

$ fakeroot sh  
# mkdir test
# chmod a-w test
# touch test/test || printf '%s\n' "write permissions successfully revoked"
# ls test
test

需要解释为什么这不起作用,请参阅这个问题,例如:更改权限的问题

然而,我的问题是:我该如何解决这个问题?我可以暂时禁用该chmod命令的 fakeroot 吗?或者我可以永久更改 fakeroot 权限吗?

答案1

fakeroot正在使用LD_PRELOADhack 加载一个小型共享库,该库覆盖了一些库函数,例如chmod(2)chown(2)等。请参阅ld.so(8)详细信息请参阅联机帮助页(该网站上还有很多示例)。

LD_PRELOAD只需在未设置环境变量或设置为空字符串的情况下运行命令,就不会加载该库:

$ fakeroot sh
$ chown root:root fo.c
$ LD_PRELOAD= chown root:root fo.c
chown: changing ownership of 'fo.c': Operation not permitted

相关内容