我正在testingmkdir
函数来创build一个新的目录:
folder = mkdir("./linux", 511);
要么
folder = mkdir("./linux", 0777);
要么
folder = mkdir("./linux", S_IRWXU | S_IRWXG | S_IRWXO);
正如你所看到的,我尝试授权给这个目录的完整权限,但是这里是ls -l | grep linux
ls -l | grep linux
:
drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux
为什么我不能授权组和其他人的写权限?
更新 :
奇怪的事情,正如你们告诉我,我尝试了umask
。 它可以与umask(S_IWGRP)
或umask(S_IWOTH)
但umask(S_IWGRP | S_IWOTH)
失败 ,有什么想法?
从man 2 mkdir
:
参数模式指定要使用的权限。 它以通常的方式被进程的umask修改:创建的目录的权限是(mode&umask&0777)。
我建议你看看你的umask – 它可能设置为0022
。 尝试一个chmod
post- mkdir
。
像mkdir
和open
这样的系统调用设置的权限总是被当前进程的umask
屏蔽。 您可以使用umask()
函数更改当前的umask; 一定要把它放回去。
检查umask函数: man 2 umask