我认为理解 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