In der Versionskontrolle des TFS lassen sich Berechtigungen auf einzelne Verzeichnisse und Dateien setzen. Wie man einen Überblick über die gesetzten Berechtigungen erhält, wurde bereits erläutert. Im folgenden soll es um die Einrichtung der Berechtigungen gehen.
Ausgangssituation
Es liegt ein Teamprojekt mit folgender Verzeichnisstruktur vor:
$/ProjectName/RootFolder/SubFolder/File.cs
Es gibt eine TFS-Benutzergruppe namens Contributors, wie sie beim Anlegen eines Projektes mit den MSF Prozessvorlagen erstellt wird.
Deny geht über Allow
Es soll nun für das Verezeichnis SubFolder die Leseberechtigung für die Gruppe Contributors entfernt werden. Die Einstellung kann über das Tab Security im Eigenschaftendialog des Verzeichnisses (im Source Control Explorer) vorgenommen werden. Dieses stellt sich initial wie in Abbildung 1 dar. Das Attrbibut Allow für das Read-Recht wird vom Team-Projektordner (hier: ProjectName) geerbt und ist daher ausgegraut.
Um die Leserechte zu verwehren, kann das Attribute Deny gesetzt werden. Dies überschreibt Allow und verwehrt somit den Zugriff auf den SubFolder sowie alle Unterverzeichnisse und Dateien (vgl. Abbildung 2).
In Abbildung 2 fällt im unteren Teil auch die Checkbox für die Vererbung auf. Vererbung bedeutet hier, dass gesetzte Attribute (z.B. Allow) vererbt werden, nicht gesetzte Attribute aber hinzugefügt werden können. So kann das geerbte Allow durch ein Deny im SubFolder überschrieben werden, ohne die Vererbung zu unterbrechen. Im Gegenzug kann ein geerbtes Deny aber nicht einfach so überschrieben werden (vgl. Abbildung 3).
Ungeliebte Erbschaft
Will man ein Deny z.B. für die Checkout-Berechtigung in einem untergeordneten Verzeichnis aufheben und erlauben, so muss die Vererbung explizit aufgelöst werden. In Abbildung 4 ist das Häkchen für “Inherit security settings” entfernt worden. Sobald diese Einstellung deselktiert wird, werden alle Berechtigungsattribute für alle Gruppen entfernt – sprich niemand hat mehr Rechte auf diesem Verzeichnis bzw. auf der Datei. Klickt man OK, können nur noch TFS Administratoren die Permissions zurücksetzen. Man sollte also vor dem Bestätigen zunächst die initialen Berechtigungen vergeben. Jede Änderung an Berechtigungenauf einem übergeordneten Verzeichnis hat dann logischerweise keine Auswirkung mehr auf die Berechtigungen des untergeordneten Verzeichnisses.
Wer lesen kann ist klar im Vorteil
Noch ein Wort zum Read-Recht. Wird dieses Recht mit Deny verweigert, ist das Verzeichnis samt Inhalt bzw. die Datei nicht mehr sichtbar. Entfernt man in einem untergeordnetem Verzeichnis die Vererbung der Berechtigungen und setzt Read explizit auf Allow, wird das Verzeichnis und alle übergeordneten Verzeichnisse auf dem Pfad dorthin wieder sichtbar. Allerdings werden die enthaltenen Dateien in den eigentlich lesegeschützten Ordner nicht angezeigt.
Fazit
Die Source Control des TFS bietet ein professionelles Permissions-Konzept mit dem sich alle Standardanwendungsfälle für eine Unternehmen abdecken lassen. Die Verwaltung ist unkompliziert und lässt sich mit wenigen Erweiterungen (z.B. den Source-Control-Management-Reports) besser überblicken.