在 Solaris 10 下,无法在 UFS 上创建或删除具有特定文件名的文件

在 Solaris 10 下,无法在 UFS 上创建或删除具有特定文件名的文件

我们遇到了一个问题,即(随机)某个特定文件无法创建或删除。该文件不存在,任何写入尝试(即使在控制台上以 root 身份)都会导致出现“权限被拒绝”消息。

自动化进程已将文件通过 sftp 传输到此位置,如下所示:

在“/dirX/”下,文件 001 至文件 999 都已转移,但文件 666 除外。文件 666 导致权限被拒绝错误。

  1. 该文件不存在
  2. (以 root 身份)touch /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

答案1

Solarisppriv命令可用于调试没有权限问题。试试这个:

ppriv -e -D touch /dirX/file666

答案2

结果是什么:

ls -hal /dirX/file666
lsattr /dirX/file666

此文件是否有任何权限或属性?我的第一个想法是,也许该文件上设置了 +i 不可变标志。

如果不明显的话,你也可以使用 'strace' 来找出导致权限被拒绝错误的原因 - 'strace rm /dirX/file666'

另外,当他们运行 fsck 时,他们是否使用坏块检查来运行它?(-c)

答案3

无论如何,在重命名或删除文件时出现“权限被拒绝”(EACCES) 表明更新目录时出现问题,而不是文件本身出现问题。这种情况不太可能发生,但您可以尝试删除并重新创建目录。

这一行:

mv /dirX /dirSomethingElse #permission denied.

如果准确,也表明根目录存在问题。我倾向于重新运行 fsck 和/或驱动器的表面分析,然后重新进行测试。这样的随机性表明文件系统损坏或磁盘块损坏。

相关内容