Ubuntu
使用 fakeroot 更改權限的問題
我不明白為什麼當我
chmod
使用fakeroot
.最初,該文件具有以下權限:
-rwxr-xr-x a.txt*
當我嘗試使用 chmod 更改文件的權限時,它工作正常:
chmod 111 a.txt ---x--x--x a.txt*
當我用它執行它時,
fakeroot
它似乎無法正常工作。它正確設置了組和其他的權限,但不設置使用者的權限。無論chmod
命令中的第一個值是什麼,都設置了讀取和寫入的權限。fakeroot chmod 111 a.txt -rwx--x--x a.txt*
我錯過了什麼嗎?
Fakeroot 不會執行所有文件元數據更改,這就是重點:它只是假裝在其下執行的程序。Fakeroot 不會進行它不能做的更改,例如更改所有者。它也不會執行可能導致失敗的更改。例如,以下程式碼以 root 身份執行時成功,因為無論權限如何,root 都可以打開文件:
chmod 111 a.txt cp a.txt b.txt
但是當以非 root 使用者身份執行時,
cp
由於無法讀取而失敗a.txt
。為了避免這種情況,chmod
在 fakeroot 下不會刪除使用者的權限。Fakeroot 確實假裝為它正在執行的程序執行更改。
$ stat -c "Before: %A" a.txt; fakeroot sh -c 'chmod 111 a.txt; stat -c "In fakeroot: %A" a.txt'; stat -c "After: %A" a.txt Before: -rwx--x--x In fakeroot: ---x--x--x After: -rwx--x--x
一般而言,在 fakeroot 內完成的文件元數據更改不能保證在 fakeroot 呼叫中繼續存在。這才是重點。進行一次 fakeroot 呼叫,該呼叫既可以執行元數據更改,也可以執行您想要對更改後的元數據執行的任何操作(例如打包存檔)。