web-dev-qa-db-ja.com

アクセス許可としてすべての疑問符を含むディレクトリを修正する方法

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が「ディレクトリではない」であることが示されています。これは、ファイルが以前に記録されている場所だからです。さらに、ファイル許可ビットは、所有者と同様にすべて疑問符になり、(不可解なことに)iノードIDになります。

ファイルシステムに自分のディレクトリを再びディレクトリとして認識させるにはどうすればよいですか?

以下で概説したすべてを試した後、私が見る唯一の方法は、ディスクがバックアップされ、fsckを実行することです( this forum で推奨)またはおそらくマウント全体をフォーマットするだけです。うまくいけば、私はよりシンプルでそれほど思い切った解決策を見つけません。


私が試したいくつかのこと:

  1. SudoSudo lsを実行してみましたが、出力に違いはありませんでした。
  2. rmvcsを削除して元に戻しましたが、うまくいきませんでした。私はこれを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. iノードID:( (同様の質問に対するこの回答 で示唆されているように)iノードで削除しようとしましたが、上記の出力からわかるように、私もそれでうまくいきませんでしたlsコマンド、vcsディレクトリにはiノードIDがありません。
  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に表示されます。IOエラーも 」、実行可能ビットを設定しようとしましたディレクトリのために、しかしそれでも運がありません。

    [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
    

どんな助けでも大歓迎です。

4
entpnerd

これは、マウントサービス(Sambaなど)の問題である可能性があります。リモートホストでSambaサービスを再起動してみます。

Sudo service smb restart
1
mirrorboot

Dockerでバインドマウントを実行すると、この問題が発生しました。 Dockerデーモンを再起動すると、ファイルは正しく削除されました。

編集:Windows 10でWSL(Ubuntu 16.04)を使用しました。

2
Derian Tungka

同じ問題を得た:

# 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
0
GM83