Como o cygwin (após 2015) determina e armazena a propriedade do grupo no NTFS?

0

Tanto quanto sei, o NTFS não tem o conceito de um proprietário de arquivo de grupo da mesma forma que o POSIX. (Por favor, corrija-me se estiver errado.) Um usuário pode ser membro de um ou (geralmente) mais grupos, e um arquivo pode ter permissões separadas para cada grupo, mas um arquivo não tem um proprietário de grupo adicionalmente ao seu "proprietário" simples. O "proprietário simples", contudo, pode ser, talvez confusamente, um grupo.

Agora, quando faço uma ls -l em um cygwin 2.8.0 bash no Windows 7 para um arquivo em um 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 longo GID é de um domínio diferente.) No começo eu pensei que cygwin infere o grupo do grupo principal do proprietário. Isso faria com que o grupo sempre mudasse 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 li o link que descreve como UDIs e GIDs Posix são calculados a partir de SIDs do Windows; mas não consigo ver como o cygwin armazena a propriedade de grupo para arquivos (que não é um recurso do Windows / NTFS, portanto, precisa de um complemento cygwin) separado da propriedade do usuário (que é um recurso do Windows / NTFS, portanto, está prontamente disponível) .

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

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

    
por Peter A. Schneider 24.05.2017 / 17:04

1 resposta

1

Após navegar superficialmente pelo código-fonte do cygwin, acredito que chgrp.exe esteja chamando indiretamente RtlSetGroupSecurityDescriptor() - via chown(2) e fhandler_disk_file::set_posix_access() .

Esta funcionalidade é oferecida no nível de CLI por subinacl.exe :

subinacl /file testfile /setprimarygroup=groupname

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

    
por 17.08.2018 / 00:41