Shell-Script
如何暫時離開 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 權限嗎?
fakeroot
正在使用LD_PRELOAD
hack 載入一個小型共享庫,該庫覆蓋了一些庫函式,如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