Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 6.1 User und Gruppen Kapitel 6
User, Security und Domains
Next: 6.3 Authentifizierung, Security
 

6.2 Zugriff auf die Shares kontrollieren

Oft wirst du die User, welche auf eine bestimmte Share Zugriff haben, aus Sicherheitsgründen beschränken müssen. Das geht mit Samba sehr leicht, seit es eine Fülle von Optionen zur praktischen Einrichtung irgendeiner Sicherheits-Konfiguration enthält. Stellen wir ein paar Konfigurationen vor, die du vielleicht in deinem eigenen Samba-Setup verwenden willst.

WARNUNG: Noch einmal, wenn du mit Windows 98 oder NT 4.0 mit Service Pack 3 (oder höher) arbeitest, diese Clients senden verschlüsselte Passwörter an den Sambaserver. Ist Samba nicht dafür konfiguriert, wird es die Verbindung fortgesetzt ablehnen. Dieses Kapitel beschreibt die Einrichtung Sambas für verschlüsselte Passwörter. Siehe Abschnitt 6.4, Passwörter.

Wir haben gesehen, was passiert, wenn du gültige User festlegst. Nun, du darfst ebenso eine Liste von ungültigen Usern bestimmen - User, die niemals auf Samba und seine Shares zugreifen dürfen. Das wird mit der Option invalid users getan. Wir spielten auf einen häufigen Gebrauch dieser Option an früherer Stelle an: eine globale Voreinstellung mit der Sektion [homes], um dafür zu sorgen, dass verschiedene System-User und Superuser während des Zugriffs nicht gefälscht werden können. Ein Beispiel:

[global]
	invalid users = root bin daemon adm sync shutdown \
						halt mail news uucp operator gopher
	auto services = dave peter bob

[homes]
	browsable = no
	writeable = yes

Die Option invalid users kann wie valid users Gruppennamen sowie Usernamen enthalten. Sollte ein User oder eine Gruppe in beiden Listen aufscheinen, hat die Option invalid users Vorrang, und dem User oder der Gruppe wird der Zugriff auf die Share verboten.

Am anderen Ende des Spektrums kannst du explizit User bestimmen, denen mit der Option admin users Superuser- (Root-) Zugriff auf eine Share erlaubt ist. Ein Beispiel folgt:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		writeable = yes
		valid users = tom dick harry
		admin users = mike

Diese Option enthält Gruppennamen und Usernamen. Zusätzlich kannst du NIS Netzgruppen festlegen, indem du ihnen auch ein @ voranstellst; wenn die Netzgruppe nicht gefunden wird, wird Samba annehmen, dass du auf eine normale Unix-Gruppe verweist.

Sei vorsichtig, wenn du administrative Privilegien für eine Share an eine ganze Gruppe überträgst. Das Sambateam emfiehlt dir dringend, die Verwendung dieser Option zu vermeiden, weil sie den angeführten Usern oder Gruppen notwendigerweise Root-Zugriff auf diese Share gewährt.

Wenn du Read-Only- oder Schreib/Lese-Zugriff für User auf einer Share erzwingen willst, kannst du so mit den Optionen read list bzw. write list verfahren. Diese Optionen können auf der Basis pro Share verwendet werden, um eine beschreibbare Share zu beschränken oder bestimmten Usern Schreib-Zugriff in einer Read-Only-Share zu erteilen. Ein Beispiel:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		read only = yes
		write list = tom dick

Die Option write list kann Unix-Rechte nicht verändern. Wenn du die Share eingerichtet hast, ohne dem Write-List-User Schreiberlaubnis auf dem Unix-System zu geben, wird ihm oder ihr der Schreib-Zugriff ohne Rücksicht auf die Einträge in der write list verboten.

6.2.1 Gast-Zugang

Wie früher erwähnt, kannst du User bestimmen, die einen Gast-Zugang zu einer Share haben. Die Optionen zur Kontrolle des Gast-Zugangs sind leicht zu handhaben. Die erste Option, guest account, bezeichnet den Unix-Account, der Gast-Usern zugewiesen werden sollte, wenn sie sich mit dem Sambaserver verbinden. Der voreingestellte Wert dafür wird während der Kompilation gesetzt und ist normalerweise nobody. Nun, du willst vielleicht den Gast-User in ftp umändern, wenn du Schwierigkeiten beim Zugriff auf verschiedene Systemdienste hast.

Wenn du in einer Share den Zugriff nur für Gäste beschränken willst - mit anderen Worten, alle Clients verbinden sich wie der Gast-Account, wenn sie auf die Share zugreifen - kannst du die Option guest only in Verbindung mit der Option guest ok anwenden, wie es das folgende Beispiel zeigt:

[sales]
		path = /home/sales
		comment = Fiction Corp Sales Data
		writeable = yes
		guest ok = yes
		guest account = ftp
		guest only = yes

Sorg dafür, dass du in diesem Szenario beide Optionen mit yes bezeichnest: guest only und guest ok; sonst wird Samba den von dir genannten Gast-Account nicht nützen.

6.2.2 Optionen zur Zugangskontrolle

Tabelle 6.1 fasst die Optionen zusammen, die du verwenden kannst, den Zugang zu Shares zu kontrollieren.


Tabelle 6.1: Optionen für den Zugriff auf Share-Ebene

Option

Parameter

Funktion

Vorgabe

Bereich

admin users

string (Liste von Usernamen)

Bezeichnet eine Reihe von Usern, die Arbeiten als Root durchführen können.

Keine

Share

valid users

string (Liste von Usernamen)

Bezeichnet eine Reihe von Usern, die Zugang zu einer Share haben.

Keine

Share

invalid users

string (Liste von Usernamen)

Bezeichnet eine Reihe von Usern, denen der Zugriff auf eine Share verboten ist.

Keine

Share

read list

string (Liste von Usernamen)

Bezeichnet eine Reihe von Usern, die Read-Only-Zugriff auf eine beschreibbare Share haben.

Keine

Share

write list

string (Liste von Usernamen)

Bezeichnet eine Reihe von Usern, die Schreib/Lese-Zugriff auf eine Read-Only-Share haben.

Keine

Share

max connections

numerisch

Bezeichnet die maximale Zahl von Verbindungen für eine Share zu einer gegebenen Zeit.

0

Share

guest only (only guest)

boolean

Legt fest, dass diese Share nur Gast-Zugang erlaubt.

no

Share

guest account

string (Name des Accounts)

Nennt den Unix-Account, der für den Gast-Zugang verwendet wird.

nobody

Share

6.2.2.1 admin users

Diese Option bezeichnet eine Reihe von Usern, die Dateioperationen ausführen, wie wenn sie root wären. Das bedeutet, dass sie die Arbeit jedes anderen Users verändern oder zerstören können, egal welche Rechte vorliegen. Alle von ihnen erzeugten Dateien haben Root als Eigentümer und verwenden die vorgegebene Gruppe der Admin-User. Die Option admin users wird gebraucht, um PC-Usern zu erlauben, als Administrator für einzelne Shares zu agieren. Wir raten dir dringend, diese Option zu vermeiden.

6.2.2.2 valid users and invalid users

Diese zwei Optionen lassen dir die User und Gruppen aufzählen, denen Zugang zu einer einzelnen Share gewährt oder verboten wird. Du kannst eine Liste von Usern eingeben, durch Kommas getrennt, oder einen NIS- oder Unix-Gruppennamen anführen, wobei dem Namen ein At-Zeichen (@) vorgesetzt wird.

Eine wichtige Regel, die man sich in Zusammenhang mit diesen Optionen merken muss, ist, dass jedem Namen oder jeder Gruppe in der Liste invalid users der Zugang immer verboten ist, auch wenn er/sie (in irgendeiner Form) in der valid users Liste enthalten ist/sind. Als Voreinstellung ist keine Option mit einem Wert verbunden. Wenn beide Optionen keinen Wert haben, darf jeder User auf die Share zugreifen.

6.2.2.3 read list and write list

Wie die Optionen valid users und invalid users legt dieses Optionen-Paar fest, welche User Read-Only-Zugang zu einer beschreibbaren Share bzw. Schreib/Lese-Zugang zu einer Read-Only-Share haben. Der Wert beider Optionen ist eine Liste von Usern. read list verändert alle anderen Samba-Rechte, die - sowie Unix Dateirechte auf dem Serversystem - gewährt wurden, um Usern Schreibzugriff zu verbieten. write list verändert andere Sambarechte, um Schreibzugang zu erteilen, kann aber keinen Schreibzugriff gewähren, wenn dem User Schreibrechte für die Datei auf dem Unix-System fehlen. Du kannst NIS oder Unix-Gruppennamen angeben, indem du dem Namen ein At-Zeichen voranstellst (wie @users). Keine Konfigurations-Option hat einen Vorgabewert.

6.2.2.4 max connections

Diese Option bestimmt die maximale Zahl an Client-Verbindungen, die eine Share zu einer gegebenen Zeit haben kann. Alle Verbindungsversuche nach Erreichen des Maximums werden abgewiesen. Die Voreinstellung ist 0, was heißt, dass eine unbegrenzte Anzahl an Verbindungen erlaubt ist. Du kannst sie pro Share überschreiben wie folgt:

[accounting]
	max connections = 30

Diese Option ist in dem Fall nützlich, wenn du die Zahl an Usern beschränken musst, die ein lizenziertes Programm oder einen Teil von Daten gemeinsam bearbeiten.

6.2.2.5 guest only

Diese Option auf Share-Ebene (manchmal only guest genannt) erzwingt eine Verbindung zu einer Share mit einem User, der von der Option guest account festgelegt wird. Die Share, für die das gilt, muss explizit guest ok = yes angeben, damit diese Option von Samba anerkannt wird. Die Voreinstellung für diese Option ist no.

6.2.2.6 guest account

Diese Option legt den Namen des Accounts fest, der für den Gast-Zugang zu Shares in Samba benützt wird. Die Voreinstellung für diese Option variiert von System zu System, doch ist sie oft auf nobody gesetzt. Einige vorgegebene User-Accounts haben Schwierigkeiten, als Gast-User anzubinden. Wenn das auf dein System zutrifft, empfiehlt das Sambateam den ftp-Account als Gast-User einzutragen.

6.2.3 Username-Optionen

Tabelle 6.2 zeigt zwei zusätzliche Optionen, die Samba benützen kann, um Inkompatibilitäten in Usernamen zwischen Windows und Unix zu korrigieren.


Tabelle 6.2: Username-Optionen

Option

Parameter

Funktion

Vorgabe

Bereich

username map

string (voller Pfadname)

Setzt den Namen der Username-Mapping-Datei.

Keine

Global

username level

numerisch

Bezeichnet die zu benutzende Zahl an Großbuchstaben beim Versuch, einen Usernamen abzustimmen.

0

Global

6.2.3.1 username map

Client-Usernamen auf einem SMB-Netzwerk können relativ groß sein (bis zu 255 Zeichen), während Usernamen auf einem Unix-Netzwerk oft nicht länger als acht Zeichen sein können. Das bedeutet, dass ein einzelner User einen Usernamen auf einem Client haben kann und einen anderen (kürzeren) auf dem Sambaserver. Du kannst diese Angelegenheit durch mapping eines frei erfundenen Client-Usernamens auf einen Unix-Usernamen mit acht oder weniger Zeichen in den Griff bekommen. Er ist in einer Standard-Textdatei platziert und verwendet ein Format, das wir kurz beschreiben werden. Du kannst dann mit der globalen Option username map den Pfadnamen zu Samba festlegen. Sorge für einen beschränkten Zugriff auf diese Datei; mach den User Root zum Dateibesitzer und sperre den Schreibzugriff für andere. Sonst kann ein unzuverlässiger User, der Zugriff auf die Datei hat, leicht den Client-Usernamen auf den User Root des Sambaservers mappen.

Du kannst diese Option wie folgt belegen:

[global]
	username map = /etc/samba/usermap.txt

Alle Einträge in der Username-Map-Datei sollten wie folgt eingetragen werden: der Unix-Username, gefolgt von einem Gleichheitszeichen (=), dann einer oder mehrere, durch Leerzeichen getrennte SMB-Client-Usernamen. Beachte, dass unbeschadet anderer Instruktionen (z.B. eine Gast-Verbindung) Samba vom Client und vom Server-User erwartet, dasselbe Passwort zu haben. Du kannst auch NT-Gruppen auf eine oder mehrere bestimmte Unix-Gruppen mappen, indem du das @-Zeichen benützt. Hier gibt's einige Beispiele:

jarwin = JosephArwin
manderso = MarkAnderson
users = @account

Du kannst auch den Asterix verwenden, um einen Platzhalter zu bezeichnen, der mit einem frei vergebenen Usernamen als Eintrag in der Username-Map-Datei zusammenpasst:

nobody = *

Kommentare in der Datei können als Zeilen mit vorgesetzten (#) und (;) geschrieben werden.

Beachte, dass du diese Datei ebenso verwenden kannst, um einen Unix-User auf einen anderen User umzuleiten. Sei vorsichtig dabei, weil Samba und dein Client dem User vielleicht nicht mitteilen, dass diese Abbildung gemacht wurde, und Samba deswegen ein anderes Passwort erwarten könnte.

6.2.3.2 username level

SMB-Clients (wie auch Windows) senden bei SMB-Verbindungs-Anfragen oft Usernamen ganz in Großbuchstaben; mit anderen Worten: Client-Usernamen sind nicht notwendigerweise case-sensitiv. Nun, auf einem Unix-Server sind Usernamen case-sensitiv: der User ANDY unterscheidet sich vom User andy. Als Voreinstellung packt Samba dieses Problem mit folgender Vorgangsweise:

  1. Kontrolle eines User-Accounts mit dem exakten Namen, den der Client sendet

  2. Überprüfen des Usernamens in allen Kleinbuchstaben

  3. Überprüfen des Usernamens in Kleinbuchstaben mit nur dem ersten Buchstaben groß geschrieben

Wenn du willst, dass Samba mehr Kombinationen von Groß- und Kleinbuchstaben versuchen soll, kannst du die globale Konfigurations-Option username level verwenden. Diese Option enthält einen Integer-Wert, der bestimmt, wie viele Buchstaben im Usernamen groß geschrieben werden sollten, wenn die Verbindung zu einer Share versucht wird. Du kannst die Option wie folgt festlegen:

[global]
	username level = 3

In diesem Fall wird Samba dann versuchen, alle Permutationen von Usernamen zu berechnen, die drei Großbuchstaben enthalten. Je größer die Zahl, desto mehr Berechnungen muss Samba durchführen, um den Usernamen zu vergleichen, und desto länger wird die Authentifikation dauern.


Previous: 6.1 User und Gruppen Next: 6.3 Authentifizierung, Security
6.1 User und Gruppen Buch-Index (engl.) 6.3 Authentifizierung, Security

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.