web-dev-qa-db-ja.com

lsはファイルを表示しますが、読み込もうとすると、ファイルが存在しないと表示されます

PCにCIFSマウントがあり、lsコマンドで特定のファイルが存在することが示されます。

[bf@localhost dirX]$ ls -la
total 4096
drwxr-xr-x. 2 bf bf      0 20 okt 09:12 .
drwxr-xr-x. 2 bf bf      0  5 sep 11:05 ..
-rwxr-xr-x. 1 bf bf    880 19 okt 17:44 WeirdFile
-rwxr-xr-x. 1 bf bf    880 19 okt 17:44 GoodFile

ただし、そこから読み取ろうとすると(または保存しようとすると)、ファイルが存在しないと表示されます。

[bf@localhost dirX]$ cat WeirdFile
cat: WeirdFile: No such file or directory

cat GoodFileを試みても機能します。

Fedora 26に移行し、fstabでバージョン2.1に強制する必要があるため、とにかくCIFSで問題が発生しています。主な問題はパフォーマンスの悪さ(遅い!)ですが、これはまったく奇妙なことです。

更新共有を再マウントすると、ファイルが失われます。

5

その奇妙なファイルが実際には名前にASCII文字を使用していない理由として考えられます。この場合、ファイル名を入力すると機能しませんが、copy /を使用すると機能しません。貼り付けます(非ASCII文字の場所によっては、コマンド補完でも機能します)。

非ASCII文字には2つの可能性があります。*非ASCII文字には、ラテンアルファベットのグリフと同じグリフがあります(キリル文字の「a」、「o」、「e」が一般的です)*非ASCII文字表示されません(+ U200B、非破壊ゼロ幅スペースなど)。

コピー/貼り付けv.s.再入力の違い:

  • ls suspisciousfile | wc -cを実行すると、すべてASCIIで、非ASCII文字がある場合、wc出力はファイル名の文字数を数えることができるよりも1バイト多くなります(最終的な改行のため)。長くなります。
  • hexdumpls suspisciousfile | hexdump -Cを使用すると、ASCII以外の文字が非常にわかりやすくなります。

特別に細工されたfilеの例(最後のеは実際にはキリル文字です:

enter image description here

2
xenoid