Inhaltsverzeichnis
Fortgeschrittene Windows-Benutzer sind häufig verwirrt, wenn sich eine Änderung der Besitzrexhte an Dateien oder Verzeichnissen auf dem Samba-Server nicht so auswirkt, wie sie es erwarten. MS-Administratoren verwirrt es oft, wenn sie versuchen, Ihre Daten mit Zugriffskontroll-Listen vor unerlaubten Zugriffen zu schützen.
Viele UNIX-Administratoren sind nicht mit der MS Windows-Umgebung vertraut. Besondere Probleme ergeben sich aus den Benutzerwünschen bezüglich der Kontrolle von Dateien und Verzeichnissen und deren Einrichtung.
Das Problem rührt aus den Unterschieden bei den Datei- und Verzeichnis-Benutzerrechten der beiden Systeme her. Diesen Unterschied kann auch Samba nicht wirklich aus der Welt schaffen, aber es schafft eine Brücke zwischen den Umgebungen.
Die POSIX-(UNIX, LINUX-)Zugriffskontroll-Technologie (ACLs) gibt es schon seit Jahren, aber sie wurde nie sehr intensiv genutzt. Dies erklärt vielleicht auch, warum es so lange gedauert hat, bis die die ACL-Technik in kommerzielle Linux-Produkte eingebunden wurde. MS-Administratoren wird dies erstaunen, da diese Technik seit Jahren elementarer Bestandteil von Windows-Produkten ist.
Dieses Kapitel soll die Punkte im Einzelnen klären, die mit Samba-3 nötig und möglich sind, damit Administratoren eine optimale Zugriffsverwaltung für ihre Windows-Benutzer einrichten können.
Samba ist nicht primär dafür gedacht, eine Unix-Plattform in eine Windows-Plattform zu verwandeln, sondern soll die bestmögliche Kompatibilität zwischen den beiden Systemen schaffen.
Samba ermöglicht eine hohe Flexibilität beim Systemzugriff. Hier sind es die Zugriffskontrollmöglichkeiten der aktuellen Version 3 von Samba.
Samba-Zugriffskontrollmöglichkeiten
Unix-Datei- und -Verzeichnis-Berechtigungen
Samba arbeitet mit den UNIX-Dateizugriffskontrollen zusammen. Benutzer greifen dabei als Windows-Benutzer auf Samba zu. Informationen über den Benutzer werden beim Einloggen übergeben. Samba benutzt diese Login-Informationen, um zu entscheiden, ob einem Benutzer Zugriff auf Systemdaten gewährt werden soll oder nicht. Dieses Kapitel enthält eine Übersicht über UNIX-Berechtigungen für Nutzer, die diese nicht kennen oder diese für etwas verwirrend halten.
Samba-Netzlaufwerksdefinitionen
Beim Konfigurieren von Netzlaufwerken mit Samba in der Datei smb.conf kann der Administrator Berechtigungen des darunter liegenden Dateisystems verändern und beeinflussen. Dies ermöglicht teilweise eine Annäherung an das Verhalten, das Windows-Benutzer erwarten. Dieser Weg ist aber nur selten die beste Lösung. Die grundlegenden Möglichkeiten werden hier beschrieben.
Samba-Netzlaufwerkskontroll-Listen
Wie in Windows NT ist es auch in Samba möglich, Netzlaufwerkskontroll-Listen zu erstellen. Einige Anwender machen Gebrauch davon. Es ist zurzeit eine der leichtesten Möglichkeiten, Zugriffskontrolle zu erreichen, im Gegensatz zu anderen komplexeren Methoden.
MS Windows-Zugriffskontroll-Listen und UNIX-Zugriffskontroll-Listen
Der Gebrauch von UNIX-Kontroll-Listen ist nur möglich, wenn diese Funktionen in dem darunter liegenden Dateisystem implementiert sind. In jedem anderen Fall ist deren Nutzung nicht möglich. Aktuelle Unix-Systeme sollten diese Unterstützung bieten. Es gibt Patches für den Linux-Kernel, die diese Möglichkeit implementieren, falls sie noch nicht vorhanden ist. Viele Unix-Systeme werden mit der Unterstützung ausgeliefert, und in diesem Kapitel versuchen wir, den Benutzern deren Gebrauch zu erklären.
Es ist wichtig festzustellen, dass MS Windows ein völlig anderes Dateizugriffssystem benutzt als UNIX-Systeme. Wir werden erst die Unterschiede erklären und dann zeigen, wie Samba hilft, diese Unterschiede zu überbrücken.
Samba benutzt das UNIX-Dateisystem, d.h., Samba verhält sich innerhalb der Möglichkeiten des UNIX-Dateisystems. Aber Samba ist auch dafür verantwortlich, das Verhalten des Windows-Dateisystems nachzustellen.
Glücklicherweise bietet Samba eine Reihe von Konfigurationsmöglichkeiten, um die Unterschiede zu überbrücken. Wir werden einige dieser Einstellungsmöglichkeiten betrachten, jedoch nicht alle. Wer mehr wissen möchte, sollte die Manpage der Datei smb.conf lesen.
Im Folgenden sehen Sie einen Vergleich des UNIX-Dateisystems mit dem Dateisystem von Windows NT/200x:
Windows-Dateinamen können 254 Zeichen lang sein, UNIX beherrscht bis zu 1023 Zeichen. Die Dateierweiterung beschreibt in Windows einen bestimmten Dateityp, in UNIX-Systemen ist das nicht zwingend so.
Was unter Windows ein 'Ordner' ist, heißt in UNIX 'Verzeichnis'.
Im Allgemeinen sind Dateinamen unter Windows 8+3 Zeichen lang und werden in Großbuchstaben erstellt. Dateinamen, die länger sind, sind in ihrer Schreibweise case-insensitive (d.h., es spielt keine Rolle, ob sie groß- oder kleingeschrieben werden).
Unter UNIX sind alle Dateien und Verzeichnisse case-sensitive (d.h., es spielt sehr wohl eine Rolle, ob ein Dateiname groß- oder kleingeschrieben wird).
Im folgenden Beispiel würden die Dateinamen von Windows völlig gleich interpretiert werden, für UNIX wären es drei verschiedene Dateien:
MYFILE.TXT MyFile.txt myfile.txt
Es wird ziemlich klar, dass diese Dateien in Windows nicht nebeneinander (im selben Ordner) stehen könnten, unter ist das UNIX jedoch jederzeit möglich.
Was soll nun Samba tun, wenn es auf diese Dateien trifft? Die Lösung besteht darin, dass die erste Datei für Windows-Benutzer sichtbar ist, die anderen jedoch nicht verfügbar bzw. unsichtbar sind; eine andere Lösung ist nicht denkbar.
MS Windows und DOS benutzen das Zeichen \ (Backslash) als Verzeichnis-Trennzeichen, UNIX benutzt (wie im Internet üblich) den Slash / als Verzeichnis-Trennzeichen. Dies wird von Samba transparent (für den Windows-Benutzer unbemerkt) umgesetzt.
In MS Windows werden verschiedene Festplatten-Partitionen mit Buchstaben belegt. C: Es gibt unter UNIX kein ähnliches Konzept, Festplatten-Teile (Partitionen) werden als Teil des Dateisystems eingebunden (gemountet). Was unter DOS C:\ ist, wäre unter UNIX einfach / (root = Wurzel des Dateisystembaums).
MS Windows kennt keine Dateien, deren Namen mit einem Punkt beginnen (.). In UNIX werden solche Dateien häufig in den „Home“-Verzeichnissen (Heimatverzeichnissen) von Benutzern gefunden. Punktdateien(.) sind typischerweise Start- oder Konfigurationsdateien für UNIX-Programme.
Unter Windows sind Verknüpfungen spezielle Dateitypen, die zum verkürzten Starten von Programmen in deren realen Ordner dienen. Auch unter UNIX gibt es Verknüpfungen und Verkürzungen, diese werden jedoch völlig unterschiedlich gehandhabt.
Symbolische Verknüpfungen unter UNIX halten die aktuellen Informationen von Dateien oder Verzeichnissen. Schreib- und Lesezugriffe auf eine Verknüpfung verhalten sich genauso wie bei der originalen Datei. Symbolische Verknüpfungen nennt man auch weiche Verknüpfungen. Harte Verknüpfungen kennt MS Windows nicht, diese würden das Benutzen ein- und derselben Datei unter mehreren Namen gleichzeitig ermöglichen.
Es gibt noch viele Unterschiede, die einem Windows-Administrator unangenehm im Umgang mit UNIX sein könnten.
Es gibt grundsätzlich drei Möglichkeiten, um Ordner (Verzeichnisse) zu verwalten: create (erstellen), delete (löschen) und rename (umbenennen ).
Tabelle 13.1. Verwaltung von Ordnern (Verzeichnissen) mit UNIX und Windows
| Aktion | Windows-Befehl | UNIX-Befehl |
|---|---|---|
| create | md folder | mkdir folder |
| delete | rd folder | rmdir folder |
| rename | rename oldname newname | mv oldname newname |
Jedem Administrator wird geraten, zusätzlich Handbücher zu diesem Thema zu studieren. Die meisten Fälle können mit den grundlegenden Zugriffsmöglichkeiten von UNIX gelöst werden, ohne die Technologien der Zugriffskontroll-Listen (ACLs) oder der erweiterten Attribute (EAs) zu verwenden.
Die Datei- und Verzeichnisverwaltung von UNIX basiert auf den folgenden Zugriffsmöglichkeiten:
$ ls -la total 632 drwxr-xr-x 13 maryo gnomes 816 2003-05-12 22:56 . drwxrwxr-x 37 maryo gnomes 3800 2003-05-12 22:29 .. dr-xr-xr-x 2 maryo gnomes 48 2003-05-12 22:29 muchado02 drwxrwxrwx 2 maryo gnomes 48 2003-05-12 22:29 muchado03 drw-rw-rw- 2 maryo gnomes 48 2003-05-12 22:29 muchado04 d-w--w--w- 2 maryo gnomes 48 2003-05-12 22:29 muchado05 dr--r--r-- 2 maryo gnomes 48 2003-05-12 22:29 muchado06 drwsrwsrwx 2 maryo gnomes 48 2003-05-12 22:29 muchado08 ---------- 1 maryo gnomes 1242 2003-05-12 22:31 mydata00.lst --w--w--w- 1 maryo gnomes 7754 2003-05-12 22:33 mydata02.lst -r--r--r-- 1 maryo gnomes 21017 2003-05-12 22:32 mydata04.lst -rw-rw-rw- 1 maryo gnomes 41105 2003-05-12 22:32 mydata06.lst $
Die Reihen oben repräsentieren (von rechts nach links): die Berechtigung, die Anzahl der „harten“ Links einer Datei, den Besitzer (einer Datei), die Besitzergruppe und die Größe in Bytes.
In ??? finden Sie eine Übersicht.
Jedes Bit kann auch unbesetzt sein und wird durch ein Minus (-) dargestellt.
Beispiel 13.1. Beispieldatei
-rwxr-x--- Bedeutet: Der Besitzer kann lesen, schreiben und ausführen. Die Gruppe kann lesen und ausführen. Andere haben keine Rechte.
Zusätzliche Möglichkeiten im Typen-Feld [type] sind: c = character device, b = block device, p = pipe device, s = UNIX-Domain-Socket.
Die Zeichen rwxXst für die Berechtigungen für Nutzer, Gruppen und andere sind: lesen (r), schreiben (w), ausführen (oder Ordner-Zugriff) (x), exklusives Ausführen, wenn der Nutzer berechtigt für die Datei oder den Ordner ist (X), Setzen der ID des Nutzers bei Ausführung (s), Sticky-Bit (begleitendes Bit)(t).
Wenn das Sticky-Bit auf einem Verzeichnis gesetzt ist, können darin enthaltene Dateien nur vom Nutzer root oder dem Ersteller der Dateien gelöscht werden. In jedem anderem Fall sind alle anderen Dateivorgänge (löschen, lesen, umbenennen) erlaubt. Das Sticky-Bit wird häufig für Verzeichnisse wie das /tmp-Verzeichnis benutzt, die gewöhnlich für jeden beschreibbar sind.
Wenn auf einem Verzeichnis das Gruppen- oder Nutzer-Identitätsbit gesetzt ist, dann erhalten Nutzer und Gruppen Berechtigungen auf darin enthaltene Dateien. Dies ermöglicht das Erstellen von Verzeichnissen, in denen alle Nutzer einer Gruppe auf eine Datei zugreifen können sollen, insbesondere dann, wenn es nicht erwünscht ist, dass diese Datei exklusiv einem Benutzer gehört, der zu einer anderen primären Gruppe gehört als die übrigen Nutzer.
Falls ein Verzeichnis auf drw-r----- gesetzt ist, heißt dies, dass der Eigner in ihm Dateien lesen und schreiben (erstellen) kann, aber dadurch, dass das Ausführen-Flag (x) nicht gesetzt ist, können die Dateien in diesem Verzeichnis von niemandem gesehen werden. Die Gruppe kann Dateien lesen, aber keine neuen anlegen. Falls Dateien in dem Verzeichnis für die Gruppe les- oder schreibbar gesetzt sind, können die Gruppenmitglieder diese schreiben oder löschen.
Die folgenden Parameter in den Dateisektionen von smb.conf definieren eine Freigabekontrolle oder betreffen Zugriffskontrollen. Bevor Sie eine dieser folgenden Optionen benutzen, sehen Sie bitte in den Manpages für smb.conf nach.
Benutzer- und gruppen-basierende Kontrollen können sehr hilfreich sein. In manchen Situationen ist es sogar gewünscht, dass alle Dateisystem-Operationen behandelt werden, als wären sie von einem einzelnen Benutzer durchgeführt worden. Die Benutzung von force user und force group wird dies erreichen. In anderen Situationen ist es vielleicht notwendig, ein paranoides Maß an Kontrollen einzusetzen, um sicherzustellen, dass es nur bestimmten ausgewählten und autorisierten Personen möglich ist, auf eine Freigabe oder dessen Inhalt zuzugreifen. Hier kann die Benutzung von valid users oder invalid users am hilfreichsten sein.
Wie immer ist es höchst ratsam, die einfachste Methode für die Verwaltung und die eindeutigste Methode für die Zugriffskontrolle zu verwenden. Denken Sie daran, dass nach dem Verlassen Ihrer Arbeit jemand anderes Unterstützung geben können muss, und wenn er eine große Baustelle vorfindet oder Ihre Vorgehensweise nicht versteht, kann es durchaus möglich sein, dass Samba gelöscht wird oder eine alternative Lösung eingesetzt wird.
??? zählt diese Kontrollen auf.
Tabelle 13.2. Benutzer- und gruppen-basierende Kontrollen
Die folgenden auf Datei- und Verzeichnis-Berechtigungen basierenden Kontrollen können, wenn sie falsch angewendet werden, durch Fehlkonfigurationen zu erheblichen Schwierigkeiten bei der Fehlersuche führen. Benutzen Sie diese sparsam und sorgfältig. Durch die schrittweise Einführung einer Berechtigung nach der anderen können unerwünschte Nebeneffekte entdeckt werden. Im Fehlerfall kommentieren Sie alle aus und führen sie dann Schritt für Schritt in einer kontrollierten Art und Weise wieder ein.
In ??? finden Sie Informationen, die diese Parameter betreffen.
Tabelle 13.3. Auf Datei- und Verzeichnis-Berechtigungen basierende Kontrollen
Das Folgende ist dokumentiert, da es weit verbreitet ist, dass Administratoren unabsichtlich Barrieren beim Einrichten von Dateizugriffen dadurch aufbauen, dass sie die genauen Auswirkungen von Dateieinstellungen in smb.conf nicht verstehen (siehe ???).
Tabelle 13.4. Andere Kontrollen
Dieses Kapitel handelt davon, wie Samba für Zugriffskontroll-Einschränkungen bei Freigaben konfiguriert werden kann. Standardmäßig setzt Samba keine Einschränkungen auf die Freigabe selbst. Einschränkungen auf der Freigabe selbst können auf MS Windows NT4/200x/XP-Freigaben gesetzt werden. Dies kann ein effektives Verfahren sein, um zu regeln, wer sich mit einer Freigabe verbinden darf. In Ermangelung spezifischer Einschränkungen sieht die Standardeinstellung vor, dem globalen Benutzer Jeder - Volle Kontrolle (volle Kontrolle, Ändern und Lesen) zu erlauben.
Zurzeit stellt Samba kein Werkzeug zum Konfigurieren von Zugriffskontroll-Einstellungen auf einer Freigabe selbst zur Verfügung. Samba hat die Fähigkeit, Zugriffskontroll-Einstellungen zu speichern und damit zu arbeiten, aber der einzige Weg, diese Einstellungen zu erzeugen, ist der NT4 Server Manager oder die Windows 200x MMC für Computer-Verwaltung.
Samba speichert die Zugriffskontroll-Einstellungen pro Freigabe in einer Datei namens share_info.tdb. Der Ablageort dieser Datei auf Ihrem System hängt davon ab, wie Sie Samba kompiliert haben. Der Standard-Ablageort für Sambas tdb-Dateien ist /usr/local/samba/var. Falls das tdbdump-Werkzeug auf Ihrem System kompiliert und installiert worden ist, können Sie den Inhalt dieser Datei wie folgt ausführen: tdbdump share_info.tdb, in dem Verzeichnis, das die tdb-Dateien enthält.
Das beste Werkzeug für eine Aufgabe ist plattformabhängig. Wählen Sie das beste Werkzeug für Ihre Umgebung.
Das Werkzeug, das Sie zum Verwalten von Freigabeberechtigungen auf einem Samba-Server nutzen müssen, ist der NT Server Manager. Der Server Manager wird mit den Windows NT4 Server-Produkten, aber nicht mit Windows NT4 Workstation ausgeliefert. Sie können den NT Server Manager für MS Windows NT4 Workstation von Microsoft erhalten (Details weiter unten).
Prozedur 13.1. Anweisungen
Starten Sie den NT4 Server Manager, und klicken Sie auf den Samba-Server, den Sie administrieren möchten. In dem Menü wählen Sie , dann klicken Sie auf .
Klicken Sie auf die Freigabe, die Sie verwalten möchten, dann gehen Sie auf Eigenschaften und klicken auf die Registerkarte Berechtigungen. Jetzt können Sie Zugriffskontroll-Einstellungen nach Belieben hinzufügen und ändern.
Auf MS Windows NT4/200x/XP werden Systemzugriffskontroll-Listen für Freigaben mit eigenen Werkzeugen gesetzt, meist durch den Dateimananger. In Windows 200x beispielsweise rechtsklicken Sie auf den Freigabeordner, wählen und klicken dann auf Berechtigungen. Die Standardberechtigung unter Windows NT4/200x erlaubt „jedem“ volle Kontrolle über die Freigabe.
MS Windows 200x und spätere Versionen enthalten ein Werkzeug namens Computerverwaltungs-Snap-In für die Microsoft Management Konsole (MMC). Dieses Werkzeug befindet sich in der .
Prozedur 13.2. Anweisungen
Nachdem Sie die MMC über das Computerverwaltungs-Snap-In gestartet haben, klicken Sie auf den Menüeintrag und wählen dann Mit einem anderen Computer verbinden. Falls Sie nicht an einer Domäne angemeldet sind, werden Sie aufgefordert, einen Domänenbenutzer und ein Passwort einzugeben. Dies wird Sie gegenüber der Domäne authentifizieren. Falls Sie bereits als ein Benutzer mit Administrationsrechten angemeldet sind, wird dieser Schritt nicht angeboten.
Falls der Samba-Server nicht in der Box Computer auswählen angezeigt wird, geben Sie den Namen des Samba-Zielservers im Feld Name: ein. Klicken Sie jetzt auf den Button neben Systemwerkzeuge, dann auf den Button neben Freigabeordner im linken Bereich.
Im rechten Bereich doppelklicken Sie auf die Freigabe, auf die Sie Zugriffskontroll-Berechtigungen vergeben möchten. Dann klicken Sie auf die Registerkarte Freigabe-Berechtigungen. Jetzt ist es möglich, Zugriffskontroll-Einheiten zu dem Freigabe-Ordner hinzuzufügen. Merken Sie sich, welchen Zugriffstyp (volle Kontrolle, ändern, lesen) Sie für jeden Eintrag vergeben möchten.
Seien Sie vorsichtig. Falls Sie alle Berechtigungen von dem Jeder Benutzer wegnehmen, ohne diesen Benutzer entfernt zu haben, wird anschließend kein Benutzer mehr in der Lage sein, auf die Freigabe zuzugreifen. Dies ist ein Ergebnis dessen, was als ACL-Präzedenz bekannt ist. Jeder mit dem Eintrag kein Zugriff heißt, dass MaryK, die Teil der Gruppe Jeder ist, keinen Zugriff hat, obwohl ihr explizit volle Zugriffsrechte gegeben wurden.
Windows NT-Clients können ihre eigene Dialogbox für Sicherheitseinstellungen verwenden, um UNIX-Berechtigungen anzuzeigen und zu ändern.
Diese Fähigkeit ist so umsichtig, dass die Sicherheit des UNIX-Hosts, auf dem Samba läuft, nicht gefährdet wird und dennoch alle Dateiberechtigungsregeln, die ein Samba-Administrator setzt, beachtet werden.
Samba versucht nicht, die POSIX-ACLs zu übertreffen, so dass die vielen feiner abgestimmten Zugriffskontroll-Optionen, die Windows zur Verfügung stellt, einfach ignoriert werden.
Alle Zugriffe auf UNIX/Linux-Systemdateien durch Samba werden durch die Betriebssystem-Dateizugriffskontrollen kontrolliert. Bei der Fehlersuche nach Dateizugriffsproblemen ist es enorm wichtig, die Identität des Windows-Benutzers herauszufinden, wie sie von Samba an dieser Stelle des Dateizugriffs gesehen wird. Diese kann am besten durch die Samba-Protokolldateien ermittelt werden.
Von einem NT4/2000/XP-Client aus rechtsklicken Sie auf jede Datei oder Verzeichnis in einem Samba- gemounteten Laufwerksbuchstaben oder UNC-Pfad. Wenn das Menü aufgeht, klicken Sie auf den Eintrag Eigenschaften am Fuß des Menüs. Dies startet die Dialogbox Eigenschaften. Klicken Sie auf die Registerkarte Sicherheit, Erweitert und Sie werden drei Panels sehen: , und . Der Button wird entweder eine Fehlermeldung `A requested privilege is not held by the client' verursachen, falls der Benutzer kein NT-Administrator ist, oder einen Dialog erscheinen lassen, mit dem ein Administrator Überwachungsgrundlagen einer Datei hinzufügen kann, wenn der Benutzer als NT-Administrator angemeldet ist. Dieser Dialog funktioniert derzeit nicht mit einer Samba-Freigabe, da der einzige Button, der -Button, es derzeit nicht zulässt, eine Benutzerliste anzuzeigen.
Wenn Sie auf den Button klicken, erscheint eine Dialogbox, die Ihnen zeigt, wem die betreffende Datei gehört. Der Name des Eigentümers wird wie folgt angezeigt:
„SERVER\Benutzer (Langer Name)“
SERVER ist der NetBIOS-Name des Samba-Servers, Benutzer der Name des UNIX-Benutzers, dem die Datei gehört, und (Langer Name) ist die Beschreibung, die den Benutzer ausweist (normalerweise wird dies im GECOS-Feld der UNIX-Passwortdatenbank gefunden). Klicken Sie auf den Button , um diesen Dialog zu entfernen.
Falls der Parameter nt acl support auf false gesetzt ist, wird der Dateieigentümer als NT-Benutzer Jeder angezeigt.
Mit dem -Button können Sie nicht die Eigentumsrechte an dieser Datei auf sich selbst setzen (ein Anklicken zeigt eine Dialogbox, die angibt, dass der Benutzer, als der Sie gerade auf dem NT-Client angemeldet sind, nicht gefunden werden kann). Der Grund hierfür ist, dass das Ändern der Eigentumsrechte auf eine Datei eine privilegierte Operation in UNIX ist, die ausschließlich dem Benutzer root obliegt. Indem Sie auf diesen Button klicken, veranlassen Sie NT dazu, die Eigentumsrechte einer Datei auf den am NT-Client gegenwärtig angemeldeten Benutzer zu übertragen; dies funktioniert jedoch zu diesem Zeitpunkt mit Samba nicht.
Es gibt ein NT-Kommando, chown, das mit Samba funktioniert und es einem Benutzer, der mit Administratorprivilegien an einen Samba-Server als root angeschlossen ist, erlaubt, die Eigentumsrechte von Dateien sowohl auf lokaler NTFS-Dateisystemebene als auch auf entfernt gemounteten NTFS- oder Samba-Laufwerken zu setzen. Dies ist verfügbar als Teil der von Jeremy Allison vom Samba-Team geschriebenen Seclib-NT-Sicherheitsbibliothek, und Sie können es von der FTP-Hauptseite von Samba abrufen.
Der dritte Button ist die Schaltfläche . Wenn Sie sie anklicken, öffnet sich eine Dialogbox, die sowohl die Berechtigungen als auch den UNIX-Besitzer für die Datei und das Verzeichnis anzeigen. Der Eigentümer wird wie folgt angezeigt:
SERVER\ Benutzer (Langer Name)
SERVER ist der NetBIOS-Name des Samba-Servers, Benutzer ist der Name des UNIX-Benutzers, dem die Datei gehört, und (Langer Name) ist die Beschreibung, die den Benutzer ausweist (normalerweise wird dies im GECOS-Feld der UNIX-Passwortdatenbank gefunden).
Falls der Parameter nt acl support auf false gesetzt ist, wird der Dateieigentümer als NT-Benutzer Jeder angezeigt.
Das Berechtigungsfeld wird bei Dateien und Verzeichnissen anders dargestellt, also werde ich die Art, wie Dateiberechtigungen angezeigt werden, zuerst beschreiben.
Die Standard-UNIX-Drillinge Benutzer/Gruppe/Welt und die korrespondierenden Berechtigungen lesen, schreiben, ausführen werden von Samba in ein aus drei Elementen bestehendes NT-ACL mit den Bits „r“, „w“ und „x“ von Samba in ein aus drei Elementen bestehendes NT-ACL gemappt, wobei die Bits „r“, „w“ und „x“ auf passende NT-Berechtigungen gemappt werden. Die UNIX-Welt-Berechtigungen werden in die globale NT-Gruppe Jeder gemappt, gefolgt von der Berechtigungsliste, die unter UNIX für Welt gilt. Die UNIX Eigentümer- und Gruppenberechtigungen werden als ein NT- Benutzer-Symbol und ein NT-Symbol lokale Gruppe angezeigt, beziehungsweise durch die nachfolgende Berechtigungsliste für den UNIX-Benutzer und die UNIX-Gruppe.
Dadurch, dass viele UNIX-Berechtigungssätze nicht auf allgemeine NT-Namen wie lesen, ändern oder volle Kontrolle passen, werden gemeinhin die Berechtigungen durch Wörter wie Spezieller Zugriff in der NT-Anzeigeliste angeführt.
Doch was passiert, wenn die Datei keine Berechtigungen für eine bestimmte UNIX-Benutzergruppe oder Welt-Komponente erlaubt? Um es zu ermöglichen, „keine Berechtigungen“ zu sehen und zu ändern, übergibt Samba das NT-ACL-Attribut Eigentum übernehmen (das keine Bedeutung für UNIX hat) und meldet eine Komponente ohne Berechtigung, wie wenn das NT-Bit O gesetzt wäre. Dies wurde natürlich deshalb gewählt, um es wie eine Null aussehen zu lassen, was bedeutet: Keine (Null) Berechtigungen. Weitere Details zu dieser Entscheidung werden weiter unten angeführt.
Verzeichnisse auf einem NTFS-Dateisystem haben zwei verschiedene Berechtigungssätze. Der erste Satz ist die ACL, die auf das Verzeichnis selbst gesetzt ist. Sie wird normalerweise im ersten Satz der Klammern im normalen NT-Stil RW angezeigt. Dieser erste Satz an Berechtigungen wird durch Samba in exakt derselben Art und Weise erzeugt, wie es normale Dateiberechtigungen werden, und wird auch auf diesselbe Art und Weise angezeigt.
Der zweite Satz von Verzeichnis-Berechtigungen hat keine echte Bedeutung in der UNIX-Berechtigungs-Welt und repräsentiert die vererbten Berechtigungen, die jede Datei erben würde, die in diesem Verzeichnis erzeugt wird.
Samba vereinigt diese vererbten Berechtigungen für NT, indem es die UNIX-Berechtigungsmodi als eine NT-ACL zurückgibt, so wie es eine Datei erhalten würde, die Samba für diese Freigabe erzeugt hat.
Das Ändern von Datei- und Verzeichnis-Berechtigungen ist genauso einfach wie das Ändern der Anzeige der Berechtigungen in der Dialogbox und das Klicken auf . Jedoch gibt es Einschränkungen, die ein Benutzer kennen sollte und die mit den Standard-Samba-Berechtigungsmasken und mit dem Vergeben von DOS-Attributen zu tun haben, die ebenfalls in diesem Zusammenhang berücksichtigt werden müssen.
Falls der Parameter nt acl support auf false gesetzt ist, schlägt jeder Versuch, Sicherheitsberechtigungen zu setzen, mit einer Meldung 'Zugriff verweigert' fehl.
Das Erste, was anzumerken ist, ist, dass der Button keine Samba-Benutzerliste zurückgeben wird (es wird eine Fehlermeldung ausgegeben, die besagt 'Der Remoteprozedur-Aufruf schlug fehl und konnte nicht ausgeführt werden'). Das bedeutet, dass Sie nur die gegenwärtigen Benutzer/Gruppen/Welt-Berechtigungen, die in der Dialogbox angezeigt werden, ändern können. Dies funktioniert deshalb so gut, weil es die einzigen Berechtigungen sind, die UNIX augenblicklich hat.
Falls ein Berechtigungsdrilling (entweder Benutzer, Gruppe oder Welt) von der Liste der Berechtigungen in der NT-Dialogbox entfernt wird und dann der -Button angeklickt wird, wird dies auf UNIX-Seite als „keine Berechtigungen“ angewendet. Wenn Sie sich dann die Berechtigungen nochmals ansehen, wird der Eintrag „keine Berechtigungen“ als das NT-Flag O wie oben beschrieben angezeigt. Dies erlaubt es Ihnen, Berechtigungen wieder auf eine Datei oder Verzeichnis zu setzen, nachdem Sie diese von einer der Drillingskomponenten entfernt hatten.
Weil UNIX nur die Bits „r“, „w“ und „x“ einer NT-ACL unterstützt, werden diese ignoriert, falls andere NT-Sicherheitsattribute wie Löschzugriff ausgewählt wurden, falls diese auf einem Samba-Server angewandt werden.
Wenn Berechtigungen auf ein Verzeichnis gesetzt werden, wird der zweite Satz an Berechtigungen (im zweiten Klammern-Paar) standardmäßig auf alle Dateien in diesem Verzeichnis angewandt. Falls Sie dies nicht wünschen, müssen Sie die Auswahlbox Berechtigungen auf existierende Dateien zurücksetzen in dem NT-Dialog vor einem Klicken auf abwählen.
Falls Sie es wünschen, alle Berechtigungen von einer Benutzer/Gruppe/Welt-Komponente zu entfernen, können Sie entweder eine Komponente auswählen und auf den Button klicken, oder setzen Sie die Komponente darauf, nur die spezielle Berechtigung Berechtigung übernehmen (angezeigt als O) zu setzen.
Es gibt vier Parameter, die das Wechselspiel mit den Samba-Standard-Parametern create mask kontrollieren. Diese sind:
Sobald ein Benutzer auf klickt, um Berechtigungen zu setzen, mappt Samba die angegebenen Berechtigungen in einen Benutzer/Gruppe/Welt-Drillingssatz und gleicht dann die geänderten Berechtigungen für diese Datei mit den in security mask gesetzten Bits ab. Jedes geänderte Bit, das nicht mit „1“ in diesem Parameter gesetzt wurde, bleibt in den Dateiberechtigungen unberücksichtigt.
Grundsätzlich werden Null-Bits in der security mask als ein Satz von Bits behandelt, die der Benutzer nicht ändern darf, Einer-Bits darf der Benutzer ändern.
Falls er nicht ausdrücklich gesetzt worden ist, zeigt dieser Parameter standardmäßig auf denselben Wert wie der Parameter create mask. Um es einem Benutzer zu erlauben, alle Berechtigungen von Benutzer/Gruppe/Welt an einer Datei zu ändern, setzen Sie diesen Parameter auf 0777.
Als Nächstes gleicht Samba die geänderten Berechtigungen einer Datei mit den Bits ab, die im force security mode-Parameter gesetzt sind. Jedes geänderte Bit wird passend zu den auf „1“ gesetzten Bits in diesem Parameter zwangsläufig gesetzt.
Grundsätzlich werden Bits aus dem Parameter force security mode als ein Satz von Bits behandelt, die der Benutzer immer auf „an“ gesetzt hat, wenn die Sicherheit einer Datei geändert wird.
Falls er nicht ausdrücklich gesetzt worden ist, zeigt dieser Parameter standardmäßig auf denselben Wert wie der Parameter force create mode. Um es einem Benutzer zu erlauben, alle Berechtigungen von Benutzer/Gruppe/Welt an einer Datei ohne Berechtigungen zu ändern, setzen Sie diesen Parameter auf 000. Die Parameter security mask und force security mode werden angewendet, um die Anfragen in dieser Reihenfolge zu ändern.
Für ein Verzeichnis wird Samba dieselben Operationen durchführen, wie zuvor für eine Datei beschrieben. Es wird jedoch der Parameter directory security mask anstatt des Parameters security mask und Parameter force directory security mode anstatt des Parameters force security mode angewandt.
Der Parameter directory security mask ist standardmäßig auf denselben Wert wie der Parameter directory mask gesetzt, und der Parameter force directory security mode ist standardmäßig auf denselben Wert wie der Parameter force directory mode gesetzt. Auf diese Weise erzwingt Samba die Einschränkungen bei Berechtigungen, die ein Administrator auf einer Samba-Freigabe gesetzt hat, während den Benutzern weiterhin erlaubt wird, innerhalb dieser Einschränkung die Berechtigungsbits zu ändern.
Falls Sie eine Freigabe aufsetzen möchten, die es Benutzern erlaubt, die volle Kontrolle bei der Änderung von Berechtigungsbits auf ihren eigenen Dateien und Verzeichnissen auszuüben, und die es nicht erfordert, irgendwelche Bits auf „an“ zu verstellen, dann setzen Sie die folgenden Parameter in der smb.conf Datei innerhalb des freigabe-spezifischen Abschnitts:
| security mask = 0777 |
| force security mode = 0 |
| directory security mask = 0777 |
| force directory security mode = 0 |
Samba vergibt einige der DOS-Attribut-Bits (wie z.B. „Nur lesen“) in den UNIX-Berechtigungen einer Datei. Dies bedeutet, dass es einen Konflikt zwischen den Berechtigungsbits, die durch den Sicherheitsdialog gesetzt wurden, und den Berechtigungen geben kann, die durch die Vergabe von Dateiattributen gesetzt wurden.
Falls eine Datei für den Eigentümer keinen UNIX-Lesezugriff hat, wird diese als „Nur lesen“ in dem Standarddialog der Registerkarte Dateiattribute angezeigt. Leider ist dieser Dialog derselbe, der die Sicherheitsinformationen in einer anderen Registerkarte enthält.
Der Eigentümer kann dadurch fälschlicherweise glauben, die Berechtigungen dadurch ändern zu können, weil es ihm anscheinend erlaubt wird, Lesezugriff durch Nutzung des Sicherheitsdialoges zu bekommen; er klickt auf , um zurück zu der Registerkarte mit den Standardattributen zu gelangen, klickt auf in diesem Dialog, und NT setzt die Dateiberechtigungen auf Nur-lesen zurück (weil dies die Attribute in diesem Dialog ihm sagen). Dies bedeutet: Klicken Sie - nachdem Sie die Berechtigungen gesetzt und auf zum Zurückgehen auf den Attributdialog geklickt haben - immer auf statt auf , um sicherzustellen, dass Ihre Änderungen nicht überschrieben werden.
Datei-, Verzeichnis- und Freigabezugriffsprobleme tauchen häufig auf der Mailingliste auf. Die folgenden Beispiele wurden in letzter Zeit in der Maillingliste behandelt.
„ Wir haben einige Schwierigkeiten mit Datei/Verzeichnis-Berechtigungen. Ich kann mich als Admin-User (root) an einer Domäne anmelden, und es gibt eine öffentliche Freigabe, auf der jeder die Berechtigung zum Erzeugen und Ändern von Dateien haben sollte, aber nur root kann Dateien ändern, sonst niemand. Wir müssen dauernd auf dem Server chgrp -R users * und chown -R nobody * eingeben, um den anderen Benutzern das Ändern von Dateien zu erlauben. “
Es gibt viele Möglichkeiten, dieses Problem zu lösen, und hier sind ein paar Hinweise:
Gehen Sie auf die oberste Ebene des Verzeichnisses, das freigegeben ist.
Setzen Sie die Benutzer und Gruppe als Eigentümer auf das, was öffentlich sein soll
$ find 'directory_name' -type d -exec chown user.group {}\;
$ find 'directory_name' -type d -exec chmod 6775 'directory_name'
$ find 'directory_name' -type f -exec chmod 0775 {} \;
$ find 'directory_name' -type f -exec chown user.group {}\;
Das oben Aufgeführte setzt das Sticky-Bit auf alle Verzeichnisse. Lesen Sie in Ihren UNIX/Linux-Manpages nach, was dies bewirkt. Es veranlasst das Betriebssystem, auf alle Dateien in Ihren Verzeichnissen den Eigentümer des Verzeichnisses zu setzen.
Das Verzeichnis heißt: /foobar
$ chown jack.engr /foobar
Dies ist dasselbe wie:
$ chown jack /foobar $ chgrp engr /foobar
Geben Sie jetzt Folgendes ein:
$ chmod 6775 /foobar $ ls -al /foobar/..
Dann sollten Sie dies sehen:
drwsrwsr-x 2 jack engr 48 2003-02-04 09:55 foobar
Geben Sie jetzt dies ein:
$ su - jill $ cd /foobar $ touch Afile $ ls -al
Sie sollten nun sehen, dass die Datei Afile, die von Jill erzeugt worden ist, die Eigentumsrechte und Berechtigungen von Jack hat, so wie hier:
-rw-r--r-- 1 jack engr 0 2003-02-04 09:57 Afile
Fügen Sie jetzt in Ihrer smb.conf für die Freigabe Folgendes ein:
| force create mode = 0775 |
| force directory mode = 6775 |
Diese Maßnahmen werden nur dann gebraucht, wenn Ihre Benutzer nicht Mitglied der Gruppe sind, die Sie benutzt haben. Das ist dann der Fall, wenn Sie innerhalb des Betriebssystems keine Schreibberechtigung auf das Verzeichnis haben.
Eine Alternative ist es, in der smb.conf diesen Eintrag für die Freigabe zu setzen:
| force user = jack |
| force group = engr |
Wenn Sie einen Benutzer in admin users haben, wird Samba für diesen Benutzer Dateioperationen immer als root ausführen, sogar wenn force user gesetzt wurde.
Frage: „Wenn Benutzer B ein Word-Dokument abspeichert, das Benutzer A gehört, ist anschließend der Eigentümer der aktualisierten Datei Benutzer B. Warum macht Samba das? Wie kann ich das beheben?“
Antwort: Word macht Folgendes, wenn Sie ein Word-Dokument ändern: Es erzeugt ein NEUES Dokument mit einem temporären Namen. Word schließt dann das alte Dokument und löscht es. Dann benennt Word das neue Dokument in den Original-Dateinamen um. Es gibt keinen Mechanismus, durch den Samba in irgendeiner Weise wissen kann, dass das neue Dokument wirklich dem Eigentümer der Originaldatei gehören sollte. Samba hat keine Möglichkeit zu erfahren, dass MS Word die Datei umbenannt hat. Samba ist nur in der Lage zu sagen, dass die Datei, die erzeugt wurde, eine NEUE Datei ist, aber nicht, dass die Applikation (Word) diese aktualisiert hat.
Es gibt einen Workaround, um diese Berechtigungsprobleme zu lösen. Dieser Workaround setzt voraus, dass Sie verstehen, wie Sie das Verhalten des Dateisystems innerhalb der Datei smb.conf steuern können, und wissen, wie ein UNIX-Dateisystem funktioniert. Setzen Sie chmod g+s `directory_name' auf das Verzeichnis, in dem Sie Word-Dokumente ändern möchten. Dies stellt sicher, dass alle Dateien mit der Gruppe erzeugt werden, der das Verzeichnis gehört. In dem Abschnitt in der smb.conf, der die Freigabe deklariert, setzen Sie:
| force create mode = 0660 |
| force directory mode = 0770 |
Diese beiden Einstellungen stellen sicher, dass alle Verzeichnisse und Dateien, die in der Freigabe erzeugt werden, durch den Eigentümer und die Gruppe les- und schreibbar sind, die auf das Verzeichnis selbst gesetzt sind.