chmod g+ws unsuccessful, "NULL SID" icacls missing

Norton Allen allen@huarp.harvard.edu
Thu Feb 9 18:25:19 GMT 2023


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?



More information about the Cygwin mailing list