M 4.332 Sichere Konfiguration der Zugriffssteuerung bei einem Samba-Server

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator

Samba überlässt die Zugriffskontrolle im Dateisystem dem Kernel des Betriebssystems. Aus diesem Grund müssen für jeden Benutzer auf dem Samba-Server sowohl ein Windows- als auch ein Unix-Benutzerkonto vorhanden sein. Das heißt, dass jeder Domänenbenutzer mit allen Gruppenmitgliedschaften im Unix-Betriebssystem existieren muss.

Die Komplexität der Zugriffssteuerung beim Einsatz von Samba hat zwei Gründe. Samba kann erstens das Windows-Rechtemodell nicht direkt auf das von Unix abbilden und zweitens wertet Samba bei einem Zugriff auf das Dateisystem folgende Schichten aus:

Unix-Dateiberechtigungen

Wenn ein Benutzer auf eine Freigabe eines Samba-Servers zugreifen will, muss sich der Benutzer zuerst am Samba-Dienst anmelden. Samba prüft anschließend, ob der angemeldete Benutzer im Unix-Dateisystem die nötigen Rechte für den Zugriff besitzt.

Samba bildet das Windows-Rechtemodell folgendermaßen im Unix-Dateisystem ab: Aus dem Standard Unix-Triplet "Benutzer" / "Gruppe" / "Andere Benutzer" ("user" / "group" / "others") wird eine NT ACL mit drei Elementen gebildet. Die Unix-Rechtebits werden dabei nach der folgenden Tabelle auf die NT-Berechtigungen abgebildet. Die Rechtebits für "Andere Benutzer" werden von Samba auf die Gruppe "Jeder" abgebildet. ACL-Einträge, die einem Benutzer bestimmte NT-Berechtigungen verweigern, können nicht gesetzt werden.

NT Berechtigung File Attribute Flag
Vollzugriff #
Ordner durchsuchen / Datei ausführen x
Ordner auflisten / Daten lesen r
Attribute lesen r
Erweiterte Attribute lesen r
Dateien erstellen / Daten schreiben w
Ordner erstellen / Daten anhängen w
Attribute schreiben w
Erweiterte Attribute schreiben w
Unterordner und Dateien löschen w
Löschen #
Berechtigungen lesen siehe Text
Berechtigungen ändern #
Besitzrechte übernehmen #

Tabelle: Abbildung des Rechtemodells auf Unix-Dateisysteme

Das Zeichen "#" bedeutet, dass diese Berechtigung nur unter zwei Bedingungen für eine Datei oder ein Verzeichnis gesetzt wird. Entweder, wenn ein Windows-Administrator die Berechtigung "Vollzugriff" aktiviert, oder wenn der Benutzer oder dessen Gruppe im Unix-Dateisystem über die Berechtigungen für "lesen", "schreiben" und "ausführen" für diese Datei verfügen. Die NT Berechtigung "Berechtigungen lesen" wird einem Benutzer immer erlaubt, sobald diesem Benutzer mindestens eine weitere NT Berechtigung eingeräumt wird.

Wenn Windows NT4 Berechtigungen setzt, die nicht in dieser Tabelle aufgeführt sind, werden diese von Samba ignoriert. Eventuell vorhandene Portable Operating System Interface (POSIX) ACL-Einträge werden in derselben Art und Weise von Samba auf das NT-Rechtemodell umgesetzt. POSIX ACLs werden von Samba nur benutzt, um Berechtigungen für Benutzer und Gruppen zu setzen, wenn diese nicht die Besitzer der Datei oder des Verzeichnisses sind.

Samba kennt mehrere Möglichkeiten, um DOS -Attribute abzubilden. Diese Attribute sind Eigenschaften von Dateien, die es in dieser Form unter Unix nicht gibt. Viele Applikationen, die auf ein Netzlaufwerk zugreifen, setzen jedoch funktionierende DOS-Attribute voraus. Insgesamt kennt DOS vier verschiedene Attribute, die für Dateien vergeben werden können:

Samba bildet DOS-Attribute standardmäßig auf Unix-Bits ab:

Attribut
Unix-Recht
Maske
Parameter
Standardwert
Schreibschutz w Besitzer 200 map read only yes
Archiv x Besitzer 100 map archive yes
System x Gruppe 010 map system no
Versteckt x Andere 001 map hidden no

Tabelle: Abbildung der DOS-Attribute auf Unix-Dateisysteme

Da das Recht "Ausführen" unter DOS nicht existiert, kann das entsprechende Bit verwendet werden, um die DOS-Attribute im Unix-Dateisystem abzubilden. Das Schreibschutzbit unter DOS hat mit dem Schreibrecht des Dateibesitzers unter Unix ein ungefähr passendes Gegenstück.

Samba muss für den Eigenschafts-Dialog von Windows aus den Unix-Rechten die passenden Attribute für die Dateien erzeugen. Zudem muss Samba neu erstellten Dateien Unix-Rechte zuordnen. Wird eine Datei neu erstellt, übergibt der Client dem Server die gewünschten DOS-Attribute. Aus diesem Wunsch des Clients formt Samba einen Satz von Unix-Zugriffsrechten. Diese Rechte werden vom Parameter "create mask" eingeschränkt. Die Standardvorgabe für "create mask" ist 744, was der Maske rwxr--r-- entspricht. Der Dateieigentümer hat Schreib- und Leserecht, alle anderen haben reines Leserecht.

Samba schränkt die Rechte ein, indem der gewünschte Satz an Rechten mit einer logischen UND-Operation mit der create mask verknüpft wird. Nur die Rechte, die in "create mask" gesetzt sind, können möglicherweise in der neu erzeugten Datei auftauchen. In einem weiteren Schritt setzt Samba explizit gewünschte Zugriffsrechte anhand des Parameters "force create mode", dessen Standardwert auf 000 steht. Dies geschieht durch eine ODER-Verknüpfung mit diesem Wert.

Wenn auf neu erstellte Dateien nur der Dateibesitzer und die Gruppe Leserecht haben sollen und der Rest der die Dateien nicht lesen darf, wird die create mask = 740 gesetzt. Das maskiert das Leserecht für den Rest der Welt aus. Soll darüber hinaus die besitzende Gruppe ein Schreibrecht eingeräumt bekommen, lässt sich das durch "force create mode = 020" erreichen. Die Tabelle zeigt den Vorgang:

Gruppe erhält Schreibrecht
Aufgabenstellung rw-r--r--
create mask 740 UND rw-r-----
rw-r-----
force create mode 020 ODER ----w----
Ergebnis rw-rw----

Bei "map read only = yes" in der smb.conf verhält sich Samba folgendermaßen: Wird das DOS-Attribut "Schreibschutz" gesetzt, so setzt Samba die "w"-Bits von Besitzer / Gruppe / Andere des Dateisystemobjekts auf "0". Die "w"-Bits in ACLs werden von Samba ignoriert. Wird hingegen das DOS-Attribut "Schreibschutz" entfernt, so setzt Samba lediglich das "w"-Bit des Besitzers des Dateisystemobjekts auf "1". Die "w"-Bits für Gruppe / Andere bleiben auf "0". Außerdem gibt es noch den Parameter "map read only = Permissions". Informationen zu diesem Parameter sind in der Manpage von smb.conf zu finden.

Zu beachten ist, dass die Samba Parameter "create mask" und "directory mask" das Setzen der Unix-Rechtebits verhindern können und die DOS-Attribute somit nicht übernommen werden. Die Spalte "Maske" gibt die mindestens notwendigen Werte für die Parameter "create mask" und "directory mask" an, die nötig sind, damit Samba alle nötigen Unix-Rechtebits setzen kann.

Unter bestimmten Bedingungen kann es zu Konflikten zwischen den Unix-Berechtigungen, die sich aus den DOS-Attributen ableiten und Unix-Berechtigungen, die sich aus einer Windows-ACL ableiten, kommen.

Diese von Samba standardmäßig verwendeten Parameter zum Abbilden von DOS-Attributen auf das Unix-Dateisystem sollten nicht verwendet werden. Stattdessen sollte Samba so konfiguriert werden, dass es DOS-Attribute in "Extended Attributes" speichert. Dazu sind in der Konfigurationsdatei smb.conf folgende Einstellungen notwendig:

store dos attributes = yes
map archive = no
map read only = no

Samba Share Definitions

Der Administrator kann durch eine Vielzahl von Konfigurationsparametern in der Konfigurationsdatei smb.conf die Zugriffssteuerung auf Freigaben und das Verhalten, wann Benutzer mit der Freigabe interagieren, beeinflussen.

Die benutzer- und gruppenbezogenen Konfigurationsparameter überschreiben die im Unix-Dateisystem gültigen Zugriffsberechtigungen für Benutzer oder Gruppen. Folgende Konfigurationsparameter stehen zur Verfügung:

Die folgenden Konfigurationsparameter kontrollieren das Verhalten von Freigaben bei Operationen mit Dateien und Ordnern. Bevor einer dieser Parameter geändert wird, sollte die Manpage der Konfigurationsdatei smb.conf betrachtet werden:

Des Weiteren gibt es noch diverse Einstellungen, die das Verhalten von Freigaben in unterschiedlicher Weise beeinflussen. Bevor einer dieser Parameter geändert wird, sollte die Manpage der Konfigurationsdatei smb.conf berücksichtigt werden:

Für eine ausführliche Beschreibung aller Konfigurationsparameter sei auf die Manpage der Konfigurationsdatei smb.conf verwiesen ("man smb.conf").

Samba Share ACLs

Mit Samba kann, genauso wie mit Windows, für jede Freigabe eine ACL erstellt werden. Standardmäßig sind keine Einschränkungen aktiv. Das bedeutet, der Benutzer "Jeder" hat die Berechtigung "volle Kontrolle".

Samba speichert die ACLs für Freigaben in der Datei share_info.tdb. Samba stellt aber kein Programm zum Administrieren dieser ACLs zur Verfügung. Der Administrator ist daher auf Windows angewiesen. Unter Windows bieten sich dem Administrator folgende Möglichkeiten:

Werden dem Benutzer "Jeder" sämtliche Rechte entzogen, ohne ihn aus der ACL der Freigabe komplett zu löschen, so hat kein Benutzer mehr Zugriff auf die Freigabe. Der Grund hierfür ist, dass ACL-Einträge, die die Rechte eines Benutzers verringern, Vorrang haben vor ACL-Einträgen, die die Rechte eines Benutzers ausweiten.

Prüffragen: