35 lines
1.9 KiB
Plaintext
35 lines
1.9 KiB
Plaintext
|
<sect1 id="using-filemodes"><title>File permissions</title>
|
||
|
|
||
|
<para>On Windows 9x systems, files are always readable, and Cygwin uses the
|
||
|
native read-only mode to determine if they are writable. Files are
|
||
|
considered to be executable if the filename ends with .bat, .com or .exe, or
|
||
|
if its content starts with #!. Consequently <command>chmod</command> can
|
||
|
only affect the "w" mode, it silently ignores actions involving the other
|
||
|
modes. This means that <command>ls -l</command>
|
||
|
needs to open and read files. It can thus be relatively slow.</para>
|
||
|
|
||
|
<para>Under NT, file permissions default to the same behavior as Windows
|
||
|
9x but there is optional functionality in Cygwin that can make file
|
||
|
systems behave more like on UNIX systems. This is turned on by adding
|
||
|
the "ntea" option to the <EnVar>CYGWIN</EnVar> environment variable.</para>
|
||
|
|
||
|
<para>When the "ntea" feature is activated, Cygwin will start with basic
|
||
|
permissions as determined above, but can store POSIX file permissions in NT
|
||
|
Extended Attributes. This feature works quite well on NTFS partitions
|
||
|
because the attributes can be stored sensibly inside the normal NTFS
|
||
|
filesystem structure. However, on a FAT partition, NT stores extended
|
||
|
attributes in a flat file at the root of the partition called <filename>EA
|
||
|
DATA. SF</filename>. This file can grow to extremely large sizes if you
|
||
|
have a large number of files on the partition in question, slowing the
|
||
|
system to a crawl. In addition, the <filename>EA DATA. SF</filename> file
|
||
|
can only be deleted outside of Windows because of its "in use" status. For
|
||
|
these reasons, the use of NT Extended Attributes is off by default in
|
||
|
Cygwin. Finally, note that specifying "ntea" in <EnVar>CYGWIN</EnVar> has no
|
||
|
effect under Windows 9x. </para>
|
||
|
|
||
|
<para>Under NT, the test "[ -w filename]" is only true if filename is
|
||
|
writable across the board, e.g. <command>chmod +w filename</command>. </para>
|
||
|
|
||
|
</sect1>
|
||
|
|