将权限设置为777,生成的文件为775

时间:2015-03-30 22:42:08

标签: ubuntu file-permissions

我正在尝试将一个字符串写入文件,并将文件的权限设置为777.结果文件为空,并具有775的权限。模式掩码似乎是正确的,当我用access()检查时,它返回0.我可以将文件chmod到777(不使用sudo)。发生了什么事?

运行ubuntu 14.10。硬盘驱动器是ext3 / 4。

if (argc == 1) {
    int fd = open ("sampleFile", O_CREAT , S_IRWXU | S_IRWXG | S_IRWXO);
    int writ = 0xDEADBEEF;

    if (fd != -1) {
        char str [] = "My permission should be set to 777.";
        writ = write (fd, &str, (int)strlen (str));
        //writ = access ("sampleFile", W_OK);
        close (fd);

        printf ("(%o) %s\n", writ, str);
        return 0;
    }

    else {
        printf ("Couldn't make sampleFile in pwd.\n");
        return 1;
    }
}

1 个答案:

答案 0 :(得分:2)

你有两个问题:

  1. write()"的第二个参数必须包含以下访问模式之一:O_RDONLYO_WRONLY或{{ 1}}&#34 ;.将O_RDWR更改为O_CREAT以允许写入文件。

  2. O_CREAT | O_WRONLY修改了创建文件的模式。您的umask可能是umask。 (002 umask可防止您意外创建世界可写文件。)创建后,您可以使用002更改权限。:fchmod