【发布时间】:2019-08-08 11:32:26
【问题描述】:
我正在尝试创建一个对用户组和其他人具有读、写、执行权限的文件,但这没有发生。
我尝试了以下命令
fd = open("file1",O_CREAT| O_WRONLY, 0777);
这给的权限是
rwx-xr-r-x
我想要
rwxrwxrwx
我尝试修改其他模式,例如
fd2 = open ("file2",O_WRONLY | O_CREAT | O_TRUNC, 0644 );
他们授予了正确的权限
rw-r--r--
我哪里错了?
我的代码
#include <fcntl.h>
#include <stdio.h>
int main(void){
int fd;
fd = open("file1",O_CREAT| O_WRONLY, 0777);
int fd2;
fd2 = open ("file2",O_WRONLY | O_CREAT | O_TRUNC, 0644 );
}
【问题讨论】:
-
查看 man7.org/linux/man-pages/man2/open.2.html 以了解 O_CREAT 标志的可用模式,并按位或选择多个模式。
-
阅读umask - 它控制进程可以设置的文件权限。
-
这不是重复的,链接的答案不会尝试显示任何操纵 umask 的代码,因此 OP 可以创建一个实际上具有 0777 权限位的文件
-
@nos 好吧,这是乔纳森的副本
-
@nos :我不同意。 open() not setting file permissions correctly 是完全重复的(
0666与0777除外,这与问题无关)。同样的问题,同样的解决方案。如果您能提供更好的答案,则可以将其添加到另一个问题中,并且该问题仍应标记为重复。
标签: c linux unix operating-system