Файлы Linux в корневой файловой системе WSL создаются специально с разрешениями POSIX, хранящимися в расширенных атрибутах NTFS. Вы можете увидеть это, запустив fsutil file layout lxss\root
и заметив там поток $EA
. Если вы создаете файлы непосредственно из Windows, вы все испортите, потому что приложения win32 ничего не знают о Linux и его метаданных файлов.
Проблема возникает, когда, например, вы используете приложение / инструмент Windows для открытия, создания и / или изменения файла в корне дистрибутива: поскольку файл был создан с помощью инструмента Windows, в файле не будет метаданных файла Linux (например, разрешения, владелец, метки времени доступа / обновления и т. д.). Таким образом, для Linux (который получает только метаданные файла Linux)файл может быть представлен как пустой, может даже не существовать или иметь некоторые метаданные, но эти метаданные могут не отражать подробности файла, что привело к повреждению содержимого файла.
Поэтому MS смело предупредил, что
Ни при каких обстоятельствах НЕ создавайте и / или не изменяйте файлы Linux с помощью приложений, инструментов, сценариев, консолей и т.д. Для Windows.
Создание / изменение файлов Linux из Windows, вероятно, приведет к повреждению данных и / или повреждению вашей среды Linux, что требует удаления и переустановки вашего дистрибутива!
Не изменяйте файлы Linux с помощью приложений и инструментов Windows
Файлы, имеющие отношение только к Linux, должны создаваться только из WSL. Если вы хотите создать файлы, доступные для обеих систем, то создайте их вне корня WSL и получите доступ из WSL через точку монтирования в /mnt
как /mnt/drive/path
Если вы хотите создавать файлы в файловых системах Windows, но сохраняете чувствительность к регистру, используйте
fsutil file setCaseSensitiveInfo <directory name> enable
Этот флаг также можно проверить с fsutil file queryCaseSensitiveInfo <directory name>