更改默认mkstemp的文件权限

时间:2014-08-12 07:39:41

标签: c file ubuntu-12.04 umask mkstemp

我在C中调用以下代码:

 fileCreatefd = mkstemp(fileName);

我看到该文件是使用权限600(-rw -------)创建的。我想将此临时文件创建为-rw-rw-rw -

我试过玩umask但是只对文件权限应用了一个掩码 - 至少这是我的理解。那么如何创建具有权限666的文件?

由于

2 个答案:

答案 0 :(得分:1)

您无法使用mkstemp创建0666。如果对您的应用程序来说足够了,可以使用fchmod更改权限。

fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)

答案 1 :(得分:1)

mkstemp()函数从模板生成唯一的临时文件名,创建并打开文件,并返回文件的打开文件描述符。

模板的最后六个字符必须是“XXXXXX”,并且这些字符将替换为使文件名唯一的字符串。由于它将被修改,因此模板不能是字符串常量,而应该声明为字符数组。

使用权限0600创建文件,即仅为所有者读取加写入。 (In glibc versions 2.06 and earlier, the file is created with permissions 0666, that is, read and writefor all users。)返回的文件描述符提供对文件的读写访问权限。该文件使用open(2) O_EXCL标志打开,保证调用者是创建文件的进程。

更一般地说,mkstemp()的POSIX规范没有说明文件模式,因此应用程序应确保在调用{{1}之前正确设置其文件模式创建掩码(umask(2)) }(和mkstemp())。

创建文件后使用mkostemp()更改文件权限。