Mail Archives: cygwin/2005/02/28/17:53:29
1.5.12 and the latest snapshots allow unlinking a file contrary to POSIX
rules. The addition of CYGWIN=traverse was not enough to fix this issue.
Unlink is required to fail with EACCES if the file is contained in a directory
without write permission.
$ mkdir a
$ touch a/b
$ chmod a-w a
$ touch a/c # Correctly fails
touch: cannot touch `a/c': Permission denied
$ rm a/b # Oops, should have failed
$
Furthermore, unlink should touch the ctime of the containing directory, and the
ctime of the unlink'd file (if hard links remain after the unlink succeeds).
In general, open(O_CREAT), link, rename, mkdir, and rmdir should touch the
ctime of the containing directory when the directory's contents change.
$ stat .
File: `.'
Size: 12288 Blocks: 12 IO Block: 1024 directory
Device: 10292fb1h/271134641d Inode: 3390366094479868980 Links: 13
Access: (0777/drwxrwxrwx) Uid: ( 544/Administrators) Gid: (10513/Domain
Users)
Access: 2005-02-28 15:25:36.990625000 -0700
Modify: 2005-02-28 15:25:32.350000000 -0700
Change: 2005-02-28 15:24:58.756250000 -0700
$ mkdir a # Oops, ctime of . not affected
$ touch b # Oops, ctime of . not affected
$ ln b c # Oops, ctime of . not affected (but correctly touches b and c)
$ stat c
File: `c'
Size: 0 Blocks: 0 IO Block: 1024 regular empty file
Device: 10292fb1h/271134641d Inode: 2251799813814789 Links: 1
Access: (0666/-rw-rw-rw-) Uid: (22382/ eblake) Gid: (10513/Domain Users)
Access: 2005-02-28 15:28:25.584375000 -0700
Modify: 2005-02-28 15:28:25.584375000 -0700
Change: 2005-02-28 15:28:28.225000000 -0700
$ rmdir a # Oops, ctime of . not affected
$ rm b # Oops, ctime of . and c not affected
$ mv c a # Oops, ctime of . not affected
$ stat . a
File: `.'
Size: 12288 Blocks: 12 IO Block: 1024 directory
Device: 10292fb1h/271134641d Inode: 3390366094479868980 Links: 13
Access: (0777/drwxrwxrwx) Uid: ( 544/Administrators) Gid: (10513/Domain
Users)
Access: 2005-02-28 15:28:40.850000000 -0700
Modify: 2005-02-28 15:28:40.850000000 -0700
Change: 2005-02-28 15:24:58.756250000 -0700
File: `a'
Size: 0 Blocks: 0 IO Block: 1024 regular empty file
Device: 10292fb1h/271134641d Inode: 2251799813814789 Links: 1
Access: (0666/-rw-rw-rw-) Uid: (22382/ eblake) Gid: (10513/Domain Users)
Access: 2005-02-28 15:28:25.584375000 -0700
Modify: 2005-02-28 15:28:25.584375000 -0700
Change: 2005-02-28 15:28:28.225000000 -0700
--
Eric Blake
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -