我的用户 bob 无法访问他(理论上拥有)的文件。我正在运行 Fedora Core 8。展示可能比说出来更容易:
> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
> cd ./log
-bash: cd: log/: Permission denied
> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? the.log
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
drwxrwxr-x 7 bob bob 4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob 0 Jun 1 04:12 the.log
这ls -al
很奇怪。它会列出我没有权限查看的文件,但不显示权限?
那么问题是,这是什么原因造成的?我该怎么做才能修复它?
答案1
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
看起来 Bob 没有 ./log 的执行权限,所以他无法cd
执行该操作。
但
> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
表明他确实这样做了。但是看起来它们指向的并不是同一个文件(不同的权限、不同的 modtime)。
尝试sudo ls -ail ./log
看看ls -ail
inode 是否相同。
答案2
事情比文件系统损坏或 selinux 更简单。如您所见,您缺少日志目录的 x(可执行)权限。实际上,对于目录,x 意味着某人能够更改到该目录。只需执行“chmod +x log”来修复该权限,您就应该能够访问它。
答案3
当文件系统损坏或驱动器出现故障时,我曾见过类似的事情。修复方法通常是运行文件系统检查针对文件系统并让其纠正发现的错误。
答案4
这些文件可能设置了不可变或仅附加的扩展属性。我以前也遇到过这种情况,甚至 root 也无法删除该文件。
扩展属性可以通过“lsattr”查看,并通过“chattr”更改