我们遇到了一个问题,在(随机)的情况下,无法创build特定的文件,也不能删除。 该文件不存在,任何尝试写入(甚至作为根在控制台)导致“权限被拒绝”消息。
一个自动化的过程把文件传送到这个位置,如下所示:
在“/ dirX /”下,file001到file999之间的文件已被传输,但file666除外。 导致文件666导致权限被拒绝的错误。
我们试过这个:
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, " mv", 2) = 2 : cannot rename write(2, " : cannotren".., 16) = 16 file666write(2, " file 6 6 6".., 17) = 17 to write(2, " to ", 4) = 4 otherfile666write(2, " bk . txt", 6) = 6 : write(2, " : ", 2) = 2 Permission deniedwrite(2, " P ermissiond".., 17) = 17
ls -hal输出
FJSV>host{root}: ls -hal * -rw-r--r-- 1 a817768 nologin 34K Jun 26 14:56 file666
Solaris ppriv命令可用于debugging权限被拒绝的问题。 尝试这个:
ppriv -e -D touch /dirX/file666
有什么结果来自:
ls -hal /dirX/file666 lsattr /dirX/file666
这个文件有没有权限或属性? 我的第一,虽然,也许+我不可变的标志设置它。
你也可以使用'strace'来找出什么是允许拒绝错误,如果它是不明显的 – 'strace rm / dirX / file666'
而且,当他们运行fsck时,他们是否使用坏块检查来运行它? (-C)
对于什么是值得,“权限被拒绝”(EACCES),而重命名或删除文件指向更新目录的问题,而不是文件本身的问题。 这是一个远射,但你可以尝试删除和重新创build目录。
这一行:
mv /dirX /dirSomethingElse #permission denied.
如果准确的话,也指向根目录的问题。 我倾向于重新运行fsck和/或驱动器的表面分析,然后重做你的testing。 像这样的随机性意味着文件系统损坏或坏的磁盘块。