Filesharing mit Samba

Aus LinuxUser 12/2006

Filesharing mit Samba

Teamwork

Der File- und Printserver Samba zählt zu den Kronjuwelen der freien Software: Er sorgt dafür, dass Linux und Windows im Netzwerk einträchtig zusammenarbeiten.

Seit den 90er Jahren verwendet Microsoft das Protokoll SMB (Server Message Block) sowie dessen Vorgänger NetBIOS und NetBEUI zur Freigabe von Verzeichnissen und Druckern im Netzwerk. Ursprünglich für den Datenaustausch zwischen den Unix-Systemen Sun OS und Ultrix konzipiert, begann der Erfinder Andrew Tridgell Ende 1993 mit der Portierung der Samba-Suite [1] auf Linux, um den Zugriff auf das Windows-Netzwerk auch für dieses Betriebssystem zu ermöglichen.

Die aktuellste stabile Release ist derzeit Version 3.23c. Die Entwicklerversion 4 bietet als wichtigste Neuerung einen ADS-Controller (Active Directory Service), taugt aber nach Angaben des Samba-Teams in frühestens zweieinhalb Jahren für den Produktiveinsatz.

Zwar implementiert Samba nach wie vor noch nicht alle Features von Windows-SMB. Das liegt jedoch in erster Linie daran, dass Microsoft nach wie vor die Interna der eigenen Anpassungen nicht preisgibt. Ungeachtet dessen verfügt Samba (Abbildung 1) zwischenzeitlich über einen beachtlichen Funktionsumfang, der den meisten Anwendungsfällen ohne weiteres gerecht wird.

Abbildung 1: Der Samba-Server erlaubt Windows-Clients den Zugriff auf freigegebene Linux-Verzeichnisse und Drucker.

Abbildung 1: Der Samba-Server erlaubt Windows-Clients den Zugriff auf freigegebene Linux-Verzeichnisse und Drucker.

Samba-Client

Der Samba-Client ermöglicht den Zugriff auf Netzwerkfreigaben (Shares) sowohl von Windows-Betriebssystemen als auch auf die von Samba-Servern. Die einfachste Variante, ein SMB-Share zu öffnen, bietet der KIO-Slave smb. Die Eingabe von smb:/ in der Adressleiste von Konqueror zeigt als Ergebnis alle im Netz verfügbaren SMB-Ressourcen nach Arbeitsgruppen gegliedert. Ein Klick auf die gewünschte Freigabe öffnet (sofern diese passwortgeschützt ist) den Authentifizierungsdialog.

Eine zweite Möglichkeit, auf SMB-Freigaben zuzugreifen, bietet das Kommandozeilen-Programm smbclient. Der Aufruf smbclient //Server/Share -U Benutzer – beispielsweise smbclient //pc1/txt -U fritz öffnet nach der Eingabe des Passworts ein Terminalfenster im gewählten Remote-Share. Alternativ geben Sie anstelle des Servernamens die IP-Adresse an. Ähnlich wie bei kommandozeilenbasiertem FTP erfolgt der Dateitransfer zwischen den Rechnern via get und put.

Wie NFS bringt auch Samba das passende Werkzeug mit, um SMB-Freigaben direkt in den lokalen Verzeichnisbaum einzuhängen. Der Aufruf smbmount //Server/ShareMountpunkt -o username=User mountet die Freigabe nach Eingabe des Passworts in das gewählte Verzeichnis. Möchten Sie die Freigabe dauerhaft auf Ihrem Rechner einrichten, fügen Sie folgenden Eintrag der Datei /etc/fstab hinzu:

//Server/Share Mountpunkt smbfs username=User,password=Kennwort 0 0

Der Eintrag könnte beispielsweise lauten:

//pc1/txt /media/pc1/ smbfs username=fritz,password=fischer 0 0

Da die für alle lesbare Datei /etc/fstab in diesem Fall das Loginpasswort im Klartext enthält, empfiehlt sich als sicherere Alternative das Verwenden eines so genannten Credentials Files, das die Anmeldeinformationen im Format

username = User
password = Kennwort

enthält. Ändern Sie die Zugriffsberechtigungen mit chmod 400 Kennwortdatei und modifizieren Sie den Eintrag in der /etc/fstab folgendermaßen:

//pc1/txt /media/pc1/ smbfs credential=Kennwortdatei 0 0

Damit steht Ihnen die ausgewählte Freigabe auch nach einem Neustart des Clients automatisch zur Verfügung.

Samba-Server

Den Dreh- und Angelpunkt des Samba-Servers bildet die Konfigurationsdatei smb.conf, die Sie in der Regel im Verzeichnis /etc/samba/ finden. Sie enthält alle für den Betrieb wichtigen Informationen, beispielsweise welche Rolle der Server übernehmen soll und welche Verzeichnisse für welche Benutzer freigegeben sind.

Die Konfigurationsdatei untergliedert sich in verschiedene Abschnitte, die ein Begriff in eckigen Klammern einleitetet. Der Abschnitt [globals] enthält generelle Informationen wie Name und Rolle des Servers (Standalone, PDC etc.) sowie generelle Zugriffsberechtigungen. In der Sektion [home] legen Sie Direktiven zu den Homeverzeichnissen der eingeloggten Benutzer fest, [printers] beschreibt die Ansteuerung der Drucker. Alle anderen Abschnitte legen frei definierbare zusätzliche Freigaben fest, deren Bezeichner gleichzeitig als Name der Freigabe dient.

Globale Einstellungen

Die folgenden Erklärungen beziehen sich in erster Linie auf die Beispielkonfiguration aus Listing 1.

Mit dem Parameter workgroup = Gruppe im Abschnitt [global] legen Sie den Namen der Arbeitsgruppe fest, zu welcher der Server gehört. Achten Sie darauf, dass auch die Clients, die auf die Freigaben zugreifen möchten, dieser Arbeitsgruppe angehören. Hinter server string = Server steht der Name des Servers.

Um Verzeichnisse anonym zu erreichen, benötigen Sie die Einträge map to guest = bad user, guest account = User und username map = /etc/samba/smbusers (Zeilen 4 bis 6). Diese bewirken, dass der Server ihm unbekannten Teilnehmern einen Benutzername zuweist, mit dem diese auf die Shares zugreifen können, die mit guest ok = Yes gekennzeichnet sind. Die Datei /etc/smbusers sollte dafür den Eintrag nobody = guest pcguest smbguest enthalten, der alle anonymen Zugriffe der Benutzer guest, pcguest und smbguest auf den Standard-Unix-Benutzer nobody mappt.

Um die Zugriffe auf Netzwerkebene zu regulieren, verwenden Sie die Direktive hosts allow = IP-Adresse und hosts deny = IP-Adresse. Die IP-Adresse dahinter gibt an, welche Rechner Zugriff erhalten und welche nicht. Vergeben Sie eine unvollständige IP-Adresse (etwa 192.168.1.), erkennt Samba diese als Netzwerksegment und erlaubt allen Rechnern aus dem Netz 192.168.1.0/24 den Zugriff.

Mit dem Schalter security = Modus stellen Sie das Sicherheitslevel des Servers ein. Der gängige Modus user erfordert sowohl die Angabe eines Benutzernamens als auch eines Passworts (Abbildung 2), während share nur die Eingabe des Kennworts erfordert. Allerdings dient als Benutzerauthentifizierung der von Windows bei der Anmeldung automatisch mitversendete Kontoname, den Samba kennen muss (siehe Kasten “Benutzerverwaltung”).

Abbildung 2: Der Sicherheitslevel <code srcset=

share (rechts) verlangt dem Anwender nur ein Passwort ab, im Level user fragt Samba auch nach dem Benutzername.” width=”300″ height=”153″ /> Abbildung 2: Der Sicherheitslevel share (rechts) verlangt dem Anwender nur ein Passwort ab, im Level user fragt Samba auch nach dem Benutzername.

Das Login mit verschiedenen Benutzernamen auf unterschiedlichen Freigaben des gleichen Servers klappt nicht.

Benutzerverwaltung

Die Grundvoraussetzung für den autorisierten Zugriff auf von Samba gestellten Ressourcen bildet ein bestehender Samba-Account. Als Root richten Sie mit dem Befehl smbpasswd -a User einen neuen Samba-Benutzer ein, sofern es bereits einen gleichnamigen Linux-Benutzer gibt. Möchten Sie als Loginnamen einen anderen als den des Linux-Accounts verwenden, legen Sie in der Datei /etc/samba/smbusers einen Alias-Namen nach folgendem Schema an:

Linux-Benutzer = Samba-Benutzer_1 Samba-Benutzer_2 …

Lautet die Angabe beispielsweise linus = bill steve, so leitet Samba die Anfragen von bill und steve auf das Linux-Konto linus um.

Dies ist vor allem dann notwendig, wenn Sie den Security-Level auf share stellen, da Windows automatisch den Benutzernamen des angemeldeten Benutzers mitschickt. Um aber Zugriff auf passwortgeschützte Bereiche zu erhalten, muss dieser User Samba bekannt sein. Der Benutzer meldet sich dann mit dem Passwort des gleichnamigen Samba-Benutzers an. Im obigen Beispiel meldet sich bill mit dem Samba-Passwort von linus an).

Analog zum Programm passwd ändert der Aufruf smbpasswd ohne weitere Parameter das Samba-Passwort des Benutzers, der es aufgerufen hat. Mit dem Befehl smbpasswd User ändert root das Passwort des angegebenen Benutzers.

Drucken und Homes

Im Abschnitt [homes] (Zeilen 22 bis 27) legen Sie die Verhaltensweise der Heimatverzeichnisse der angemeldeten Benutzer fest. Der Eintrag valid users = %S startet ein Makro, das abhängig vom gewählten Login-Namen das entsprechende Heimatverzeichnis zur Verfügung stellt.

Meldet sich beispielsweise der Benutzer tommy auf dem Server an, zeigt dieser ihm das Verzeichnis /home/tommy als Share tommy. Die Direktive browseable = Yes bestimmt, dass der Server die Freigabe für jeden anzeigt. Die Angabe browseable = No dagegen blendet Freigaben aus beziehungsweise bewirkt bei Homes, dass jeder Anwender nur sein eigenes Heimatverzeichnis sieht.

Mit read only = No legen Sie fest, dass der Benutzer auch in das Verzeichnis schreiben darf, read only = Yes sperrt den Schreibzugriff. Die Direktive inherit acls = Yes legt fest, dass Berechtigungen beim Erstellen neuer Verzeichnisse vererbt werden; inherit acls = No unterbindet dies.

Der Abschnitt [printers] (Zeilen 12 bis 20) erlaubt Ihnen, Samba auch als Printserver zu verwenden. Die Direktive create mask = 0600 erzeugt eine Rechtemaske, die in diesem Fall das Recht zum Ausführen der verwalteten Ressourcen auf den besitzenden Anwender beschränkt. Der Schalter path = PrintSpooler gibt das Verzeichnis des Print-Spoolers an. Die Direktive use client driver = Yes besagt, dass der Windows-Client den freigegebenen Drucker wie ein lokales Gerät behandelt und einen eigenen Treiber dafür installiert.

Eigene Freigaben

Samba erlaubt das Anlegen beliebig vieler eigener Freigaben für diverse Benutzer oder Gruppen. Dazu legen Sie für jede Freigabe einen eigenen Abschnitt an, dessen in den eckigen Klammern angegebener Bezeichner gleichzeitig als Freigabename der Ressource dient (Zeile 29, 38, 45). Über comment = Kommentar fügen Sie Kommentare ein, die Windows-Clients unter dem Tabellentitel Kommentare anzeigen.

Mit der Direktive valid users = Name ... geben Sie an, welchen Benutzern Sie Zugriff auf das Share gewähren. Steht vor dem Namen ein Klammeraffe (“@”), behandelt Samba den Eintrag als Gruppennamen (Zeile 41). Mit path = /Pfad/zum/Share legen Sie das freigegebene Verzeichnis fest.

Möchten Sie eine allgemein zugängliche Freigabe mit Lese- und Schreibrechten anlegen (Zeilen 29 bis 36), erteilen Sie zunächst einem Linux-Benutzer mit der Direktive force user = User die entsprechende Berechtigung. Der angegebene User muss einen Linux-Account besitzen und zudem selbst die entsprechenden Berechtigungen für das Verzeichnis besitzen. Mit der Direktive read only = No legen Sie fest, dass das Share auch zum Beschreiben freigegeben ist, der Schalter guest ok = Yes ermöglicht auch anonymen Benutzern den generellen Zugriff.

Konfiguration testen

In die oft recht umfangreiche Samba-Konfigurationsdatei schleichen sich beim Editieren gerne Fehler ein. Um diesen auf die Schliche zu kommen, rufen Sie auf der Kommandozeile das Samba-Tool testparm (Abbildung 3) auf. Das kleine Programm prüft die Samba-Konfiguration auf eventuelle Fehler und zeigt diese an.

Abbildung 3: Der Aufruf <code srcset=

testparm spürt Fehler in Sambas Konfigurationsdatei auf smb.conf.” width=”300″ height=”206″ /> Abbildung 3: Der Aufruf testparm spürt Fehler in Sambas Konfigurationsdatei auf smb.conf.

Konfiguration mit Swat

Wer den Umgang mit Texteditor und smb.conf scheut, verwendet zum Bearbeiten der Konfiguration die webbasierte grafische Oberfläche Swat (Samba Web Access Tool, Abbildung 4). Da diese (X)Inetd triggert, gilt es, dessen Konfiguration entsprechend anzupassen.

Abbildung 4: Die webbasierte Konfigurationsoberfläche Swat hilft Ihnen beim Einrichten des Samba-Servers.

Abbildung 4: Die webbasierte Konfigurationsoberfläche Swat hilft Ihnen beim Einrichten des Samba-Servers.

Verwendet Ihr Betriebssystem Xinetd, suchen Sie im Verzeichnis /etc/xinetd.d/ nach der Datei swat und setzen dort den den Schalter disable auf no. Ist Ihr System mit dem älteren Inetd ausgestattet, ergänzen Sie diese dessen Konfigurationsdatei /etc/inetd.d um die Zeile swat stream tcp nowait 400 root /usr/sbin/swat swat. Danach erreichen Sie die Verwaltungsoberfläche über die Eingabe von http://127.0.0.1:901 in Ihrem Webbrowser.

Listing 1

[global]
workgroup = Arbeitsgruppe
server string = "LinuxUser Samba 3.0 Server"
username map = /etc/samba/smbusers
map to guest = bad user
guest account = nobody
hosts allow = 192.168.1.
security = user
printing = CUPS
printcap name = CUPS
[printers]
comment = Alle Drucker
create mask = 0600
browseable = yes
printable = yes
public = yes
guest ok = yes
path = /var/tmp
use client driver = yes
[homes]
comment = Home Directories
valid users = %S
read only = No
inherit acls = Yes
browseable = No
[anonshares]
comment = Anonyme Lese-Schreib-Freigabe
path = /tmp/tc-test
force user = tommy
force group = users
read only = No
inherit acls = Yes
guest ok = Yes
[info-devel]
comment = Infos fuer Entwickler
path = /opt/info/devel-manpages/
valid users = @devel, oliver, @users
inherit acls = Yes
browseable = Yes
[Suse]
comment = Suse 10.0 Installationsquelle
path = /media/suse100/
inherit acls = Yes
guest ok = Yes

Glossar

PDC

Primary Domain Controller. Server zur zentralen Authentifizierung und Autorisierung von Rechnern und Benutzern in einem Windows-Netzwerk.

(X)Inetd

Ein Daemon, der bei Anfragen auf einem bestimmten Port ein voreingestelltes Programm (meist wiederum einen Daemon) startet. Die aktuellste, weiterentwickelte Inetd-Variante ist Xinetd (Extended Inetd).

LinuxUser 12/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben