打开使用C编写的文件时权限被拒绝



我用文件描述符做了一些简单的练习,代码如下:

int main(int argc, char *argv[]){
int fd1 = open("etc/passwd", O_RDONLY);
int fd2 = open("output.txt", O_CREAT,O_TRUNC,O_WRONLY);
dup2(fd1,0);
close(fd1);
dup2(fd2,1);
close(fd2);
}

每当我试图打开";output.txt";我得到以下错误:

Unable to open 'output.txt': Unable to read file '/home/joao/Desktop/Exercicios/output.txt' (NoPermissions (FileSystemError): Error: EACCES: permission denied, open '/home/joao/Desktop/Exercicios/output.txt').

尽管我相信一些错误是指VSCode,但我无法在任何地方打开该文件。以下是我在执行";ls-l";在具有.c文件、可执行文件和";output.txt":

---------T 1 joao joao     0 jun  9 21:54 output.txt
-rwxrwxr-x 1 joao joao 16784 jun  9 21:54 test
-rw-rw-r-- 1  700 joao   387 jun  9 21:54 teste.c

我该怎么解决这个问题?

这:

int fd2 = open("output.txt", O_CREAT,O_TRUNC,O_WRONLY);

是不对的所有标志都在第二个参数中,与按位或组合,第三个用于";"模式";,即访问权限。当然,请参阅手册页面了解更多详细信息。

所以,它应该是:

const int fd2 = open("output.txt", O_CREAT | O_TRUNC | O_WRONLY, S_IRWXU);

这将以模式S_IRWXU打开,即仅为所有者授予读/写/执行权限。

相关内容

  • 没有找到相关文章