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