fopen和lsattr因权限问题而失败

时间:2020-08-27 19:37:02

标签: c linux permissions fopen

我编写了许多C语言程序,它们使用fopen在Linux上处理文件。但是,这个特殊的问题让我感到难过。

像往常一样,我有

FILE *filePtr = fopen(strFileName, "r");
if (!filePtr)
{
    printf("Unable to open %s - %s\n", strFileName, strerror(errno));
    return -1;
}

即使上面的代码以root身份运行,打印出的结果仍表明由于Unable to open /var/foo/bar - Permission denied而导致失败,并且

[root@MyDevice:/]# whoami
root
[root@MyDevice:/]# ls -al /var/foo/bar 
-rw------- 1 root root 1462272 Aug 26 00:00 /var/foo/bar
[root@MyDevice:/]# lsattr /var/foo/bar 
lsattr: Permission denied While reading flags on /var/foo/bar
[root@MyDevice:/]# df -h | grep root
/dev/root       3.5G  1.1G  2.2G  33% /
[root@MyDevice:/]# stat /var/foo/bar
  File: /var/foo/bar
  Size: 1462272         Blocks: 2864       IO Block: 4096   regular file
Device: b302h/45826d    Inode: 20046       Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-08-28 15:42:55.312623778 -0500
Modify: 2020-08-26 00:00:00.188294996 -0500
Change: 2020-08-28 15:42:53.362623778 -0500
 Birth: -

我有一个文件/var/foo/bar,其中/var挂载为/dev/mmcblk0p2 on / type ext4 (rw,relatime,i_version,data=ordered)。我在这里想念什么? fopen()lsattr都缺少根权限?

有趣的是,如果我删除了/var/foo/bar,那么对于我的(大型)程序的几次运行,一切都会恢复正常。但是,在某些时候发生了一些不好的事情,然后我又回到了这种情况。

更新:在文件上运行stat之后,后续的lsattr不再出现权限问题错误!是什么意思?!

0 个答案:

没有答案
相关问题