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