Ubuntu

使用 fakeroot 更改權限的問題

  • April 20, 2020

我不明白為什麼當我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 呼叫,該呼叫既可以執行元數據更改,也可以執行您想要對更改後的元數據執行的任何操作(例如打包存檔)。

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