Linux files in WSL root file system are created specially with POSIX permissions stored in NTFS extended attributes. You can see that by running
fsutil file layout lxss\root and notice the
$EA stream there. If you create the files directly from Windows you'll mess up things because win32 apps knows nothing about Linux and its file metadata
The problem arises when, for example, you use a Windows app/tool to open, create and/or modify a file under your distro root: Since the file was created with a Windows tool, the file won't have any Linux file metadata (e.g. permissions, owner, access/update timestamps, etc.). Thus, to Linux, (which only receives Linux file metadata), the file may be reported as empty, may not even exist, or may have some metadata, but that metadata may not reflect the file's details resulted in the file's contents being corrupted.
Therefore MS has boldly warned that
DO NOT, under ANY circumstances, create and/or modify Linux files using Windows apps, tools, scripts, consoles, etc.
Creating/changing Linux files from Windows will likely result in data corruption and/or damage your Linux environment requiring you to uninstall & reinstall your distro!
Do not change Linux files using Windows apps and tools
Files that are only relevant to Linux should be created only from WSL. If you want to create files that are accessible both systems then create them outside the WSL root and access from WSL via the mount point in
If you want to create files on Windows file systems but retain case sensibility then use
fsutil file setCaseSensitiveInfo <directory name> enable
The flag can also be checked with
fsutil file queryCaseSensitiveInfo <directory name>