`ls -l` の出力 `d?????????` はどういう意味ですか?

`ls -l` の出力 `d?????????` はどういう意味ですか?

ls -l以下のような形式でサブディレクトリのリストが返されるのはなぜでしょうか?

 d????????? ? ? ? ?       ? Subdirectory

たとえば、treeそのディレクトリで起動された が返されます。システムはサブディレクトリの名前を認識しているようですが、見つけることができません。 どの欠落リンクが混乱を引き起こしますか?0 directories, 0 files
ls

遅くなりましたがメモ。ディレクトリについては、ファイルではなく、次も参照してください。

答え1

読み取り権限はありますが、格納ディレクトリに対する実行/検索権限はありません。

簡単に再現できます:

mkdir -p foo/bar; chmod -x foo; ls -l foo
ls: cannot access 'foo/bar': Permission denied
total 0
d????????? ? ? ? ?            ? bar

LinuxとBSDでは、フィールドlsからディレクトリであることがわかります。d_typeディレクトリエントリ、それ以上ではありません。

lsこれは、実際のinodeにアクセスできず、それを指すディレクトリエントリにのみアクセスできる他の状況でも発生する可能性があります(ファイルまたはディレクトリのinodeが以前lsに消えた場合などstat())。これ、またはアクセスできないマウントポイントの場合 - 参照これ)。

関連情報