umask EXPR
umask

設定程序的 umask 為 EXPR 並傳回前一個值。如果省略 EXPR,只會傳回目前的 umask。

Unix 權限 rwxr-x--- 表示為三組三個位元,或三個八進位數字:0750(開頭的 0 表示八進位,不是數字之一)。umask 值就是一個代表已停用權限位元的數字。傳遞給 mkdirsysopen 的權限(或「模式」)值會受到 umask 修改,因此即使您告訴 sysopen 以權限 0777 建立檔案,如果您的 umask 是 0022,那麼檔案實際上會以權限 0755 建立。如果您的 umask0027(群組無法寫入;其他人無法讀取、寫入或執行),那麼傳遞 0666sysopen 會建立模式為 0640 的檔案(因為 0666 &~ 0270640)。

以下是建議:提供常規檔案的建立模式 0666(在 sysopen 中),以及目錄(在 mkdir 中)和可執行檔案的建立模式 0777。這使用戶可以自由選擇:如果他們想要受保護的檔案,他們可能會選擇 022027,甚至特別反社會的遮罩 077。程式很少會(如果有的話)做出更適合使用者決定的政策決定。例外情況是寫入應該保密的檔案:郵件檔案、網路瀏覽器 Cookie、.rhosts 檔案等。

如果您的系統未實作 umask(2),而您正在嘗試限制對 自己 的存取(即 (EXPR & 0700) > 0),則會引發例外。如果未實作 umask(2),而您並未嘗試限制對自己的存取,則會傳回 undef

請記住,遮罩是一個數字,通常以八進制表示;它不是八進制數字字串。如果您只有一個字串,請參閱 oct

移植性問題:perlport 中的「umask」