mkdir系统调用创建权限0755,而不是0777
mkdir system call creates permissions 0755 instead of 0777
我在使用mkdir系统调用时获得的权限有问题。我知道事实上我说得对,它是八进制的,诸如此类。我测试过它,其中模式输入是一个整数,我可以用它来做数学运算,肯定是十进制的511。
#include <sys/stat.h>
#include <sys/types.h>
#include <cstdlib>
int main (int argc, char* argv[]) {
if (mkdir(argv[argc-1], 0777) == -1) {
perror(argv[0]);
return EXIT_FAILURE;
} // if
return EXIT_SUCCESS;
} // main
但当我创建一个目录并检查权限时,它总是0755而不是0777。
Access: (0755/drwxr-xr-x)
当我使用mkdir实用程序或chmod或任何它可以完美设置为0777的东西时。只是系统调用不起作用。
它也适用于较小的权限,比如我将模式设置为0111。
您的umask是0022?
用检查
$ umask
从你的壳里。
在这种情况下,使用将umask设置为零
$ umask 0
并使用您的程序重试