12.7 Samba
WindowsFreigaben
Wenn man nichts anderes kennt, verspürt man vielleicht den Wunsch, sich mit Windows-Freigaben zu verbinden bzw. 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. Samba ist die Linux-Software, die das SMB-Protokoll <SMB wurde von Microsoft in CIFS (Common Internet Filesystem) umbenannt, und Raider heißt jetzt Twix. Na ja, der alte Name ist jedenfalls immer noch gebräuchlich.> versteht und implementiert.
12.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 dieses Programmpaket. Da sich aber alles in das Gesamtkonzept von Linux einfügt, braucht man, um Freigaben einzubinden, nur ein spezielles mount-Kommando:
# mount -t smbfs -o username=jploetner,password=foobar //Server/test /mnt/win
Listing 12.27 Mounten einer Freigabe
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. Diese übergibt man mit dem -o-Parameter – entweder in der Form username=xyz,password=xyz, oder der Zugang erfolgt anonym, wobei jedoch das Schlüsselwort »guest« angegeben werden muss.
12.7.2 Dateien freigeben
Möchte man nun selbst Dateien freigeben, müssen zunächst der Samba-Daemon smbd sowie der nmbd, eine Art DNS für NETBIOS, laufen. Die Samba-Software ist dabei 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 smb.conf ist in sogenannte Sektionen unterteilt. Zwingend vorgeschrieben ist dabei nur die generelle Einstellungen betreffende Sektion [global]; alle anderen Sektionen beschreiben Drucker bzw. Dateifreigaben. Außerdem sollte man sich veranschaulichen, 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 Linux.
12.7.3 Die smb.conf
Wie sieht so eine Konfigurationsdatei aber im Detail aus? Im Folgenden möchten wir mit Ihnen wieder eine kommentierte Konfigurationsdatei ansehen, aus der Sie genug Rückschlüsse für eigene Setups ziehen können. Samba wird dabei hauptsächlich über eine einzige Datei, die meist in /etc/samba/ befindliche smb.conf, konfiguriert:
Listing 12.28 smb.conf – erste Einstellungen
[global]
# workgroup = NT-Domainname bzw. Workgroup-Name
workgroup = MYGROUP
# Mit der Option server string kann man eine
# Beschreibung für den Server angeben.
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. Hier im Beispiel wird der Zugriff auf zwei Klasse-C-Netzwerke sowie das Loopback-Interface beschränkt.
hosts allow = 192.168.1. 192.168.2. 127.
Listing 12.29 Erlaubte Rechner
Wenn Sie Ihre Drucker automatisch laden wollen, anstatt Druckerfreigaben manuell zu konfigurieren, sollten Sie diese Option verwenden.
load printers = yes
Listing 12.30 Drucker automatisch laden
Mit der nächsten Option können Sie den Account für den Gastzugang festlegen. Dieser Account sollte natürlich auch tatsächlich auf dem Serversystem existieren.
guest account = nobody
Listing 12.31 Gastzugriff
Die nächste Option veranlasst Samba, für jeden sich verbindenden Client eine eigene Logdatei anzulegen. Anschließend wird die Größe der Logdateien auf 50 Kilobyte beschränkt.
log file = /var/log/samba/%m.log max log size = 50
Listing 12.32 Logging
Mit den folgenden Sicherheitseinstellungen wird festgelegt, dass man eine benutzerbasierte Authentifizierung möchte. Für einzelne Unix-Benutzer muss dazu das Samba-Passwort über das smbpasswd-Tool gesetzt beziehungsweise später auch geändert werden. <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.>
security = user encrypt passwords = yes
Listing 12.33 Sicherheit
Mit den folgenden Optionen könnten Sie auf Linux-Systemen eine bessere Performance erzielen und den Dienst auf einige bestimmte Netzwerkschnittstellen beschränken. Dies ist jedoch nur sinnvoll, wenn der Server mehrere Netzwerkkarten hat.
socket options = TCP_NODELAY SO_RCVBUF=8192 \ SO_SNDBUF=8192 # interfaces = 192.168.12.2/24 192.168.13.2/24
Listing 12.34 Netzwerk
Die folgenden Einstellungen betreffen NetBIOS-Interna. Falls Sie mehrere SMB-Server in Ihrem Netzwerk haben, 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. <Das soll in Microsoft-Netzwerken bewirken, dass immer das »neueste« Windows die Gruppe führt. Aber Samba kann hier mitmischen.>
# 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
Listing 12.35 NetBIOS-Einstellungen
Aktivieren Sie die folgende Option, um Samba als Domain-Logon-Server für Windows-Systeme zu aktivieren:
# domain logons = yes
Listing 12.36 Domain-Logons
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. <... die leider auch in reinen Windows-Netzwerken auftreten.>
wins support = yes # wins server = w.x.y.z dns proxy = yes
Listing 12.37 WINS und DNS
Kommen wir endlich zu den Freigaben. Der spezielle Freigabenname »homes« erlaubt jedem Benutzer den Zugriff auf sein Homeverzeichnis.
[homes] comment = Heimatverzeichnisse browseable = no writable = yes
Listing 12.38 Die Freigaben – Homeverzeichnis
Eine Freigabe ohne Beschränkungen für temporäre Daten:
[tmp] comment = Temporary file space path = /tmp read only = no public = yes
Listing 12.39 Die Freigaben – temporäre Dateien
Ein öffentliches Verzeichnis, in dem nur die Mitglieder der Gruppe staff schreiben dürfen:
[public] comment = Public Stuff path = /home/samba public = yes writable = yes printable = no write list = @staff
Listing 12.40 Die Freigaben – Public
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 freigegeben.
[printers] comment = All Printers path = /usr/spool/samba browseable = no # public = yes # erlaubt dem Gastbenutzer, zu drucken guest ok = no writable = no printable = yes
Listing 12.41 Die Druckerfreigaben
12.7.4 Samba, LDAP & Co.& Co.
Es ist nun wirklich 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 <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:
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
Listing 12.42 LDAP-Support
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. <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 ändern zu können. Jetzt muss man nur noch einen Unix-Admin finden, der so etwas auch machen würde.