¿Cómo determina y almacena cygwin (más allá de 2015) la propiedad del grupo en NTFS?

¿Cómo determina y almacena cygwin (más allá de 2015) la propiedad del grupo en NTFS?

Hasta donde yo sé, NTFS no tiene el concepto de propietario de un archivo grupal como lo tiene POSIX. (Corríjame si me equivoco).usuariopuede ser miembro de uno o (generalmente) más grupos, y un archivo puede tener archivos separadospermisospara cada grupo, pero un archivo no tiene un propietario de grupo además de su "propietario" simple. Sin embargo, el "propietario simple" puede ser, quizás de manera confusa, un grupo.

Ahora, cuando hago un ls -lbash en cygwin 2.8.0 en Windows 7 para un archivo en NTFS (la máquina y la cuenta están en un entorno de Active Directory), veo un 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

(El GID largo es de un dominio diferente). Al principio pensé que cygwin infiere el grupo del grupo principal del propietario. Eso haría que el grupo cambiara siempre junto con el usuario. Sin embargo, los dos parecen ser independientes:

$ 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

he leídohttps://cygwin.com/cygwin-ug-net/ntsec.htmlque describe cómo se calculan los UID y GID de Posix a partir de los SID de Windows; pero no veo cómo cygwin almacena la propiedad del grupo de archivos (que no es una característica de Windows/NTFS, por lo que necesita un complemento de cygwin) separada de la propiedad del usuario (que es una característica de Windows/NTFS, por lo que está disponible) .

Hay una nota sobre el almacenamiento de comentarios de este tipo <cygwin key="value" key="value" [...] />para cuentas de usuarios locales a través de net user ..., incluida una clave de "grupo"; pero eso es para cuentas locales y no por archivo, por lo que no puede responder a mi pregunta.

Entonces, ¿cómo almacena y/u obtiene cygwin la propiedad grupal de los archivos? ¿Es un mecanismo de Windows? Si es así, ¿existen herramientas de Windows para manipularlos?

Respuesta1

Después de explorar superficialmente el código fuente de cygwin, creo chgrp.exeque solo se llama indirectamente RtlSetGroupSecurityDescriptor(), a través de chown(2)y fhandler_disk_file::set_posix_access().

Esta funcionalidad se ofrece a nivel CLI porsubinacl.exe:

subinacl /file testfile /setprimarygroup=groupname

Sin embargo, en mi prueba, la herramienta requiere SeSecurityPrivilege para tener éxito y SeBackupPrivilege para no mostrar una advertencia.

información relacionada