mkdir系统调用创建权限0755,而不是0777

mkdir system call creates permissions 0755 instead of 0777

本文关键字:0777 0755 系统调用 创建 权限 mkdir      更新时间:2023-10-16

我在使用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

并使用您的程序重试