繁体   English   中英

更改文件描述符的读/写权限

[英]Change read/write permissions on a file descriptor

我正在研究一个Linux C项目,我在使用文件描述符时遇到了麻烦。

我有一个孤立文件描述符(文件是open()'然后取消链接()'但fd仍然很好)具有只写权限。 原始后备文件具有完全权限(使用S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH创建),但是文件是使用O_WRONLY打开的。 是否可以复制文件描述符并将副本更改为O_RDWR?

psudo代码:


//open orphan file
int fd = open(fname, O_WRONLY, ...)
unlink(fname)
//fd is still good, but I can't read from it

//...

//I want to be able to read from orphan file
int fd2 = dup(fd)
//----change fd2 to read/write???----

提前致谢! -安德鲁

不,没有POSIX功能来改变打开模式。 您需要以读/写模式打开它。 但是,由于您创建了一个临时文件,我强烈建议您使用mkstemp 该函数在读/写模式下正确打开文件并取消链接 最重要的是,它避免了命名和创建文件时的竞争条件,从而避免了创建临时文件时的漏洞。

int fd = open(fname, O_WRONLY, ...)
int fd_ro = open(fname, O_RDONLY, ...)
unlink(fname)
{ write to fd }
close (fd);
read or execute(!) fd_ro

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM