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

时间:2016-07-24 00:59:00

标签: c++ bash c++11 unix permissions

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

1 个答案:

答案 0 :(得分:4)

你的umask是0022?

检查
@if (Auth::check())
    //User is logged in
    //HTML that we want to show to authenticated user
@else
    //User is not logged in
    //HTML that we want to show to general public
@endif

来自你的shell。

在这种情况下,使用

将umask设置为零
$ umask

再次尝试使用您的程序