Wie bestimmt und speichert Cygwin (ab 2015) den Gruppenbesitz auf NTFS?

Wie bestimmt und speichert Cygwin (ab 2015) den Gruppenbesitz auf NTFS?

Soweit ich weiß, gibt es bei NTFS nicht das Konzept eines Gruppendateibesitzers wie bei POSIX. (Bitte korrigieren Sie mich, wenn ich falsch liege.)Benutzerkann Mitglied einer oder (normalerweise) mehrerer Gruppen sein, und eine Datei kann separateBerechtigungenfür jede Gruppe, aber eine Datei hat keinen Gruppeneigentümer zusätzlich zu ihrem normalen „Eigentümer“. Der „einfache Eigentümer“ kann jedoch, vielleicht verwirrend, eine Gruppe sein.

Wenn ich jetzt ls -lin einem Cygwin 2.8.0 Bash unter Windows 7 eine Datei in einem NTFS ausführe (der Computer und das Konto befinden sich in einer Active Directory-Umgebung), wird mir eine Gruppe angezeigt:

$ 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

(Die lange GID stammt aus einer anderen Domäne.) Zuerst dachte ich, dass Cygwin die Gruppe aus der primären Gruppe des Besitzers ableitet. Das würde dazu führen, dass sich die Gruppe immer zusammen mit dem Benutzer ändert. Die beiden scheinen jedoch unabhängig zu sein:

$ 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

ich habe gelesenhttps://cygwin.com/cygwin-ug-net/ntsec.htmlDarin wird beschrieben, wie Posix-UIDs und -GIDs aus Windows-SIDs berechnet werden. Ich verstehe jedoch nicht, wie Cygwin die Gruppeneigentümerschaft für Dateien (die keine Windows-/NTFS-Funktion ist und daher ein Cygwin-Add-On benötigt) getrennt von der Benutzereigentümerschaft (die eine Windows-/NTFS-Funktion ist und daher leicht verfügbar ist) speichert.

Es gibt einen Hinweis zum Speichern derartiger Kommentare <cygwin key="value" key="value" [...] />für lokale Benutzerkonten über net user ..., einschließlich eines „Gruppen“-Schlüssels; dieser gilt jedoch für lokale Konten und nicht pro Datei und kann meine Frage daher nicht beantworten.

Wie speichert Cygwin also Dateien und/oder erhält Gruppeneigentum an ihnen? Handelt es sich dabei um einen Windows-Mechanismus? Wenn ja, gibt es Windows-Tools, um sie zu bearbeiten?

Antwort1

Nachdem ich den Quellcode von Cygwin oberflächlich durchgesehen habe, glaube ich, chgrp.exedass es sich lediglich um einen indirekten Aufruf handelt RtlSetGroupSecurityDescriptor()– über chown(2)und fhandler_disk_file::set_posix_access().

Diese Funktionalität wird auf CLI-Ebene angeboten durchsubinacl.exe:

subinacl /file testfile /setprimarygroup=groupname

In meinem Test benötigt das Tool allerdings SeSecurityPrivilege, um erfolgreich zu sein, und SeBackupPrivilege, um keine Warnung anzuzeigen.

verwandte Informationen