Samba Einführung
Was ist Samba?
Samba ist die Implementierung eines Server-Message-Bocks-(SMB)-Protokollserver für Linuxsysteme. Dieses Protokoll dient den M$-Servern/Clients zum Dateiaustausch und Druckerzugriff. Samba simuliert einen kompletten Windowsserver.
Hinter Samba steckt lediglich eine Programmfamilie, die es einem ermöglicht auf einen Unix/Linux-System Dateien- und Druckerfreigaben zu machen bzw. auf entfernte Windows-Ressourcen zuzugreifen. Die wichtigsten Programme sind "smbd" und "nmbd".
Die gute Nachricht ist: Zur Verwaltung benutzt Samba eine einzige Konfigurationsdatei. Jetzt die Schlechte: Das Monster hat über 200 verschiedene Parameter. Wobei die meisten in der Praxis nicht angepackt werden müssen.
Die aktuelle Sambaversion ist 2.2.7a
Die Konfiguration
Die wichtigste Datei ist die "smb.conf" (/etc/samba/smb.conf oder /etc/smb.conf).
Standardmäßig in 4 Sektionen aufgeteilt
|
Die "smb.conf"
Genauere Betrachtung der Konfigurationsdatei.
Unter dem Abschnitt [global] verbergen sich alle Parameter, die für die allgemeinen Funktionalitäten des Servers von Bedeutung sind, z.B.: netbios name oder workgroup.
Weitere Parameter:
max log file = 1000; bedeutet, dass die Log-Datei nie größer als ~1MB wird
syslog=[0-4]; je höher die Zahl, desto mehr Infos gibt es. "4" gibt von jeder Info bis zum Crash alles aus.
syslog only; regelt, ob die Fehlermeldungen nur an den Syslogd gehen oder auch in die spezifischen Samba-Log-Dateien geschrieben werden.
deadtime = x; automatische Verbindungstrennung nach x Minuten
Mit der [homes]-Sektion wird jedem Benutzer sein eigenes Verzeichnis zur Verfügung gestellt.
In [printers] können die eingerichteten Drucker freigegeben werden.
|
Szenario:
Es gibt 3 Mitarbeiter mit jeweils einem Rechner und einen zentralen Linux-Server. Die Rechner sind über ein Netzwerk verbunden; Rechner Platz1, Platz2, Platz3 und Server. Folgende Bedingungen sollen erfüllt werden:
a) Rechner Platz1, Platz2 und Platz3 sollen Zugriff auf einen Drucker am Server haben
b) Platz1 und Platz2 sollen ihre gemeinsamen Daten auf dem Server ablegen können
c) Platz3 soll ein Verzeichnis bekommen, auf das nur er zugreifen kann
Anhand dieser Bedingungen wird nun die entsprechende Konfiguration in der "smb.conf" erstellt.
|
Das Gruppenverzeichnis einrichten:
Als erstes richtet man eine Gruppe (z.b. smbgroup) ein (/etc/group) und fügt Mitarbeiter 1 und 2 dort hinzu. Das gemeinsame Verzeichnis anlegen und mit entsprechenden Rechten ausstatten:
|
Die Freigabe in der "smb.conf" definieren.
|
Samba guckt in der /etc/printcap nach einem entsprechenden Drucker namens "printer4all".
"Fertig".
Um die Syntax der smb.conf checken zu lassen, kann man das Tool "testparm" benutzen. Einfach starten und auf eventuelle Fehlermeldungen achten.
Sambadienst starten
Der Sambadienst besteht hauptsächlich aus dem Freigabedienst (smbd) und dem Namensdienst (nmbd). Diese Dienste müssen gestartet werden. Es gibt 2 Möglichkeiten dieses zu tun. Erste Möglichkeit ist über den Superdaemon "inetd". Dafür müssen folgende Dateien bearbeitet werden:
|
Nun den inetd restarten und der inetd lauscht auf port 137/139 um bei Anfragen den Sambadienst zu starten. Die zweite Möglichkeit ist den Samba-Server selber als Daemon zu starten. Ist bei häufigen Verbindungsanfragen zu empfehlen, da die Reaktionszeiten wesentlich kürzer sind.
|
Die Installation testen
Um die Konfiguration zu testen wird ein Verbindungsaufbau versucht.
smbclient -L rechnername -N
Es sollten sämtliche Freigaben aufgelistet werden.
Auf eine Freigabe verbinden
Die Dateifreigabe:
smbclient //rechnername/freigabe -U username
Die Druckerfreigabe:
smbclient //rechnername/druckername -P -U username
Sicherheitsmodis
SHARE:
Jeder, der ein gültiges Accountpasswort hat, darf sich auf die Freigaben verbinden.
Samba versucht anhand des Passwortes einen gültigen User zu finden.
Sinnvoll bei DOS-/Win95-Maschinen bzw. alle Rechner die keine Profilverwaltung kennen.
Samba versucht anhand eines Passwort-Vergleichs herauszufinden, ob das übertragene Passwort mit einem auf der Unix-Maschine registrierten User übereinstimmt.
Um die Share auf bestimmte User zu beschränken gibt es den Parameter "user"
user = username1 username2 username3
Wird ein gültiger Name gefunden wird die Verbindung freigegeben.
Diese Art der Freigabe macht wegen Sicherheitsrisiken höchstens im Familiennetzwerk Sinn.
USER:
Im USER-Mode akzeptiert Samba nur gültige User/Passwort Kombinationen. Der User muss einen gültigen Linux-Account haben und zusätzlich einen gültigen Samba-Account. Passwörter "müssen" jeweils gleich sein.
Usernamen und Passwörter
Die Usernamen und Passwörter werden in Großbuchstaben übertragen. Samba konvertiert diese Parameter automatisch wieder in Kleingeschriebenes und sucht diese dann am Authentifizierungsbackend (passwd, ldap, ect.). Usernamen wie "lars" und "Lars" werden gefunden, jedoch "LaRs" schon nicht mehr.
Mit dem Parameter "username level" kann man auch sicherstellen das "LaRs" gefunden wird.
"username level" erwartet eine ganze Zahl, mit der bestimmt wird, wie viele Großbuchstaben im Username vorkommen können. Im Fall von "LaRs" reicht ein "username level = 2". Dies kann bei langen Usernamen mit vielen Groß-/kleinkombinationen viel Rechenleistung erfordern, weil Samba in BrutalForce Manier die Möglichkeiten durchtesten.
Das Gleiche gilt für Passwörter -> password level = x
Systeme, die nur 8 Buchstaben als Usernamen zulassen
Windows-Benutzernamen können "beliebig" lang sein, auf manchen Systemen dürfen jedoch 8 Zeichen nicht überschritten werden. Mit "username map = datei_mit_usernamen" kann man diesem Problem Herr werden.
Die Datei mit den Usernamen muss wie folgt aufgebaut werden:
gültiger_username = Das_ist_ein_langer_Windows_Username Administrator SuperHosch
Wenn ein Benutzer versucht sich als "Administrator" mit einer Freigabe zu verbinden, muss er das Passwort für den Account des angegebenen "gültiger_username" übermitteln. Auch gelangt er in das Homeverzeichnis des Linuxuser. Die Datei darf auch Gruppenzuweisungen beinhalten -> gültiger_username = @users.
Umstellung von unverschlüsselten Passwörter zu Verschlüsselten
Das ist eine recht dumme Situation, weil Windwos-Kennwörter mit den Unix-Kennwörtern nicht kompatibel sind. Aus diesem Grund muss dem Samba-Server nun eine 2. Passwortdatei vorgehalten werden. Alle User "müssen" von Hand in die neue Passwortdatei (smbpasswd) hinzugefügt werden. -> smbpasswd -a [username] Man kann die smbpasswd auch "schleichend" automatisch füllen lassen. Dafür stellt man in der [global]-Sektion "encrypt passwords = no" und "update encrypted = yes". Jetzt wird bei jeder Verbindung die smbpasswd entsprechend gefüllt. In dieser Phase spielt die smbpasswd keine besondere Rolle, es ist lediglich eine Bitanhäufung ohne Zweck. Ist man der Meinung, man hat "alle" Username nun auch in der smbpasswd, stellt man die Parameter "encrypt passwords = yes" und "update encrypted = no" um. Ab jetzt gilt die smbpasswd als Authentifizierungsdatei.
Lizenz
Dieser Text unterliegt der GNU Free Documentation License (FDL). Freie Verbreitung in modifizierter oder unmodifizierter Form ist erlaubt; Modifikationen müssen unmißverständlich gekennzeichnet sein und ebenfalls unter der FDL vertrieben werden.
Copyright (C) Marc Giavarra
Erschienen auf LugX.de, letzte
Änderung 2003-03-15