访问我使用同一应用程序创建的文件时 Linux 中的权限被拒绝

Permission denied in Linux when accessing a file I created using the same app

我正在开发一个需要存储一些信息的程序,我决定为其使用一个简单的文件。

程序启动时会执行以下代码,如果文件存在则以附加模式打开文件,如果不存在则创建文件 (第一次加载程序时,它应该在下次加载时创建它,它只需要使用相同的文件)

if((fd = open(path, O_APPEND|O_CREAT|O_RDWR, 666)) < 0)
{
    perror("Database open failed");
}
else if(chmod(path, 666) < 0)
{
    perror("Database set permissions failed");
}
else if((stream = fdopen(fd, "a+")) == NULL)
{
    perror("Database get stream failed");
}

当文件不存在时,创建成功,程序运行正常。但是当文件已经存在时,它会显示 "Permission denied",即使它是创建该文件的同一用户下的同一程序。

更多细节:

谢谢!

open() 的模式需要是八进制,即 666 应该是 0666

最好使用模式的符号常量。

根据 open()man pagemode 字段的(部分)所需值为

S_IRWXU

00700 user (file owner) has read, write and execute permission

S_IRUSR

00400 user has read permission S_IWUSR 00200 user has write permission

S_IXUSR

00100 user has execute permission

等等。

所以,我们可以清楚地看到,表示法是八进制。您需要使用 0666 表示八进制表示法。