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

Теперь, когда я выполняю ls -l в cygwin 2.8.0 bash на 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, в котором описано, как идентификаторы Posix UID и GID вычисляются из Windows SID; но я не вижу, как cygwin хранит групповое владение файлами (что не является функцией Windows/NTFS, поэтому для него требуется дополнение cygwin) отдельно от владения пользователем (которое является функцией Windows/NTFS, поэтому оно легко доступно) ,

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

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

1 ответ1

1

После поверхностного просмотра исходного кода cygwin, я считаю, что chgrp.exe просто косвенно вызывает RtlSetGroupSecurityDescriptor() - через chown(2) и fhandler_disk_file::set_posix_access() .

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

subinacl /file testfile /setprimarygroup=groupname

В моем тесте, однако, инструмент требует SeSecurityPrivilege, чтобы добиться успеха, и SeBackupPrivilege, чтобы не отображать предупреждение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .