Как cygwin (после 2015 года) определяет и сохраняет права собственности группы в NTFS?

Как cygwin (после 2015 года) определяет и сохраняет права собственности группы в NTFS?

Насколько мне известно, в NTFS нет концепции группового владельца файла, как в POSIX. (Поправьте меня, если я ошибаюсь.)пользовательможет быть членом одной или (обычно) нескольких групп, а файл может иметь отдельныеразрешениядля каждой группы, но файл не имеет владельца группы в дополнение к своему простому ванильному "владельцу". Однако "простой владелец" может быть, возможно, путаницей, группой.

Теперь, когда я выполняю ls -lкоманду bash cygwin 2.8.0 на Windows 7 для файла в NTFS (машина и учетная запись находятся в среде Active Directory), я вижу группу:

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485    1049089  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 1493656 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

(Длинный GID из другого домена.) Сначала я думал, что cygwin выводит группу из основной группы владельца. Это заставило бы группу всегда меняться вместе с пользователем. Однако эти две группы, похоже, независимы:

$ chown 2736485  golden-dev-val.cfgspec

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485    1049089  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 2736485 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

$ chgrp 3556770305 cleartool

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485 3556770305  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 2736485 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

я прочиталhttps://cygwin.com/cygwin-ug-net/ntsec.htmlгде описывается, как UID и GID Posix вычисляются из SID Windows; но я не вижу, как cygwin хранит групповое владение файлами (что не является функцией Windows/NTFS, поэтому для этого требуется дополнение cygwin) отдельно от пользовательского владения (что является функцией Windows/NTFS, поэтому оно легко доступно).

Существует Примечание о хранении комментариев такого рода <cygwin key="value" key="value" [...] />для локальных учетных записей пользователей через net user ..., включая ключ «группы»; но это для локальных учетных записей, и это не для каждого файла, поэтому оно не может ответить на мой вопрос.

Так как же cygwin сохраняет и/или получает групповое владение файлами? Это механизм Windows? Если да, то есть ли инструменты Windows для управления ими?

решение1

После поверхностного просмотра исходного кода Cygwin я пришел к выводу, chgrp.exeчто это просто косвенный вызов RtlSetGroupSecurityDescriptor()— через chown(2)и fhandler_disk_file::set_posix_access().

Эта функциональность предлагается на уровне CLIsubinacl.exe:

subinacl /file testfile /setprimarygroup=groupname

Однако в моем тесте инструменту для успешной работы требуются права SeSecurityPrivilege и SeBackupPrivilege, чтобы не отображать предупреждение.

Связанный контент