delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/08/26/14:38:26

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00
X-Spam-Check-By: sourceware.org
Message-ID: <4A9580FE.9080901@t-online.de>
Date: Wed, 26 Aug 2009 20:37:50 +0200
From: Christian Franke <Christian DOT Franke AT t-online DOT de>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Inconsistent setting of readonly attribute in 1.7 ?
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

If ACLs are used, Cygwin 1.7 chmod() does never set R/O attribute, but 
open() sets it if a R/O file is created:

$ touch test1

$ chmod a=r test1

$ cp -p test1 test2

$ ls -l test1 test2
-r--r--r-- 1 franke users 0 Aug 26 19:33 test1
-r--r--r-- 1 franke users 0 Aug 26 19:33 test2

$ attrib 'test?'
A          C:\cygwin\tmp\test1
A    R     C:\cygwin\tmp\test2



The chmod() behavior is intentional:

fhandler_disk_file::fchmod (mode_t mode)
...
  if (mode & (S_IWUSR | S_IWGRP | S_IWOTH))
    pc &= (DWORD) ~FILE_ATTRIBUTE_READONLY;
  else if (!pc.has_acls ()) /* Never set DOS R/O if security is used. */
    pc |= (DWORD) FILE_ATTRIBUTE_READONLY;


This change might be enough (or not):

fhandler_base::open (int flags, mode_t mode)
...
      -if (!(mode & (S_IWUSR | S_IWGRP | S_IWOTH)))
      +if (!pc.has_acls () && !(mode & (S_IWUSR | S_IWGRP | S_IWOTH)))
         file_attributes |= FILE_ATTRIBUTE_READONLY;



-- 
Regards,
Christian Franke


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019