Linux

為什麼文件完全權限模式與目錄不同?

  • August 25, 2019

我讀到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 的值沒有被減去,而是被屏蔽掉了。減法意味著從一位進位到下一位,並且減去例如0007from0666將導致0657. 這不是 umask 的工作方式,而且沒有用處。

請注意,umask 僅在創建文件時使用*,* Linux手冊頁也將其稱為“文件模式創建遮罩”。之後,chmod()可用於更改權限,不受 umask 限制。

因此,如果一個文件不能同時具有讀、寫、執行權限,

當然,他們可以。它對不可執行的文件沒有用。

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