17.7 Samba
Windows-Freigaben
Wenn man nichts anderes kennt, verspürt man vielleicht den Wunsch, sich mit Windows-Freigaben zu verbinden oder selbst Dateien freizugeben. Das entsprechende Protokoll heißt SMB und baut auf NETBIOS auf. NETBIOS ist dabei eine von Microsoft entworfene Methode, lokale Windows-Netze zu organisieren. Die Linux-Software, die das SMB-Protokoll [Fn. SMB wurde von Microsoft inzwischen in CIFS (Common Internet Filesystem) umbenannt – und Raider heißt jetzt Twix. Naja, der alte Name ist zumindest bei SMB/CIFS immer noch gebräuchlich.] versteht und implementiert, heißt Samba.
17.7.1 Windows-Freigaben mounten
Leider ist NETBIOS im Funktionsumfang recht beschränkt und nicht gerade intuitiv zu verstehen. Immerhin stammt es ja aus einer Zeit, in der sich TCP/IP noch nicht wirklich durchgesetzt hatte.
Wenn man selbst Dateien freigeben will, spielt man natürlich Server. Aber auch, wenn man als Client auf fremde Freigaben zugreifen will, braucht man Samba. Da sich aber alles in das Gesamtkonzept von Linux einfügt, braucht man, um Freigaben einzubinden, nur ein spezielles mount-Kommando:
Listing 17.28 Mounten einer Freigabe
# mount -t smbfs -o username=jploetner,password=foobar
//Server/test /mnt/win
In diesem Beispiel würde vom Rechner mit der Windows-Bezeichnung Server die Freigabe test nach /mnt/win gemountet. Bei einer Windows-Freigabe handelt es sich um den Dateisystemtyp smbfs, und man benötigt auch eine Login-Kennung. Die Login-Kennung übergibt man mit dem Parameter -o entweder in der Form username=xyz,password=xyz, oder der Zugang erfolgt anonym, wobei jedoch das Schlüsselwort guest angegeben werden muss.
17.7.2 Dateien freigeben
Möchte man nun selbst Dateien freigeben, müssen zunächst der Samba-Dämon smbd sowie der nmbd, eine Art DNS für NETBIOS, laufen. Die Samba-Software ist für alle wichtigen Distributionen als Paket verfügbar, so dass Sie sich eigentlich nicht um das Kompilieren und das Erstellen von Runlevel-Skripts kümmern müssen. Eine eigene Konfiguration ist aber trotzdem notwendig, um den Dienst sinnvoll nutzen zu können.
Die Datei smb.conf ist in sogenannte Sektionen unterteilt. Zwingend vorgeschrieben ist dabei nur die generelle Einstellungen betreffende Sektion [global]; alle anderen Sektionen beschreiben Drucker oder Dateifreigaben. Außerdem sollte man sich vor Augen führen, dass Samba eigentlich eine Software ist, die zu übersetzen versucht. Dieses Übersetzen ist immer nötig, wenn zwei Welten miteinander kommunizieren möchten, in diesem Fall die Windows-Welt mit der Linux-Welt.
17.7.3 smb.conf
Wie sieht so eine Konfigurationsdatei aber im Detail aus? Im Folgenden möchten wir mit Ihnen wieder eine kommentierte Konfigurationsdatei analysieren, aus der Sie genug Rückschlüsse für eigene Setups ziehen können. Samba wird dabei hauptsächlich über eine einzige Datei konfiguriert, die meist im Verzeichnis /etc/samba/ befindliche smb.conf.
Listing 17.29 smb.conf – erste Einstellungen
[global]
# workgroup = Domainname bzw. Workgroup-Name
workgroup = MYGROUP
# server string = ein sprechender Namen für unseren Server
server string = Samba Server
Die nächste Option ist für die Sicherheit wichtig. Mit ihr kann man den Zugriff auf den Server auf bestimmte Netze beschränken. Im vorliegenden Beispiel wird der Zugriff auf zwei Klasse-C-Netzwerke sowie das Loopback-Interface beschränkt.
Listing 17.30 Erlaubte Rechner
hosts allow = 192.168.1. 192.168.2. 127.
Wenn Sie Ihre Drucker automatisch laden wollen, anstatt Druckerfreigaben manuell zu konfigurieren, sollten Sie diese Option verwenden.
Listing 17.31 Drucker automatisch laden
load printers = yes
Mit der nächsten Option können Sie den Account für den Gastzugang festlegen. Dieser sollte natürlich auch tatsächlich auf dem Serversystem existieren.
Listing 17.32 Gastzugriff
guest account = nobody
Die nächste Option veranlasst Samba, für jeden sich verbindenden Client eine eigene Logdatei anzulegen. Außerdem wird eine Beschränkung von auf 50 KB für die Größe der Logdateien eingeführt.
Listing 17.33 Logging
log file = /var/log/samba/%m.log
max log size = 50
Mit den folgenden Sicherheitseinstellungen legen Sie eine benutzerbasierte Authentifizierung fest.
Für einzelne Unix-Benutzer muss dazu das Samba-Passwort über das smbpasswd-Tool gesetzt beziehungsweise später auch geändert werden. [Fn. Sie erinnern sich: In der /etc/shadow werden die Passwörter nicht im Klartext, sondern nur verschlüsselt gespeichert. Das Passwort im SMB-Protokoll muss aber für die Kompatibilität mit neueren Clients unbedingt vor der Übertragung verschlüsselt werden – und zwar anders, als Unix das macht. Darum braucht Samba eine eigene Passwortdatenbank, die mit smbpasswd verwaltet wird.]
Listing 17.34 Sicherheit
security = user
encrypt passwords = yes
Mit den folgenden Optionen erzielen Sie auf Linux-Systemen eine bessere Performance und beschränken den Dienst auf einige bestimmte Netzwerkschnittstellen. Dies ist jedoch nur sinnvoll, wenn der Server mehrere (virtuelle) Netzwerkkarten hat.
Listing 17.35 Netzwerk
socket options = TCP_NODELAY SO_RCVBUF=8192 \
SO_SNDBUF=8192
# interfaces = 192.168.12.2/24 192.168.13.2/24
Die folgenden Einstellungen betreffen NetBIOS-Interna. Haben Sie mehrere SMB-Server im Netzwerk, so können Sie Samba beispielsweise verbieten, lokaler Master zu werden. Diese Option ist jedoch erst in größeren Netzwerken interessant. Andernfalls nimmt Samba mit dem eingestellten OS-Level an den »Wahlen« zum lokalen Master teil. [Fn. Das soll in Microsoft-Netzwerken bewirken, dass immer das »neueste« Windows die Gruppe führt – aber Samba kann hier mitmischen.]
Listing 17.36 NetBIOS-Einstellungen
# local master = no
# os level = 33
# Die folgende Option erlaubt Samba, auch über
# Subnetzgrenzen hinweg zu operieren. Falls Sie schon
# einen NT-Domain-Controller haben, wird diese Option
# jedoch nicht benötigt.
domain master = yes
Aktivieren Sie die folgende Option, um Samba als Domain-Logon-Server für Windows-Systeme zu aktivieren:
Listing 17.37 Domain-Logons
# domain logons = yes
Die Netzwerk- und Computernamen, die man aus der Windows-Welt kennt, haben leider nichts mit DNS zu tun. Es handelt sich dabei um WINS-Namen (Windows Internet Name Serving). Samba kann nun entweder selbst ein entsprechender Nameserver sein oder einen externen WINS-Server benutzen. Alternativ kann Samba auch DNS-Proxy spielen und WINS-Namen über DNS auflösen. Das ist umständlich, aber für »fremde« Protokolle gilt die Unix-Philosophie leider nicht – und es kommt zu Redundanzen, Unklarheiten und unnötigen Problemen. [Fn. ... die leider auch in reinen Windows-Netzwerken auftreten.]
Listing 17.38 WINS und DNS
wins support = yes
# wins server = w.x.y.z
dns proxy = yes
Kommen wir nun endlich zu den Freigaben. Der spezielle Freigabenname homes erlaubt jedem Benutzer den Zugriff auf sein Home-Verzeichnis.
Listing 17.39 Die Freigaben – Home-Verzeichnis
[homes]
comment = Heimatverzeichnisse
browseable = no
writable = yes
Eine Freigabe ohne Beschränkungen für temporäre Daten:
Listing 17.40 Die Freigaben – temporäre Dateien
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
Ein öffentliches Verzeichnis, in dem nur die Mitglieder der Gruppe staff schreiben dürfen:
Listing 17.41 Die Freigaben – Public
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = @staff
Zu guter Letzt folgen die Druckerfreigaben: Mit einem BSD-ähnlichen Druckersystem brauchen Sie hier nichts extra zu definieren, da wir mit load printers alle verfügbaren Drucker automatisch freigeben.
Listing 17.42 Die Druckerfreigaben
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
# public = yes # erlaubt dem Gastbenutzer, zu drucken
guest ok = no
writable = no
printable = yes
17.7.4 Samba, LDAP & Co.
Nun ist es tatsächlich sehr umständlich, für jeden Benutzer zwei Passwortdatenbanken – die normale /etc/shadow und die Samba-Passwörter – zu verwalten. Aber was bei mehreren Rechnern schon funktioniert hat, funktioniert auch bei Samba: LDAP. Ein entsprechend konfigurierter Server [Fn. Man muss natürlich das entsprechende Samba-Schema laden, damit ein Benutzerobjekt alle von Samba benötigten Eigenschaften wie eben sein SMB-Passwort besitzt. Hilfe hierzu finden Sie in der Samba-Dokumentation.] kann mit folgenden Anweisungen in der [globals]-Sektion genutzt werden:
Listing 17.43 LDAP-Support
obey pam restrictions = yes
passdb backend = ldapsam:ldap://192.168.0.3 guest
ldap admin dn = cn=admin,dc=example,dc=com
ldap suffix = dc=example,dc=com
Man braucht also nur den LDAP-Server, das entsprechende Suffix sowie den Administrator-Benutzer anzugeben, und schon können auf dem Server angelegte und entsprechend konfigurierte Benutzer sich über Samba anmelden, und der Admin hat weniger Arbeit. [Fn. Da sich über Samba auch Windows-Benutzer an einer Domäne anmelden können, hat man mit dieser Konstruktion sogar eine einheitliche Benutzerverwaltung für heterogene Netzwerke.]
Wenn Sie Samba mit ACLs nutzen wollen, brauchen Sie seit Samba 3.0 die ACLs eigentlich nur noch auf Dateisystemebene zu aktivieren, um von Ihrem Windows-PC aus mit einem Rechtsklick auf entsprechend freigebene Dateien die Unix-Rechte zu ändern. Jetzt müsste man nur noch einen Unix-Admin finden, der so etwas auch tun würde ...
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.