Назад | Перейти на главную страницу

Невозможно создать или удалить файл с определенными именами файлов в UFS под Solaris 10

У нас возникла проблема, когда в (случайном) случае конкретный файл не может быть создан или удален. Файл не существует, любая попытка записи в него (даже с правами root на консоли) приводит к сообщению «Permission Denied».

Автоматизированный процесс отправил файлы в это место следующим образом:

в "/ 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

Солярис ppriv команда может использоваться для отладки Доступ запрещен вопросы. Попробуй это:

ppriv -e -D touch /dirX/file666

Каковы результаты:

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

Есть ли у этого файла какие-либо разрешения или атрибуты? Мое первое, может быть, на нем был установлен неизменяемый флаг + i.

Также вы можете использовать strace, чтобы узнать, что дает ошибку, связанную с отказом в разрешении, если это что-то неочевидное - strace rm / dirX / file666

Кроме того, когда они запускали fsck, они запускали его с проверкой плохих блоков? (-c)

Как бы то ни было, «отказано в разрешении» (EACCES) при переименовании или удалении файла указывает на проблему с обновлением каталога, а не на проблему с самим файлом. Это долгий путь, но вы можете попробовать удалить и воссоздать каталог.

Эта строка:

mv /dirX /dirSomethingElse #permission denied.

если это верно, также указывает на проблему с корневым каталогом. Я был бы склонен повторно запустить fsck и / или анализ поверхности диска, а затем повторить ваши тесты. Подобная случайность предполагает повреждение файловой системы или плохой блок диска.