Como o cygwin (último 2015) determina e armazena a propriedade do grupo em NTFS?

Como o cygwin (último 2015) determina e armazena a propriedade do grupo em NTFS?

Até onde eu sei, o NTFS não tem o conceito de proprietário de arquivo de grupo como o POSIX. (Por favor, corrija-me se eu estiver errado.) Ado utilizadorpode ser membro de um ou (geralmente) mais grupos, e um arquivo pode ter arquivos separadospermissõespara cada grupo, mas um arquivo não possui um proprietário de grupo além de seu "proprietário" simples. O "proprietário simples", entretanto, pode ser, talvez de forma confusa, um grupo.

Agora, quando faço ls -lum bash do cygwin 2.8.0 no Windows 7 para um arquivo em NTFS (a máquina e a conta estão em um ambiente do Active Directory), vejo um grupo:

$ 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

(O GID longo é de um domínio diferente.) A princípio pensei que o cygwin inferisse o grupo do grupo primário do proprietário. Isso faria com que o grupo mudasse sempre junto com o usuário. No entanto, os dois parecem ser independentes:

$ 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

eu lihttps://cygwin.com/cygwin-ug-net/ntsec.htmlque descreve como UIDs e GIDs Posix são calculados a partir de SIDs do Windows; mas não consigo ver como o cygwin armazena propriedade de grupo para arquivos (que não é um recurso do Windows/NTFS, por isso precisa de um complemento do cygwin) separado da propriedade do usuário (que é um recurso do Windows/NTFS, por isso está prontamente disponível) .

Há uma nota sobre o armazenamento de comentários desse tipo <cygwin key="value" key="value" [...] />para contas de usuários locais via net user ..., incluindo uma chave de "grupo"; mas isso é para contas locais e não por arquivo, portanto não pode responder à minha pergunta.

Então, como o cygwin armazena e/ou obtém propriedade de arquivos em grupo? É um mecanismo do Windows? Em caso afirmativo, existem ferramentas do Windows para manipulá-los?

Responder1

Depois de navegar superficialmente pelo código-fonte do cygwin, acredito chgrp.exeque esteja apenas ligando indiretamente RtlSetGroupSecurityDescriptor()- via chown(2)e fhandler_disk_file::set_posix_access().

Esta funcionalidade é oferecida no nível CLI porsubinacl.exe:

subinacl /file testfile /setprimarygroup=groupname

No entanto, no meu teste, a ferramenta requer SeSecurityPrivilege para ter sucesso e SeBackupPrivilege para não exibir um aviso.

informação relacionada