umask EXPR
umask

将进程的 umask 设置为 EXPR 并返回前一个值。如果省略 EXPR,则仅返回当前 umask。

Unix 权限 rwxr-x--- 表示为三组三位二进制位,或三个八进制数字:0750(前导 0 表示八进制,不是数字之一)。umask 值是一个表示已禁用权限位的数字。传递给 mkdirsysopen 的权限(或“模式”)值会因你的 umask 而改变,因此,即使你告诉 sysopen0777 权限创建文件,如果你的 umask 是 0022,则该文件实际上将以 0755 权限创建。如果你的 umask0027(组不能写入;其他人不能读取、写入或执行),则传递 sysopen 0666 将创建一个模式为 0640 的文件(因为 0666 &~ 0270640)。

这里有一些建议:为常规文件(在 sysopen 中)提供 0666 的创建模式,为目录(在 mkdir 中)和可执行文件提供 0777 的创建模式。这给了用户选择自由:如果他们想要受保护的文件,他们可以选择 022027 甚至特别反社会的 077 进程 umask。程序很少(如果不是永远)做出最好留给用户做的策略决策。例外情况是写入应保持私密的文件:邮件文件、Web 浏览器 cookie、.rhosts 文件等。

如果你的系统上未实现 umask(2),并且你正在尝试限制对 你自己 的访问(即 (EXPR & 0700) > 0),则引发异常。如果未实现 umask(2),并且你没有尝试限制对自己的访问,则返回 undef

记住,umask 是一个数字,通常以八进制形式给出;它不是八进制数字的字符串。另请参见 oct,如果你只有字符串。

可移植性问题:perlport 中的“umask”