Case Sensitivity in Subsystem for UNIX-based Applications
Updated: August 22, 2005
Applies To: Windows Server 2003 R2
In 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
The UNIX operating system, by contrast, is fully case sensitive, and so UNIX computers distinguish between object names when the only difference between those names is the case of characters used in the object names. On most UNIX computers, therefore, sample.txt and Sample.txt could be stored in the same directory, and the UNIX computer 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, the 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 Trojan horse version of edit.exe 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 Windows XP and in Windows Server 2003 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 XP and Windows Server 2003 behavior for non-Win32 subsystems when installing the base utilities that are part of the download package Utilities and 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.