Shell-Script

如何暫時離開 fakeroot 環境

  • April 20, 2020

要執行一些測試,我想撤銷文件夾的寫權限。這是一個最小的例子:

$ 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 權限嗎?

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

引用自:https://unix.stackexchange.com/questions/581376