On 2/8/2023 4:05 PM, Norton Allen via Cygwin wrote:
I briefly raised this issue months ago and am trying to resolve it again now.

What I am trying to do is setup permissions so multiple users on one machine can share full control over a particular directory hierarchy.

On Linux I have usually been able to make things work with:

   $ mkdir shared_dir
   $ chgrp shared_group shared_dir
   $ chmod g+ws shared_dir
   $ umask 2

User shells are configured with umask 2 so files they create have group write. Users belong to shared_group. Files and subdirs created under shared_dir are all in group shared_group. Files moved in retain their original group, but the group members still have permission to rename or delete them.

The problem:

$ chmod g+ws fails to set the 's' bit, and the resulting icacls output does not contain any "NULL SID" entries. I am seeing the same problem on (at least) two different systems setup by my organization. One of these was just re-imaged and I installed Cygwin yesterday with no customized configurations. AV is Windows Defender, but I suspect if that were the culprit, there would have been more noise.

I suspect there might be a group policy or something that is interfering with Cygwin's strategy for implementing POSIX permissions. I am pretty sure this worked correctly at some point in the past.

Has anyone encountered this?

Does group policy seem like a likely suspect? Anyone know which policy(ies)? I think I might be able to get IT to cut me slack if I knew what to ask for.

I have also played with using setfacl directly to add permissions, but as anyone who has read about Cygwin file permissions might guess, that tends to have mixed/poor results, but I'd be open to any suggestions.


I don't actually have a system on which this is working to compare to, so I am not exactly sure how it is supposed to look when it's working correctly. The current behavior on  my new uncustomized installation:

   $ cd /home
   $ mkdir foo
   $ ls -ld foo
   drwxr-xr-x 1 nort None 0 Feb  9 12:20 foo

   $ chgrp testflight foo
   $ ls -ld foo
   drwxr-xr-x 1 nort testflight 0 Feb  9 12:20 foo

   $ chmod g+w foo
   $ ls -ld foo
   drwxrwxr-x 1 nort testflight 0 Feb  9 12:21 foo

   $ chmod g+s foo
   $ ls -ld foo
   drwxrwxr-x 1 nort testflight 0 Feb  9 12:21 foo

Comparing getfacl and icacls output between the last two steps indicates that chmod g+s foo does exactly nothing. I ran strace on that and see that the chmod() call returns zero, but I don't know what's going inside that.

Any idea what g+s should be doing? Any more/better information I can provide?


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

Reply via email to