[BUG 1.7] Read-only files are not.

David Rothenberger daveroth@acm.org
Wed Dec 31 23:28:00 GMT 2008


It seems that read-only files in Cygwin 1.7 are not truly
read-only. The sequence of steps below shows that "chmod 444 file1"
does not make the file read-only in Cygwin 1.7, while it does in
Cygwin 1.5. It may have something to do with the Read Only DOS
attribute. This is set by Cygwin 1.5 but not by Cygwin 1.7. If I
manually set it for Cygwin 1.7, the file does become read-only.

(This issue was brought to my attention by a failing subversion test
after building for 1.7.)

----------------------------------------------------------------------
[1.7] % mkdir /tmp/ro-test
[1.7] % cd /tmp/ro-test
[1.7] % ls -ld
drwxr-xr-x+ 1 drothe None 0 Dec 31 15:18 .
[1.7] % touch file1
[1.7] % ls -l
total 0
-rw-r--r-- 1 drothe None 0 Dec 31 15:18 file1
[1.7] % chmod 444 file1
[1.7] % ls -l
total 0
-r--r--r-- 1 drothe None 0 Dec 31 15:18 file1
[1.7] % test -w file1 && echo yes
yes
[1.7] % echo foo > file1
[1.7] % cat file1
foo
[1.7] % attrib file1
A          C:\cygwin-1.7\tmp\ro-test\file1
[1.7] % attrib +r file1
[1.7] % test -w file1 && echo yes
[1.7] % echo bar > file1
bash: file1: Permission denied
[1.7] % cat file1
foo
----------------------------------------------------------------------

Here is the same sequence of steps using Cygwin 1.5.

----------------------------------------------------------------------
[1.5] % mkdir /tmp/ro-test
[1.5] % cd /tmp/ro-test
[1.5] % ls -ld
drwxr-xr-x+ 2 drothe None 0 Dec 31 15:21 .
[1.5] % touch file1
[1.5] % ls -l
total 0
-rw-r--r-- 1 drothe None 0 Dec 31 15:21 file1
[1.5] % chmod 444 file1
[1.5] % ls -l
total 0
-r--r--r-- 1 drothe None 0 Dec 31 15:21 file1
[1.5] % test -w file1 && echo yes
[1.5] % echo foo > file1
bash: file1: Permission denied
[1.5] % cat file1
[1.5] % attrib file1
A    R     C:\cygwin\tmp\ro-test\file1
[1.5] % attrib -r file1
[1.5] % attrib file1
A          C:\cygwin\tmp\ro-test\file1
[1.5] % ls -l
total 0
-r--r--r-- 1 drothe None 0 Dec 31 15:21 file1
[1.5] % test -w file1 && echo yes
yes
[1.5] % echo foo > file1
bash: file1: Permission denied
[1.5] % cat file1

----------------------------------------------------------------------

-- 
David Rothenberger  ----  daveroth@acm.org

Agnes' Law:
         Almost everything in life is easier to get into than out of.



More information about the Cygwin-apps mailing list