在可写目录中创建的目录是否始终可写

  • 本文关键字:是否 创建 php writable
  • 更新时间 :
  • 英文 :


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

mkdir("test", 0777);

这是否使测试目录可写?

如果我只使用

mkdir("test");

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

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

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

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

  • 什么是乌马斯克。在 *nix 系统中,它是一个特殊的掩码,应用于新创建的文件系统元素(目录或文件。好吧,实际上,目录也是一个文件,但这无关紧要)。您可以通过 PHP 使用它umask()
  • 对于mkdir()第二个参数不仅仅是"确切权限"。Umask 将对其进行修改。因此,最终结果可能(并且,最好的机会是 - 将是)与777不同。

同样重要的是要认识到 - Windows 权限系统与 *nix 不同 - 在 Win 系统下工作时,您不能依赖上述内容。

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

1 = executable
2 = writable
4 = readable

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

mkdir( 'test', 0777 );

将在您当前位置(getcwd())创建目录测试,并使其对每个人都可写。

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

最新更新