Subsystem for UNIX-based Applications and Case Sensitivity

Applies To: Windows 7, Windows Server 2008 R2, Windows Server 2012

In Microsoft® Windows®-based operating systems, the names of most objects (such as files and directories) are case-preserving, but case-insensitive. That means you can use uppercase and lowercase characters when naming such objects, but Windows does not distinguish between names based on case alone. For example, you cannot have two files in the same directory named sample.txt and Sample.txt because Windows regards the names to be identical for the purposes of identifying files.

Case sensitivity and Subsystem for UNIX-based Applications

UNIX-based operating systems, by contrast, are fully case-sensitive, and so computers running UNIX-based operating systems distinguish between object names when the only difference between those names is the case of characters used in the object names. Therefore, on most UNIX-based computers, sample.txt and Sample.txt could be stored in the same directory, and the UNIX operating system would distinguish between them when performing operations on the files. For example, the command rm S*.txt would delete Sample.txt, but not sample.txt.

In order to implement typical UNIX behavior, Subsystem for UNIX-based Applications is normally case-sensitive when working with file names. This can present security issues, particularly for Windows users who are accustomed to the case-insensitive conventions of Windows. For example, a version of edit.exe infected with a Trojan horse-type malicious program, and named EDIT.EXE, could be stored in the same directory as edit.exe. If a user were to type edit at a Windows command prompt, the Trojan horse version (EDIT.EXE) could be executed instead of the standard version. If case sensitivity is enabled, Windows users should be made aware of this possibility.

Restoring case sensitivity defaults

In Microsoft Windows Server® 2008 R2, Windows® 7, Windows Server® 2008, Windows Vista®, Windows Server® 2003, and Windows XP operating systems, the default behavior of subsystems other than the Win32 subsystem is to be case-preserving but case-insensitive; in previous versions of Windows, such subsystems were fully case-sensitive by default. To support standard UNIX behavior, you can change the default Windows Server 2003 and Windows XP behavior for non-Win32 subsystems when installing the base utilities that are part of the download package Utilities and Software Development Kit (SDK) for Subsystem for UNIX-based Applications. If you enable case sensitivity and then subsequently uninstall the base utilities, setup restores the default, case-insensitive behavior of non-Win32 subsystems.

For more information about changing case sensitivity settings, see Configuring Case Sensitivity for File and Folder Names (