我認為理解 umask 的最佳方式是說 umask 用於撤銷權限,而不是設定權限。
umask 設定在建立檔案或目錄時必須從系統預設值中移除哪些權限。
例如,遮罩 0022 表示您不希望群組和其他人修改檔案。
預設值 0666 rw-.rw-.rw-
umask 0022 ---.-w-.-w-
最終 0644 rw-.r--.r--
這表示從現在起任何檔案都將具有 0644 權限。
重要的是要理解 umask 會從系統預設值中撤銷、刪除權限,因此它無法授予系統預設值沒有的權限。在上面的範例中,使用 666 系統預設值,您無法使用 umask 建立具有執行權限的檔案。如果您想授予更多權限,請使用 chmod。
請注意,系統預設權限與 PHP 無關(它們取決於伺服器設定)。PHP 有一個預設的 umask,它會在系統預設基本權限之後套用。檔案和目錄有不同的系統預設基本權限。
通常,檔案的系統預設權限為 666,目錄的系統預設權限為 0777。通常,預設的 PHP umask 為 0022