我有一个可写的目录。如果我在其中创建另一个目录使用
mkdir("test", 0777);
这是否使测试目录可写?
如果我只使用
mkdir("test");
它是否从其父目录继承可写属性?
如果没有,有没有办法让它继承。这样我就不必单独使其可写?
不,目录和文件都不会从父元素继承属性。但是test
将是世界可写的,因为您使用0777
. 我们有 3 个八进制数字,这些数字依次代表资源的所有者、组和世界的权利。因为 8 是 2 的 3 次方,我们可以用每个八进制数字表示 3 个状态(因为 4+2+1=7),具体取决于设置的值(这是一个位掩码,即基于 2 的幂,便于按位操作操作)
1 = executable
2 = writable
4 = readable
你两个假设的选项都不正确。结果权限既不是精确的 777
,也不是从父目录“继承”的。
要了解会发生什么,您需要了解两点:
umask()
mkdir()
第二个参数不仅仅是“确切的权限” 。umask会修改它。所以最终结果可能(并且,最好的机会是 - 将会)与777
.还有一点很重要 - Windows 权限系统与 *nix 不同 - 在 Win 系统下工作时,您不能依赖上述描述。
mkdir 的第二个参数是新目录的访问掩码。
mkdir( 'test', 0777 );
将在您当前的位置 ( ) 创建目录 testgetcwd()
并使其对所有人都可写。
访问权限不被继承,为每个文件和目录单独设置