系统调用“打开”模式不起作用

系统调用“打开”模式不起作用

我正在编写一个关于打开带有标志的文件的简单代码O_CREAT | O_WDONLY | O_EXCL。代码如下所示:

int fd = open(fileName, O_WRONLY | O_CREAT | O_EXCL, 0777);

除了模式(权限)部分之外,它运行良好。无论我在其他部分放入什么,它总是会创建一个带有r-x.

例如,从上面的代码创建的文件的权限如下所示。

rwxrwxr-x.

这不是777吧?我缺少什么?

答案1

位在umask创建文件时,当前进程的信息将被清除。在这种情况下,看起来 umask 是0002(没有世界写入)。称呼umask()在打电话open()改变这一点之前。

Soapbox:请不要创建世界可写的文件,除非您真的当然这就是你想要的。 umask其存在就是为了让您和您的用户免受此类漏洞的侵害。

相关内容