1

我有一个可写的目录。如果我在其中创建另一个目录使用

mkdir("test", 0777);

这是否使测试目录可写?

如果我只使用

mkdir("test");

它是否从其父目录继承可写属性?

如果没有,有没有办法让它继承。这样我就不必单独使其可写?

4

3 回答 3

1

不,目录和文件都不会从父元素继承属性。但是test将是世界可写的,因为您使用0777. 我们有 3 个八进制数字,这些数字依次代表资源的所有者、组和世界的权利。因为 8 是 2 的 3 次方,我们可以用每个八进制数字表示 3 个状态(因为 4+2+1=7),具体取决于设置的值(这是一个位掩码,即基于 2 的幂,便于按位操作操作)

1 = executable
2 = writable
4 = readable
于 2013-12-26T11:08:47.913 回答
1

你两个假设的选项都不正确。结果权限既不是精确的 777,也不是从父目录“继承”的。

要了解会发生什么,您需要了解两点:

  • 什么是umask。在 *nix 系统中,它是一个特殊的掩码,适用于新创建的文件系统元素(目录或文件。嗯,实际上,目录也是一个文件,但这是没有问题的)。您可以通过 PHP 在 PHP 中使用它umask()
  • mkdir()第二个参数不仅仅是“确切的权限” 。umask会修改它。所以最终结果可能(并且,最好的机会是 - 将会)与777.

还有一点很重要 - Windows 权限系统与 *nix 不同 - 在 Win 系统下工作时,您不能依赖上述描述。

于 2013-12-26T11:14:30.263 回答
0

mkdir 的第二个参数是新目录的访问掩码。

mkdir( 'test', 0777 );

将在您当前的位置 ( ) 创建目录 testgetcwd()并使其对所有人都可写。

访问权限不被继承,为每个文件和目录单独设置

于 2013-12-26T11:08:27.140 回答