C linux mkdir函数可以';我不授权完全许可

C linux mkdir函数可以';我不授权完全许可,c,linux,permissions,mkdir,C,Linux,Permissions,Mkdir,我正在测试mkdir函数以创建新目录: folder = mkdir("./linux", 511); 或 或 如您所见,我试图授权对该目录的完全权限,但下面是ls-l | grep linux: drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux 为什么我不能授权组和其他组的写入权限 更新: 奇怪的事情,就像你们告诉我的,我试过umask。它与umask(S|IWGRP)或umask(S|IWOTH)一起工作,但与um

我正在测试
mkdir
函数以创建新目录:

folder =  mkdir("./linux", 511);

如您所见,我试图授权对该目录的完全权限,但下面是
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)
一起失败,有什么想法吗?

检查umask函数:man 2 umask由系统调用设置的权限,如
mkdir
open
总是被当前进程的
umask
屏蔽。您可以使用该功能更改当前umask;完成后请确保将其设置回原位。

来自
man 2 mkdir

参数模式指定要使用的权限。进程的umask以通常的方式修改它:所创建目录的权限为(mode&~umask&0777)


我建议您查看您的umask-它可能设置为
0022
。尝试使用
chmod
post-
mkdir

而不查找
mkdir()
,“511”在我看来很奇怪,因为它没有向组和其他用户分配相同的权限。此外,您还提供了
mkdir()
的两种用法,以及一个测试示例,这两种用法都不属于任何一种。在
ls
测试之前,您使用了什么版本?mkdir的手册(2)页上说,该模式与提供的777相同,因此应该可以工作。你能提供更多的细节吗?您使用的linux发行版和发行版是什么?我希望这也是您正在使用的一个完全标准的glibc?这不是对您问题的回答,但您应该使用
mkdir(“./linux”,0777)
,而不是
mkdir(“./linux”,511)
@tjarratt Ubuntu EGLIBC 2.13-0ubuntu13@KeithThompson是 啊更直观的是,我认为在
mkdir
之后执行
chmod
是一个更干净的解决方案。我们可以得到一个代码示例吗?这是否意味着我可以调用
mkdir(“dir”,unmask(0777))
以创建具有完全权限的目录?或者不可能创建具有完全权限的目录?
folder = mkdir("./linux", S_IRWXU | S_IRWXG | S_IRWXO);
drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux