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

Как исправить каталог со всеми вопросительными знаками в качестве разрешений

Я использую CentOS 7 и пытаюсь отобразить содержимое каталога, но не могу. Когда я пытаюсь перечислить содержимое, я получаю следующий результат:

[entpnerd@myhost ~]$ ls -ali /data/sharedlogs/otherhost/
ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory
total 12
2361284 drwxr-xr-x 4 root root 4096 Sep 26 14:40 .
2359297 drwxr-xr-x 6 root root 4096 Apr 26 17:41 ..
2362573 drwxr-xr-x 2 root root 4096 Mar 22  2017 tkr
      ? d????????? ? ?    ?       ?            ? vcs

В выводе указано, что мой каталог, vcs, является «Не каталогом», хотя это и должно быть, поскольку именно здесь файлы ранее регистрировались. Кроме того, биты прав доступа к файлу теперь все являются вопросительными знаками, как и владелец, и (необъяснимо) идентификатор inode.

Как я могу заставить файловую систему снова распознавать мой каталог как каталог?

Попробовав все, что я описал ниже, единственный путь вперед, который я вижу, - это обеспечить резервное копирование диска и запустить его. fsck (как было предложено этот форум) или, возможно, просто форматирование всего монтирования. Надеюсь, я найду более простое и менее радикальное решение.


Некоторые вещи, которые я пробовал:

  1. sudo: Я пробовал бежать sudo ls но никакой разницы в выходе.
  2. rm: Я пытался удалить vcs положить обратно, но не повезло. Я пробовал это как с sudo и без, но тоже не повезло. Как ни странно, когда я пытаюсь sudo rm Здесь утверждается Is a directory. Я тоже пробовал rm с обоими -r и -d переключатели, тоже не повезло. Результат, который я получаю от rm попытки команды:

    [entpnerd@myhost ~]$ rm /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo rm /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    [entpnerd@myhost ~]$ sudo rm -r /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    [entpnerd@myhost ~]$ rm -r /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ rm -rd /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo rm -rd /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    
  3. ID индексного дескриптора: я попытался удалить индексным дескриптором (как было предложено этот ответ на аналогичный вопрос), но и с этим мне тоже не повезло, потому что, как вы можете видеть из вывода приведенного выше ls команда, vcs каталог не имеет идентификатора inode.
  4. Символы, отличные от ASCII: в сообщении "Как удалить каталог, который невозможно удалить", в каталоге были символы, отличные от ASCII. Это тоже не тот случай, как я видел из xxd вывод:

    [entpnerd@myhost ~]$ ls -l /data/sharedlogs/otherhost/ | xxd
    ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory
    0000000: 746f 7461 6c20 340a 6472 7778 722d 7872  total 4.drwxr-xr
    ...
    0000040: 3f3f 3f3f 3f20 3f20 3f20 2020 203f 2020  ????? ? ?    ?  
    0000050: 2020 2020 203f 2020 2020 2020 2020 2020       ?          
    0000060: 2020 3f20 7663 730a                        ? vcs.
    
  5. lsattr: Как подсказывает аналогичный вопрос, "Почему я не могу удалить этот файл как root?", Я пробовал использовать lsattr команда, но безуспешно:

    [entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/
    -------------e-- /data/sharedlogs/otherhost/tkr
    /data/sharedlogs/otherhost/vcs: Not a directory
    [entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/vcs
    lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs
    [entpnerd@myhost ~]$ sudo lsattr /data/sharedlogs/otherhost/vcs
    [sudo] password for entpnerd: 
    lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs
    
  6. Установка исполняемых битов для каталога: в ответ на аналогичный вопрос "Знаки вопроса отображаются в ls каталога. Ошибки ввода-вывода тоже", Я попытался установить исполняемые биты для каталога, но и с этим не повезло.

    [entpnerd@myhost ~]$ sudo chmod -R g+x /data/sharedlogs/otherhost/vcs
    [sudo] password for entpnerd: 
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo chmod -R u+x /data/sharedlogs/otherhost/vcs
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo chmod -R a+x /data/sharedlogs/otherhost/vcs
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    

Любая помощь будет принята с благодарностью.

У меня возникла эта проблема при запуске привязки на Docker. Я перезапустил демон Docker, и файл был правильно удален.

изменить: я использовал WSL (Ubuntu 16.04) в Windows 10.

Это может быть проблема со службой монтирования (например, Samba). Попробуйте перезапустить службу Samba на удаленном хосте:

sudo service smb restart

Получил такую ​​же проблему:

# ll /tmp/mtp
ls: cannot access /tmp/mtp: Input/output error
root@lenov01 ~ # ll /tmp
ls: cannot access /tmp/mtp: Input/output error
total 68
     ? d?????????  ? ?      ?          ?            ? mtp/
     2 drwxr-xr-x 25 root   root    4096 Nov 11 05:15 ../
393218 drwx------  2 root   root    4096 Nov 11 05:16 pulse-PKdhtXMmr18n/
393222 -r--r--r--  1 root   root      11 Nov 11 05:16 .X0-lock

Каталог / tmp / mtp был создан для доступа к хранилищу устройства Android:

# jmtpfs /tmp/mtp

Я мог бы избавиться от этого каталога с помощью:

# fusermount -u /tmp/mtp