如何给予所有人写许可?

时间:2018-10-31 18:46:51

标签: c unix permissions system-calls umask

以下代码运行后,文件 tasty 的权限位设置为0700,这不是预期的。

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    int fild = creat("tasty", 0722);
    close(fild);
    return 0;
}

如何允许所有人写入文件?

1 个答案:

答案 0 :(得分:3)

您的shell的umask可能为022,这意味着创建的所有新文件都将清除指定的位(即组写入和其他写入)。

在创建文件之前,您需要将umask设置为0:

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>

int main()
{
    umask(0);
    int fild = creat("tasty", 0722);
    close(fild);
    return 0;
}