C中的open()函数使用错误的权限创建新文件?

时间:2018-11-12 09:28:54

标签: c

我试图为其他用户的以下用户创建具有rwx权限的新文件:

int fd = open (myfile, O_CREAT, S_IRWXO);

但是当我检查时,“ myfile”仅对其他用户具有r-x权限。 我使用Ubuntu 12.0。

发生了什么问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

这是因为umask的默认值为022,因此,在创建新文件时,写入权限会自动删除。
为了解决您的问题,请删除umask(或重新配置):

$ umask 000

或在您的程序中使用umask()函数

mode_t umask(mode_t mask);
umask(0)

但是要小心,给所有人写和执行特权可能很危险