Something I wasn't aware of at the time of our prior discussion is that the Linux NTFS-3g driver already supports Linux extended ACLs on NTFS. This is discussed at http://www.tuxera.com/community/ntfs-3g-advanced/ownership-and-permissions/
I explored taking a flash card back and forth between Cygwin 2.4.0-0.18 and a Linux system, testing how each interprets what the other wrote. I find they don't seem to interpret each other's per-group and mask permission bits correctly when creating their Posix interpretation of an NTFS ACL. I also find that somehow setting extended ACLs on Linux for a directory is causing Cygwin to then see that object as a socket, if I'm reading the below correctly. 'ls' on Cygwin won't descend into that as it normally would for a directory, bash: cd: dir_acl: Not a directory results when attempting to cd into it, etc. I don't know how common such uses are, but I do use both Cygwin and Linux on the same flash cards and external disks. If they are both going to support Posix-style extended ACLs written to NTFS, it'd seem nice if they could do so in compatible ways. Nuances re interpreting the below: - NTFS-3g usually writes full-permission ACEs for SYSTEM and Administrators. I've patched it on my system to not write those, for better compatibility with Cygwin 2.3.0 and earlier. (Per the announcement seeming to indicate those will be ignored starting in 2.4.0, perhaps I'll no longer need such patching.) - On my Cygwin machine I have distinct SIDs for a user and a group for each Windows user, simulating the "usergroup" model with ability to keep distinct permissions for the user and the group. Windows has the group defined with a _UG suffix, as shows in the icacls outputs; my /etc/group has them without the _UG suffix, as seen in the Cygwin commands input and output. The displays below such as user:julia_UG:r-- where one might more expect group:julia:r-- given the commands that created the case seem due to the way I concocted my NTFS-3g UserMapping file. I have the groups present with their _UG suffix as users in that file, along with having them listed without that suffix as groups. I suspect if I remove the user entry for the group SIDs, these would display as more expected. I don't think this represents a bug in anything other than my own UserMapping file. ############ Part 1: On Cygwin bash 1 23 # uname -a CYGWIN_NT-6.1-WOW CYGWIN 2.4.0(0.293/5/3) 2016-01-11 20:29 i686 Cygwin [0] 20:16:03 sally@CYGWIN /e/ACL_PLAY bash 1 4 # getfacl . # file: . # owner: sally # group: sally user::rwx group::--- other:--- default:user::rwx default:group::--- default:other:--- [0] 20:17:22 sally@CYGWIN /e/ACL_PLAY bash 1 5 # mkdir written_by_cygwin [0] 20:17:42 sally@CYGWIN /e/ACL_PLAY bash 1 6 # cd written_by_cygwin [0] 20:17:52 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 7 # touch file_simple [0] 20:18:02 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 8 # touch file_acl [0] 20:18:08 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 9 # mkdir dir_acl [0] 20:18:12 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 10 # setfacl -m'g:julia:rwx' file_acl dir_acl [0] 20:18:29 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 11 # chmod 740 file_acl dir_acl [0] 20:18:42 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 12 # ls -al total 0 drwx------+ 1 sally sally 0 Jan 12 20:18 . drwx------+ 1 sally sally 0 Jan 12 20:17 .. drwxr-----+ 1 sally sally 0 Jan 12 20:18 dir_acl -rwxr-----+ 1 sally sally 0 Jan 12 20:18 file_acl -rw------- 1 sally sally 0 Jan 12 20:18 file_simple [0] 20:18:45 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 13 # getfacl . # file: . # owner: sally # group: sally user::rwx group::--- other:--- default:user::rwx default:group::--- default:other:--- [0] 20:19:01 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 14 # icacls . . NULL SID:(DENY)(Rc,S) CYGWIN\sally:(F) CYGWIN\sally_ug:(Rc,S,RA) Everyone:(Rc,S,RA) NULL SID:(OI)(CI)(IO)(DENY)(Rc,S) CREATOR OWNER:(OI)(CI)(IO)(F) CREATOR GROUP:(OI)(CI)(IO)(Rc,S,RA) Everyone:(OI)(CI)(IO)(Rc,S,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:19:04 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 15 # getfacl file_simple # file: file_simple # owner: sally # group: sally user::rw- group::--- other:--- [0] 20:20:28 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 16 # icacls file_simple file_simple NULL SID:(DENY)(Rc,S) CYGWIN\sally:(R,W,D,WDAC,WO) CYGWIN\sally_ug:(Rc,S,RA) Everyone:(Rc,S,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:20:37 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 17 # getfacl file_acl # file: file_acl # owner: sally # group: sally user::rwx group::--- group:julia:rwx #effective:r-- mask:r-- other:--- [0] 20:20:46 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 18 # icacls file_acl file_acl NULL SID:(DENY)(Rc,S,X,DC) CYGWIN\sally:(F) CYGWIN\julia_ug:(DENY)(W,X,DC) CYGWIN\sally_ug:(Rc,S,RA) CYGWIN\julia_ug:(RX,W) Everyone:(Rc,S,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:20:53 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 19 # getfacl dir_acl/ # file: dir_acl/ # owner: sally # group: sally user::rwx group::--- group:julia:rwx #effective:r-- mask:r-- other:--- default:user::rwx default:group::--- default:other:--- [0] 20:21:16 sally@CYGWIN /e/ACL_PLAY/written_by_cygwin bash 1 20 # icacls dir_acl/ dir_acl\ NULL SID:(DENY)(Rc,S,X,DC) CYGWIN\sally:(F) CYGWIN\julia_ug:(DENY)(W,X,DC) CYGWIN\sally_ug:(Rc,S,RA) CYGWIN\julia_ug:(RX,W,DC) Everyone:(Rc,S,RA) NULL SID:(OI)(CI)(IO)(DENY)(Rc,S) CREATOR OWNER:(OI)(CI)(IO)(F) CREATOR GROUP:(OI)(CI)(IO)(Rc,S,RA) Everyone:(OI)(CI)(IO)(Rc,S,RA) Successfully processed 1 files; Failed processing 0 files ############ Part 2: On Linux bash 1 3 $ uname -a Linux LINUX 3.19.0-43-generic #49~14.04.1-Ubuntu SMP Thu Dec 31 15:44:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [0] 20:28:21 sally@LINUX ~ bash 1 1 $ cd /f/ACL_PLAY/ [0] 20:28:26 sally@LINUX /mnt/f/ACL_PLAY bash 1 2 $ cd written_by_cygwin/ [0] 20:31:49 sally@LINUX /mnt/f/ACL_PLAY/written_by_cygwin bash 1 16 $ ls -al total 0 drwx------+ 1 sally sally 0 Jan 12 20:18 . drwx------+ 1 sally sally 392 Jan 12 20:29 .. drwxrwx---+ 1 sally sally 0 Jan 12 20:18 dir_acl -rwxrwx---+ 1 sally sally 0 Jan 12 20:18 file_acl -rw------- 2 sally sally 0 Jan 12 20:18 file_simple [0] 20:28:44 sally@LINUX /mnt/f/ACL_PLAY/written_by_cygwin bash 1 3 $ getfacl . * # file: . # owner: sally # group: sally user::rwx group::--- other::--- default:user::rwx default:group::--- default:other::--- # file: dir_acl # owner: sally # group: sally user::rwx user:julia_UG:r-- group::--- mask::rwx other::--- default:user::rwx default:group::--- default:other::--- # file: file_acl # owner: sally # group: sally user::rwx user:julia_UG:r-- group::--- mask::rwx other::--- # file: file_simple # owner: sally # group: sally user::rw- group::--- other::--- [0] 20:28:51 sally@LINUX /mnt/f/ACL_PLAY/written_by_cygwin bash 1 4 $ cd .. [0] 20:40:53 sally@LINUX /mnt/f/ACL_PLAY bash 1 3 $ mkdir written_by_linux [0] 20:40:58 sally@LINUX /mnt/f/ACL_PLAY bash 1 4 $ cd written_by_linux/ [0] 20:41:01 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 5 $ getfacl . # file: . # owner: sally # group: sally user::rwx group::--- other::--- default:user::rwx default:group::--- default:other::--- [0] 20:41:43 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 6 $ touch file_simple [0] 20:41:51 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 7 $ touch file_acl [0] 20:42:00 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 8 $ mkdir dir_acl [0] 20:42:07 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 9 $ setfacl -m'g:julia:rwx' file_acl dir_acl [0] 20:42:14 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 10 $ chmod 740 file_acl dir_acl [0] 20:42:22 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 11 $ ls -al total 0 drwx------+ 1 sally sally 352 Jan 12 20:42 . drwx------+ 1 sally sally 392 Jan 12 20:40 .. drwxr-----+ 1 sally sally 0 Jan 12 20:42 dir_acl -rwxr-----+ 1 sally sally 0 Jan 12 20:42 file_acl -rw------- 1 sally sally 0 Jan 12 20:41 file_simple [0] 20:42:30 sally@LINUX /mnt/f/ACL_PLAY/written_by_linux bash 1 12 $ getfacl . * # file: . # owner: sally # group: sally user::rwx group::--- other::--- default:user::rwx default:group::--- default:other::--- # file: dir_acl # owner: sally # group: sally user::rwx user:julia_UG:rwx #effective:r-- group::--- mask::r-- other::--- default:user::rwx default:group::--- default:other::--- # file: file_acl # owner: sally # group: sally user::rwx user:julia_UG:rwx #effective:r-- group::--- mask::r-- other::--- # file: file_simple # owner: sally # group: sally user::rw- group::--- other::--- ############ Part 3: On Cygwin [0] 20:47:45 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 34 # ls -al total 0 drwx------+ 1 sally sally 0 Jan 12 20:42 . drwx------+ 1 sally sally 0 Jan 12 20:40 .. srwxr-----+ 1 sally sally 0 Jan 12 20:42 dir_acl -rwxr-----+ 1 sally sally 0 Jan 12 20:42 file_acl -rw------- 1 sally sally 0 Jan 12 20:41 file_simple [0] 20:48:06 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 35 # getfacl . # file: . # owner: sally # group: sally user::rwx group::--- other:--- default:user::rwx default:group::--- default:other:--- [0] 20:48:12 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 36 # icacls . . Everyone:(OI)(IO)(DENY)(S,X) CYGWIN\sally:(NP)(F) Everyone:(NP)(Rc,S,REA,RA) CYGWIN\sally:(OI)(CI)(IO)(F) Everyone:(OI)(CI)(IO)(Rc,S,REA,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:48:15 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 37 # getfacl file_simple # file: file_simple # owner: sally # group: sally user::rw- group::--- other:--- [0] 20:49:24 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 38 # icacls file_simple file_simple CYGWIN\sally:(NP)(R,W,D,WDAC,WO) Everyone:(NP)(Rc,S,REA,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:50:51 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 40 # getfacl.exe file_acl # file: file_acl # owner: sally # group: sally user::rwx group::--- group:julia:r-- mask:r-- other:--- [0] 20:49:50 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 39 # icacls file_acl file_acl CYGWIN\julia_ug:(NP)(DENY)(W,Rc,WO,X) CYGWIN\sally:(NP)(M,WDAC,WO) CYGWIN\julia_ug:(NP)(RX,W) CYGWIN\sally_ug:(NP)(DENY)(W,Rc,WO,X) Everyone:(NP)(Rc,S,REA,RA) Successfully processed 1 files; Failed processing 0 files [0] 20:51:02 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 41 # getfacl dir_acl # file: dir_acl # owner: sally # group: sally user::rwx group::--- group:julia:r-- mask:r-- other:--- default:user::rwx default:group::--- default:other:--- [0] 20:52:03 sally@CYGWIN /e/ACL_PLAY/written_by_linux bash 1 42 # icacls dir_acl dir_acl CYGWIN\julia_ug:(NP)(DENY)(W,Rc,WO,X,DC) Everyone:(OI)(IO)(DENY)(S,X) CYGWIN\sally:(NP)(F) CYGWIN\julia_ug:(NP)(RX,W,DC) CYGWIN\sally_ug:(NP)(DENY)(W,Rc,WO,X,DC) Everyone:(NP)(Rc,S,REA,RA) CYGWIN\sally:(OI)(CI)(IO)(F) Everyone:(OI)(CI)(IO)(Rc,S,REA,RA) Successfully processed 1 files; Failed processing 0 files -- 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