%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F%D0%B5%D1%82%20%D0%B8%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D1%8F%D0%B5%D1%82%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B0%20%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%20%D0%B2%20NTFS%3F.png)
Насколько мне известно, в 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, чтобы не отображать предупреждение.