Datenhaltung auf Dateiservern

Jeder Windows Server ist zugleich auch Dateiserver. Auch wenn "nur" Exchange installiert ist, so gibt es auch mit einem Exchange Server mehrere Freigaben, auf die Clients und Administratoren zugreifen. Aber auf dieser Seite soll es um die generelle Art und Weise der Freigabe von Dateien auf Servern gehen.

Die Freigaben, die Exchange bei der Installation einrichtet sind:

So sehen Sie die Standardfreigaben eines Exchange 2003 Servers, der zugleich Domain Controller ist:

Hier soll es aber nicht um diese speziellen Freigaben gehen, sondern um Freigaben im Allgemeinen und wie sie ihren Server effektive und sicher verwalten. Die folgenden Aussagen gelten NUR mit Windows 2000 und höher. Windows NT4 und älter unterstützen keine Vererbung, so dass viele hier beschriebenen Dinge anders realisiert werden müssen.

Warum Berechtigungen vergeben ?

Die Frage wird mir tatsächlich immer mal wieder gestellt. Aber Sie glauben gar nicht viel viele Netzwerke so unsicher betrieben werden. Natürlich ist immer der Administrator schuld, wobei Windows 2000 und früher dem Administrator das Leben auch sehr einfach gemacht haben. Dabei waren die Standards nämlich:

Erst Windows 2003 ist hier um einiges restriktiver hier gilt:

Hinzu kommt, dass viele Administratoren bzw. Firmen sehr lasch die Vergabe von Rechten handhaben. Es ist durchaus Realität dass:

und das ist nur die Spitze eines Eisbergs. Fassen Sie sich mal an ihre eigene Nase und überlegen Sie, wer bei ihnen wo wie viel Rechte hat. Sie werden erschreckt sein.

Freigaben, Verzeichnisse und Vererbung

Bei der Nutzung eines Windows Server als Dateiserver müssen Sie die Verzeichnisse, auf denen dann die Daten landen erst auf dem Server einrichten und explizit frei geben.

Hierbei sind die Berechtigungen auf die Freigabe für Gruppen zu definieren. Unterschieden wird zwischen:

Es ist nicht ratsam, Berechtigungen auf einzelne Benutzer zu vergeben. Üblicherweise reicht das ÄNDERN-Recht aus, denn es ist keine gute Idee, wenn Anwender selbst die Berechtigungen auf Dateien verändern können. Wenn Sie als Administrator über das Netzwerk die Berechtigungen auf dem Dateisystem ändern möchten, dann können Sie sich zusätzlich in die Liste der Rechte aufnehmen oder über eine zweite Freigabe arbeiten.

Neben den Berechtigungen auf die Freigabe wirken natürlich noch die Berechtigungen auf dem Dateisystem.

Recht auf Freigabe Recht auf Dateisystem Effektive Rechte
keine keine
Lesen
Ändern
Vollzugriff
keine
keine
keine
keine
Lesen keine
Lesen
Ändern
Vollzugriff
keine
Lesen
Lesen
Lesen
Ändern keine
Lesen
Ändern
Vollzugriff
keine
Lesen
Ändern
Ändern
Vollzugriff keine
Lesen
Ändern
Vollzugriff
keine
Lesen
Ändern
Vollzugriff

Anhand der Tabelle ist gut zu erkennen, dass die Rechte auf die Freigabe die Maximalberechtigung beim Zugriff über das Netzwerk bestimmt. Allerdings ist auch klar, dass alleine eine Kontrolle der Berechtigungen über eine Freigabe für die meisten Netzwerke nicht mehr ausreichend sind. Weitere Informationen zur Berechtigung von NTFS und der Vererbung finden Sie auf NTFS mit Windows 2000.

Franks "Best Practice

Verstehen Sie das folgende Konzept nicht als die einzig glücklich machende Lösung. Finden Sie für ihr Unternehmen einen adäquaten Weg, um den Benutzern die erforderlichen Berechtigungen zu gewähren ohne Lücken in der Sicherheit zu schaffen und eine einfache Administration zu erlauben.

Das Konzept basiert auf folgenden Grundlagen:

Bei allen Lösungen muss sichergestellt sein, dass ein Benutzer nur die bereiche erreichen kann für die er berechtigt ist. er darf nicht mehr aber auch nicht weniger erreichen können Leider erlaubt es Windows nicht, dass ein Benutzer nur die Verzeichnisse sieht, in die er Rechte hat. Ein Benutzer kann auch ein Verzeichnis sehen und beim Zugriff bekommt er erst die Meldung "Zugriff verweigert". Novell hat dies mit dem "FileScan"-Recht und der Vererbung damals besser gelöst.

Folgende Prinzipien der Berechtigung werden angewendet:

Wie lässt sich nun mit diesen Vorgaben eine Berechtigungsstruktur aufbauen ?. Wenn auf der Freigabe schon sehr viele Berechtigungen vergeben werden (z.B.: "JEDER:ÄNDERN" oder Domain Benutzer:Vollzugriff) und dann noch auf dem Verzeichnis selbst ebenfalls jeder Anwender zumindest lesen können muss, dann ist es eigentlich unmöglich bei einem Unterverzeichnis nur bestimmten Gruppen die Berechtigungen zu geben. Der Einsatz von DENY oder die Abschaltung der Vererbung in Unterverzeichnissen ist ja nicht erwünscht.

Viele Administratoren wissen nicht, dass es zwei Stellen gibt, an denen die Vererbung von Berechtigungen gesteuert werden kann. Es ist nicht allein das Verzeichnis, auf dem die Vererbung komplett abgeschaltet werden kann. Für jedes individuell vergebene Berechtigung kann kontrolliert werden, ob diese Rechte vererbt werden oder nicht.

Durch diesen Kniff ist es z.B. möglich, dass Jeder:LESEN" darf, aber eben nur auf dem Hauptverzeichnis selbst und nicht in den Unterverzeichnissen. Auch wenn auf den Unterverzeichnissen die Vererbung prinzipiell aktiviert ist, werden die Rechte nicht vererbt. Ganz ohne DENY.

Das ganze könnte dann so aussehen:

Bei Windows 2000 hat auf der Wurzel der Festplatte selbst "Jeder:Lesen". bei Windows 2003 ist dies nicht mehr so. Damit durch einen Konfigurationsfehler doch wieder alle Rechte bekommen, wir auf dem Verzeichnis, welches frei gegeben wird, die Vererbung abgeschaltet.

Auf das Verzeichnis ABT  (für Abteilung) werden nun die Rechte so vergeben, dass Administratoren Vollzugriff auf diesen Ordner, Unterordner und Dateien haben. Aber "Jeder:Lesen" gilt nur für diesen Ordner. D.h. diese Rechte wird nicht vererbt. Über diesen Kniff können die Administratoren auf allen Ordern voll zugreifen, aber JEDER darf nur den Hauptordner auflisten, kommt aber in kein Unterverzeichnis hinein. Dazu müssen Sie aber in den "Erweiterten Eigenschaften" die Berechtigungen entsprechend einstellen.

Das Unterverzeichnis ABT1 und andere enthalten daher nur die Administratoren als vererbte Berechtigungen und sonst keine Einträge. Hier muss dann z.B. die Abteilungsgruppe mit dem Recht "Ändern" für "diesen Ordner, Unterordner und Dateien" eingetragen werden.

Nach dem gleichen Schema kann auch eine Vergabe von Rechten in Unterordnern erfolgen, z.B. indem Sie auf dem Ordner "ABT1" der Abteilung das Recht "LESEN: nur auf diesem Ordner" geben. Dann können Sie auf den darunter liegenden Ordnern feiner Rechte vergeben. Sie sollten dazu aber auch die Seite NTFS mit Windows 2000 lesen, wenn Sie genauer verstehen wollten, wie die Vererbung auf NTFS funktioniert. Allgemeine Hinweise finden Sie auch auf Vererbung.

Was bringt mir DFS ?

Die Steuerung der Berechtigungen auf Freigaben, Verzeichnissen und Dateien ist damit gelöst. Allerdings enthalten die Pfade immer noch den Servernamen. Dies stört spätestens bei der nächsten Migration auf einen anderen Server. Wenn Sie heute schon mehrere Server mit mehreren Freigaben haben, dann ist es nicht nur eine Frage der Kosmetik, ob die Anwender zu jeder Freigabe einen Laufwerksbuchstaben verbinden. Spätestens bei "Z:" ist auch bei Windows das Ende erreicht und andere Ideen müssen gefunden werden.

Und hier ist der Moment, bei dem DFS (Distributed File System) auf der Bühne erscheint. DFS erlaubt es ihnen viele Freigaben in einem virtuellen Baum zusammen zu fassen. Dies funktioniert schon seit Windows NT4 aber damals war der DFS-Server dann der kritische Faktor. Seit Windows 2000 können Sie jedoch ein Domänen-DFS einrichten, bei dem alle Domain Controller als Stammserver dienen können und damit auch beim Ausfall eines Server die Struktur weiterhin erreichbar bleibt. Ab Windows 2003 können Sie sogar mehrere DFS-Stämme auf einem Server einrichten.

Damit können Sie den Zugriff der Anwender vom Servernamen lösen und auf den Domänennamen binden. Das kann z.B. wie folgt aussehen:

In der Domäne MSXFAQ.DE gibt es einen Domänen-DFS-Stamm "DFS". Darunter gibt es DFS-Verknüpfungen auf die eigentlichen Freigaben der einzelnen Server. Beim Zugriff auf \\msxfaq.de\dfs\gs verbindet sich mein Client daher in Wirklichkeit mit \\server3\gs . Das passiert transparent im Hintergrund. Wenn die Freigabe später einmal auf einen anderen Server migriert werden muss, dann werden die Daten samt Berechtigungen einfach kopiert/verschoben und die Verknüpfung umgehängt. Nach kurzer Zeit (max. 1800 Sekunden) haben alle Clients dies bemerkt.

Auf dem Bild sehen Sie auch noch das Verzeichnis INFO, welches auf zwei Freigaben verknüpft ist. Dies ist eine Option, um den Zugriff von Anwendern auf verschiedene Server zu verteilen. (höhere Verfügbarkeit, Lastverteilung). Allerdings müssen Sie natürlich sicherstellen, dass die Daten identisch sind. Dies kann durch das Windows eigene FRS geschehen oder durch eigene Kopierroutinen (ROBOCOPY etc.). Die Grenzen dieser Replikation sind aber spätestens bei großen Dateien oder z.B. ACCESS-Datenbanken erreicht, da Datei und Satzsperrungen natürlich nicht repliziert werden. Allerdings ist dies z.B.: eine gute Option um Datenblätter und andere "ReadOnly"-Daten auch auf mehreren Standorten bereit zu stellen. Windows XP nutzt nämlich bevorzugt den Server, der netztechnisch nahe steht. Vorausgesetzt sie haben im Active Directory ihre Standorte und Dienste korrekt gepflegt.

Wer sich nun darüber beschwerten möchte, dass Sie immer nur die erste Ebene des DFS verlinken können, dann trösten Sie sich einfach damit, dass Sie natürlich auch rekursiv eine DFS-Link auf ein anderes DFS verbinden können. Das ganze funktioniert bis zu einer Verschachtelungstiefe von acht Ebenen.

Vererbung mit DENY und expliziten ALLOW

Eine Besonderheit bei der Vergabe von Berechtigungen sollten Sie kennen. In der Regel überschreibt ein "DENY-Recht" ein ALLOW-Recht. Aber in einem einzigen Fall wird dies ausgehebelt.

Explizites ALLOW überschreibt ein DENY

Weil das nicht ganz so einfach zu verstehen ist, hier ein Beispiel mit drei Verzeichnissen:

Verzeichnis Gesetzte und vererbte Rechte Effektive Rechte für TESTUSER
C:\ Explizit: JEDER: READ
Explizit: ADMIN FULL
Explizit: TESTUSER: DENY WRITE
Testbenutzer kann Lesen aber nicht schreiben.
C:\Test1
Vererbung aktiv
Vererbt: JEDER: READ
Vererbt: ADMIN FULL (vererbt)
Vererbt: TESTUSER: DENY WRITE
Testbenutzer kann Lesen aber nicht schreiben.
C:\Test1\Test2
Vererbung aktiv
Vererbt: JEDER: READ
Vererbt: ADMIN FULL
Vererbt: TESTUSER: DENY WRITE
Explizit: TESTUSER: FULL
Testbenutzer kann Lesen und Schreiben.
Explizites ALLOW gewinnt über vererbtes DENY
C:\TEST1\Test2\test3
Vererbung aktiv
Vererbt: JEDER: READ
Vererbt: ADMIN FULL
Vererbt: TESTUSER: DENY WRITE
Vererbt: TESTUSER: FULL
Testbenutzer kann Lesen aber nicht schreiben.
Beide Rechte sind vererbt und DENY gewinnt

Vermeiden Sie es bei solchen Tests die Rechte der Wurzel C:\ zu ändern oder die Systemgruppen und Benutzer wie JEDER, Domänen Benutzer, Domänen Administratoren mit DENY einzusetzen, wenn Sie noch nicht das Ergebnis kennen.

Beim Exchange Store ist das genau so wenn Sie z.B. auf der untersten Ebene der der Datenbank selbst (nicht darüber !) einem Anwender oder eine Gruppe volle Rechte geben, dann gewinnt dies, obwohl über die Organisation ein "DENY" vererbt wird. Das ganze noch einmal anders aufbereitet:

Resultierende Rechte Allow
nicht eingetragen explizit vererbt
DENY nicht eingetragen keine Berechtigungen erlaubt erlaubt
explizit verboten verboten verboten
vererbt verboten ERLAUBT verboten

Sichtbarkeit mit Access Based Enumeration

Wenn Sie nun mit Berechtigungen arbeiten, dann kann es durchaus passieren, dass Sie auf einem Ordner zwar rechte haben, aber auf dem darüber liegenden Ordner keine Rechte. Normalerweise könnten Sie nun ihre Rechte gar nicht ausüben. Stellen Sie sich vor, Sie haben zwar den Schlüssel für ihr Bankschließfach, aber die Tür vor dem Safe ist verschlossen. Was bei Banken ganz normal ist, kann bei Netzwerken natürlich nicht funktionieren.

Zusätzlich können Sie in Windows in einer Richtlinie vorgeben, dass ein Anwender bei Angabe des absoluten Pfades auch direkt auf die Dateien zugreifen kann, wenn auf dem Web dorthin die Rechte fehlen. Aber das sind meist nur theoretische Betrachtungen, da die meisten Administratoren auf dem Share mit Berechtigungen anfangen und das freigegebene Verzeichnis entsprechend mit Berechtigungen versehen werden.

Viel unangenehmer ist ein Verhalten von Windows, dass ein Anwender beim Zugriff auf einen Ordner alle Unterordner sehen kann, selbst wenn er nicht darauf berechtigt ist. Das ist besonders in größeren Dateistrukturen ärgerlich, wenn Anwender auf Ordner klicken und die Fehlermeldung erhalten.

Seit Windows 2003 SP1 gibt es die Funktion "Access Based Enumeration", die Sie nun pro Server oder pro Freigabe aktivieren können. Ab sofort (ohne Neustart) prüft der Serverdienst nun bei jedem Objekt im Verzeichnis, ob der zugreifende Benutzer auch darauf berechtigt ist. Ohne Berechtigungen wird der Eintrag einfach nicht zurück gegeben. Bei einer saubereren Berechtigungsvergabe kann das Ergebnis dass wie folgt aussehen

Auf dem Server ist ein Verzeichnis "Group" mit unterschiedlich berechtigten Verzeichnissen frei gegeben. Die "Rote" Dosbox zeigt die Ansicht für den Administrator. Die blaue und grüne Box die Ansicht für "User1" und "User2" Sie sehen nur ihren Abteilungsordner und den gemeinsamen Teamordner. Damit ist funktioniert wurde folgendes durchgeführt

Natürlich bedeutet diese zusätzliche Prüfung durch den Serverdienst eine höhere Belastung aber Messungen von Microsoft haben gezeigt, dass bis zu 15.000 Dateien und Ordner in einem Verzeichnis die Verzögerung nicht relevant ist. Und wer hat schon so viele Dateien in einem Verzeichnis. Ich frage mich gerade was länger dauert: Die Übertragung und Anzeige dieser Datenmenge über ein WAN und meine manuelle Suche nach dem gewünschten Objekt oder die Berechnung auf dem Server. Der "Nutzen" für den Anwender ist auf jeden Fall auch etwas wert: Er "sieht" nur noch, was er erreichen kann. Bei einem "guten" Berechtigungskonzept sieht er nur wenige Verzeichnisse.

Für die, die schon immer etwas "mehr" wissen wollten: Die Freigaben eines Servers werden schon immer in der Windows Registrierung gespeichert. Entsprechend finden Sie dort zur Freigabe auch die Einstellung der Zugriffssteuerung.

Wenn Sie die Einstellung in der GUI für den kompletten Server aktivieren, dann trägt die MMC einfach nur bei allen Shares den Wert ein. Dieser Wert ist aber als "Bitmuster" zu sehen, d.h. tragen Sie bitte nicht 2048 manuell ein. Interessant ist, dass Microsoft bei einigen Freigaben (z.B.: NETLOGON) aber auch die Exchange Freigaben schon mit Werten <>0 versieht. Die Bedeutung der einzelnen Bits habe ich bislang noch nicht in Erfahrung bringen können.

Weitere Links

Keywords: Datenhaltung NTFS Freigabe DFS Vererbung ABE