我们遇到了一个问题,即在(随机)情况下无法创建或删除特定文件。该文件不存在,任何写入它的尝试(即使在控制台上以 root 身份)都会导致“Permission Denied”消息。
一个自动化的过程已将文件 sftp'd 到此位置,如下所示:
在“/dirX/”下,file001 到 file999 已被传输,但 file666 除外。文件 666 导致权限被拒绝错误。
- 该文件不存在
- (以 root 身份)触摸 /dirX/file666 -> 权限被拒绝
我们试过这个:
mv /dirX /dirSomething
touch /dirSomething/file666 # OK!
mv /dirSomething /dirX #OK!
cat /dirX/file666 #OK!
rm /dirX/file666 #permission denied
mv /dirX /dirSomethingElse #permission denied.
我们的支持人员使系统脱机并运行 fsck,它确实发现并纠正了 1 个错误。这并没有解决问题,也没有阻止它再次发生。
就好像文件系统讨厌那个特定的名字并且拒绝对它做任何事情。
什么可能导致这样的问题?
编辑:缩写truss
输出:
pathconf("file666", 20) = 1
acl("file666", GETACLCNT, 0, 0x00000000) = 4
stat64("file666", 0xFFBFEC90) = 0
acl("file666", GETACL, 4, 0x00027928) = 4
lstat64("otherfile666", 0x00026630) Err#2 ENOENT
rename("file666", "otherfile666") Err#13 EACCES
fstat64(2, 0xFFBFDF10) = 0
mvwrite(2, " m v", 2) = 2
: cannot rename write(2, " : c a n n o t r e n".., 16) = 16
file666write(2, " f i l e 6 6 6".., 17) = 17
to write(2, " t o ", 4) = 4
otherfile666write(2, " b k . t x t", 6) = 6
: write(2, " : ", 2) = 2
Permission deniedwrite(2, " P e r m i s s i o n d".., 17) = 17
ls -hal 输出
FJSV>host{root}: ls -hal *
-rw-r--r-- 1 a817768 nologin 34K Jun 26 14:56 file666
Solaris
ppriv
命令可用于调试Permission Denied问题。尝试这个:结果是什么:
此文件是否有任何权限或属性?不过,我的第一个可能是 +i 不可变标志设置在上面。
你也可以使用'strace'来找出是什么给了权限被拒绝的错误,如果它不是很明显 - 'strace rm /dirX/file666'
另外,当他们运行 fsck 时,他们是否使用坏块检查来运行它?(-C)
对于它的价值,重命名或删除文件时的“权限被拒绝”(EACCES)指向更新目录的问题,而不是文件本身的问题。这是一个很长的镜头,但您可以尝试删除并重新创建目录。
这一行:
如果准确,也说明根目录有问题。我倾向于重新运行 fsck 和/或对驱动器进行表面分析,然后重做测试。像这样的随机性表明文件系统损坏或磁盘块损坏。