首先Perl mkdir 的语法是:
1.mkdir('dir', 代表九位二进制数字的十进制值)
设置775,则该值为十进制的509,即二进制的111111101
此数值不能设置为111111111即十进制的511即777。
2.mkdir('dir', 0常见unix3位权限)
可以设置777。
然后在linux下时,由于umask的原因,只能设置为755。
因为创建文件时的权限是umask和mode的&运算的值。
具体原因参见:http://www.perlmonks.org/?node_id=543251
可用下列代码验证:
$ perl -e'printf "umask: %04o\n", umask; printf "mode: %04o\n", 0777; +printf "masked mode: %04o\n", 0777 & ~umask' umask: 0022 mode: 0777 masked mode: 0755
解决办法如下:
1.可以设置umask时,如下代码:
my $old_umask = umask;
umask 0;
mkdir('test_dir', 0777);
umask $old_umask;
2.或者创建完后赋予权限:
chmod test_dir, 777
本文详细解析Perl中mkdir命令的使用,包括其语法、权限设置方式及umask概念,通过实例验证权限设置过程,并提供了解决方案以在Linux环境下实现期望的权限配置。

1023

被折叠的 条评论
为什么被折叠?



