gpt4 book ai didi

php umask(0) 目的是什么

转载 作者:IT老高 更新时间:2023-10-28 12:08:39 27 4
gpt4 key购买 nike

在php中使用umask(0);的目的是什么?

我已经看过几次了,但无法从文档中弄清楚它究竟做了什么。

有人可以解释一下,什么时候有用吗?

最佳答案

umask 设置为 0000(或只是 0)意味着新创建的文件或创建的目录最初不会被撤销权限。换句话说,零的 umask 将导致所有文件创建为 0666 或全局可写。 umask0 时创建的目录将是 0777

通常当您看到 umask(0) 时,应直接调用 chmod() 以显式设置新创建的文件或目录所需的权限到世界可写以外的东西。

在将 umask 设置为零时要小心! 这可能很危险,并且主要只对创建稍后必须由 Web 服务器写入的文件有用,当 Web 服务器以不同的方式运行时user 是一个“真正的”用户,他还需要能够修改由 Web 服务器创建的文件。否则,系统的默认 umask 很可能是类似 0022 的东西,可由文件所有者写入,但不能由其他人写入。在这种情况下,如果您以普通用户帐户登录机器,则在 PHP 下由 Web 服务器创建的文件将您可以写入。

与其创建全局可写文件,不如更明确地管理 Web 服务器正在写入的目录。如果在目录中创建的文件应该具有某些组权限,则建议在目录上设置 sgid 位,以便其中的新文件继承组所有权。需要访问该文件的用户应该是有权访问该文件的组的成员。这比创建世界可读、可写文件安全得多。

php > umask(0);
// Should get created as 666
php > touch('file1.txt');

// "2" perms revoked from group, others, gets created as 644
php > umask(022);
php > touch('file2.txt');

// All revoked (2,4) from group, others, gets created as 600
php > umask(066);
php > touch('file3.txt');

-rw-rw-rw- 1 me group 0 Aug 24 15:34 file1.txt
-rw-r--r-- 1 me group 0 Aug 24 15:35 file2.txt
-rw------- 1 me group 0 Aug 24 15:37 file3.txt

关于php umask(0) 目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com