Linux
為什麼文件完全權限模式與目錄不同?
我讀到
Linux Command Line and Shell Scripting Bible by Richard Blum Christine Bresnahan
:從對象的完整權限集中減去 umask 值。文件的完全權限是模式 666,但對於目錄是 777。
因此,如果一個文件不能同時具有讀、寫、執行權限,那麼使用者是否必須在每次需要執行操作時更改文件。如果程序員需要測試他的程式碼,他應該怎麼做?那麼其他文件類型呢?提前致謝。
從對象的完整權限集中減去 umask 值。
這不是真的。或者至少它是不准確的並且被簡化為常見情況。
- 首先,基本值不是“完整的權限集”,而是創建文件的過程設置為文件權限。當然,對於正常文件,這通常是
0666
:想法是(比如說)文本編輯器不應該決定文件的權限應該是什麼,但應該允許使用者通過umask
.但是創建文件的程序不需要
0666
用作文件權限。對於私有文件(想想 SSH 密鑰),0600
將被使用,因此無論 umask 是什麼,除了所有者之外的其他人永遠無法訪問該文件。此外,對於執行檔,0777
可以使用,以便生成的文件是可執行的。對於目錄,
0777
這很常見,因為該x
位實際上與r
一般使用的位一樣必要。對於一般數據文件,它不是,所以這就是為什麼常見的情況是0666
文件和0777
目錄。使用的基本權限當然可以是其他東西,但這些可能是常見的情況。
- 其次,umask 的值沒有被減去,而是被屏蔽掉了。減法意味著從一位進位到下一位,並且減去例如
0007
from0666
將導致0657
. 這不是 umask 的工作方式,而且沒有用處。請注意,umask 僅在創建文件時使用*,* Linux手冊頁也將其稱為“文件模式創建遮罩”。之後,
chmod()
可用於更改權限,不受 umask 限制。因此,如果一個文件不能同時具有讀、寫、執行權限,
當然,他們可以。它對不可執行的文件沒有用。