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