Samba
Samba-Server
Die Konfiguration des Samba-Dienstes auf dem Caipirinha-Server dient ausschließlich dazu, einige zentrale Verzeichnisse auf dem Server unter Windows verfügbar zu machen. Insofern stellt die unten stehende Konfigurationsdatei kein Meisterstück dar, sondern kann lediglich einige einführende Ideen geben. Sicherlich könnte man auch in einem Heim-Netzwerk noch viel bessere Konfigurationen anbieten. Aber schauen wir uns zunächst einmal die Konfigurationsdatei an:
/etc/samba/smb.conf:
# Samba Configuration File # Manually created by Gabriel Rüeck # Date: 01-JUN-2010 [global] # Die folgende Einstellung ist erforderlich für Josélias Computer mit Windows Vista. client ntlmv2 auth = yes create mask = 0640 deadtime = 60 directory mask = 0750 display charset = UTF8 domain master = no fstype = Samba guest account = nobody hosts allow = 192.168.3. 127.0.0.1 load printers = no log file = /var/log/samba/log.%m-%I log level = 1 map to guest = Bad User name resolve order = lmhosts hosts bcast netbios name = CAIPIRINHA passdb backend = smbpasswd:/etc/samba/smbpasswd printcap name = cups printing = cups server string = Caipirinha Fileserver socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY syslog = 0 time server = yes unix extensions = no unix charset = UTF8 username map = /etc/samba/smbusers workgroup = SPQR [homes] browseable = no comment = Home Directories create mask = 0600 directory mask = 0700 guest ok = no hide dot files = yes hide special files = yes path = %H read only = no valid users = %S veto files = /Picasa.ini/Thumbs.db/ wide links = yes [www] browseable = no comment = User Web Pages create mask = 0644 directory mask = 0755 guest ok = no hide special files = yes path = %H/public_html read only = no [ftp] comment = Verzeichnisse des FTP-Servers create mask = 0644 directory mask = 0755 force create mode = 0644 force directory mode = 0755 force group = +users hide special files = yes path = /home/ftp write list = +users [public] comment = Daten für alle Benutzer guest ok = yes hide special files = yes path = /home/public veto files = /Picasa.ini/Thumbs.db/ write list = +relationship [tmp] comment = Verzeichnis für alles Mögliche create mask = 0644 directory mask = 0755 force group = +users hide special files = yes path = /home/tmp write list = +users [backup] comment = Verschlüsseltes Backup-Laufwerk create mask = 0600 directory mask = 0700 force group = +users hide special files = yes path = /backup valid users = +users write list = +users
Alle hier benutzten Schlüsselwörter sind sehr übersichtlich in der Samba-Dokumentation [1] erläutert, die man sich auch mit man samba
aufrufen kann. Einige Einstellungen werden im Folgenden näher erklärt:
- Die Einstellung für client ntlmv2 auth ist für die korrekte Authentifizierung von Windows Clients mit Windows Vista oder höher erforderlich, weil diese dafür standardmäßig NTLM benutzen.
- Die Einstellungen für create mask und directory mask in den globalen Einstellungen [global] legen zunächst fest, dass erzeugte Dateien für alle Benutzer der gleichen Gruppe lesbar und erzeugte Verzeichnisse für alle Benutzer der gleichen Gruppe zugänglich sein sollen. Es handelt sich also dabei um die umask erzeugter Dateien und Verzeichnisse.
- Mit display charset wird UTF8 als Zeichensatz eingestellt, so wie er auch auf dem Projektmanagement-Server selbst benutzt wird. Dann gibt es keine Probleme bei der Darstellung akzentuierter Zeichen oder von Dateinamen, welche nicht in lateinischen Buchstaben geschrieben sind.
- Mit den angegebenen Adreßbereichen unter hosts allow begrenzt man die zugriffsberechtigten Clients auf das Netzwerk 192.168.3.0/24 und den localhost (127.0.0.1). Der Eintrag des localhost ist besonders wichtig, weil beim Fehlen desselben der Befehl
smbpasswd
auf dem Server nicht mehr funktioniert. - passdb backend legt fest, dass bei dieser Konfiguration noch die alte Methode zur Speicherung der Zugangsdaten (nämlich die Datei /etc/samba/smbpasswd) eingesetzt wird. Der Einsatz dieser Methode ist aber nicht mehr empfohlen.
- Mit der hier gezeigten Einstellung für time server bietet sich der Caipirinha-Server den sich mit ihm verbindenden Windows-Clients als Zeitreferenz an. Dies ist eine gute Idee, denn durch die ntp-Konfiguration hat der Caipirinha-Server ja eine gut abgeglichene Uhrzeit.
- Den Namen der Arbeitsgruppe stellt man mit workgroup ein; er sollte auf denselben Namen lauten, den auch die anderen (Windows-) Maschinen als Arbeitsgruppe eingestellt haben. Der Server macht sich mit dem unter nebios name eingestellten Namen im Netzwerk bekannt. Hier nimmt man am Besten den Maschinennamen, damit die Fehlersuche und die Administration einfacher werden.
- Unter username map ist eine Datei referenziert, welche eine Zuordnung von Benutzernamen der Clients zu Benutzernamen auf dem Samba-Server auflistet.
Danach folgen in der Konfigurationsdatei verschiedene Abschnitte, welche jeweils ein bestimmtes unter path genanntes Verzeichnis “exportieren”. Hier handelt es sich um die Abschnitte:
- [homes] exportiert %H; in Windows Q:
- [www] exportiert %H/public_html; in Windows W:
- [ftp] exportiert /home/ftp; in Windows V:
- [public] exportiert /home/public; in Windows S:
- [tmp] exportiert /home/tmp; in Windows T:
- [backup] exportiert /backup; in Windows U:
Hier sind noch einige Anmerkungen zu den einzelnen Abschnitten:
- Die Angabe %H im Pfadnamen in den Abschnitten [homes] und [www] wird durch das Home-Verzeichnis des jeweiligen Benutzers ersetzt [2], also beispielsweise durch /home/gabriel, wenn sich der Benutzer gabriel mit dem Samba-Dienst verbindet (und auch verbinden darf).
- Für das Verzeichnis %H im Abschnitt [homes] werden mit 0600 und 0700 sehr restriktive Dateirechte vergeben, denn es handelt sich ja um das persönliche Verzeichnis eines Benutzers.
- Für das Verzeichnis %H/public_html im Abschnitt [www] werden dagegen mit 0644 und 0755 sehr offene Dateirechte vergeben, denn es handelt sich ja um das Verzeichnis für die persönliche Homepage des entsprechenden Benutzers, und die soll ja auch für andere Benutzer (in diesem Fall für den Benutzer wwwrun, mit dem der Apache-Dienst läuft) sichtbar sein. Man muss beachten, dass das Verzeichnis %H/public_html (Abschnitt [www]) auch über %H (Abschnitt [homes]), also über das persönliche Verzeichnis, erreicht werden kann. Die Dateirechte hängen aber davon ab, über welchen Samba-Share man sich verbindet. Man schreibt daher seine Webseiten am Besten immer nur über den Samba-Share [www], denn nur dann können die Webseiten auch von allen Benutzern (und damit auch vom Benutzer wwwrun, mit dem der Apache-Dienst läuft) gelesen werden. Eigentlich hätte ich auch noch erwartet, dass man hier explizit die Einstellungen force create mode und force directory mode konfigurieren muss, so wie dies im Share [ftp] gemacht wurde. Auf dem Caipirinha-Server ist nämlich die umask für die Benutzer auf restriktive 0077 gesetzt. Aus einem mir unerfindlichen Grund muss man das aber nicht machen; vielleicht ein Bug in der aktuell eingesetzten Samba-Version 3.4.3 in Verbindung mit openSuSE?
- Die Einstellung für wide links im Samba-Share [homes] erlaubt das Verlinken von Dateien aus dem Bereich von %H heraus. Dies wurde hier erforderlich, die Benutzerverzeichnisse durch das Skript Doppelte Dateien löschen durchforstet werden, welches dann möglicherweise auch Links aus den Benutzerverzeichnissen heraus nach /home/public erstellt. Sonst könnte auf diese verlinkten Dateien direkt auf dem Caipirinha-Server zugreifen, nicht aber über Samba. wide links sollte aber immer mit Vorsicht eingesetzt werden, denn es eröffnet natürlich auch Zugriffsmöglichkeiten auf Verzeichnisse, die man sonst vielleicht gar nicht über Samba zugänglich machen wollte.
- Beim Verzeichnis /home/ftp (Abschnitt [ftp]) werden weitergehende Dateirechte festgelegt bzw. erzwungen, damit Benutzer Dateien aus den Verzeichnissen /home/ftp/upload und /home/ftp/download bearbeiten können und diese dann auch vom FTP-Dienst gelesen werden können.
- In das Verzeichnis /home/public (Abschnitt [public]) dürfen nur Benutzer schreiben, welche der Gruppe relationship angehören. So ist es in write list definiert worden.
- In das Verzeichnis /home/tmp (Abschnitt [tmp]) dürfen dagegen alle Benutzer schreiben, die zur Gruppe users gehören.
- Für das Verzeichnis /backup im Abschnitt [backup] sind ebenfalls sehr restriktive Dateirechte vergeben worden. Es soll ja niemand die Backups eines anderen Benutzers lesen können. Darüber hinaus dürfen nur Mitglieder der Gruppe users über Samba auf dieses Verzeichnis zugreifen (valid users). Es dürfen auch nur Mitglieder der Gruppe users über Samba auf dieses Verzeichnis schreiben (write list).
In der Datei /etc/samba/smbusers sind, wie bereits erwähnt wurde, die Benutzernamen der Clients in Benutzernamen auf dem Samba-Server übersetzt:
... #root = administrator #nobody = guest pcguest smbguest gabriel = "Gabriel Rüeck" Gabriel joselia = "Josélia da Silva" Josélia
Wie man sieht, gibt es nur zwei Benutzer, nämlich gabriel und joselia, die sich als Gabriel und Josélia auf den Windows-Clients anmelden.
Einbinden eines Netzlaufwerks auf einem Windows-Client
Das Passwörter für die Samba-Benutzer gabriel uns joselia sind in der Datei /etc/samba/smbpasswd
enthalten, allerdings in verschlüsselter Form. Es wurde hier das
gleiche Passwort gewählt wie beim Login auf den Windows-Clients, so dass
die Netzlaufwerke einfach unter Windows gemountet werden können. Es ist
wichtig zu wissen, dass das Samba-Passwort eines Benutzers vom
Systempasswort des Benutzers abweichen kann. Das Samba-Passwort kann in
einer Linux-Shell mit dem Befehl smbpasswd
gesetzt werden.
Windows-Client
Unter den verschiedenen Windows-Versionen funktioniert die Einbindung der durch Samba “exportierten” Netzlaufwerke immer nach der gleichen einfachen Art und Weise. Im Windows Explorer wählt man den Menüpunkt Extras und dann Netzlaufwerk verbinden. Danach sucht man einen Laufwerksbuchstaben aus und gibt bei Ordner den vollständigen Pfad zum freigegebenen Verzeichnis ein, so wie rechts abgebildet. Außerdem markiert man noch die Option Verbindung bei Anmeldung wiederherstellen, so dass das Netzlaufwerk permanent eingebunden wird. Im Beispiel rechts wurde die Maschine mit dem unter netbios name angegebenen Namen (caipirinha) eingebunden. Dies funktioniert meist nur im lokalen Netzwerk (bzw. generell in den Netzwerken, in welche die smb- und nmb-Pakete weitergeleitet werden). Weitere Möglichkeiten sind die Angabe der IP-Adresse oder der volle Maschinenname (FQDN).
Drucken über Samba
Lange Zeit hatte ich über Samba auch Zugriffsmöglichkeiten auf die am Caipirinha-Server installierten Drucker angeboten. Allerdings gab dies, insbesondere mit Windows-Clients, die sich als Gast anmeldeten, immer wieder Probleme, und so habe ich mich entschlossen, Druck- und Dateidienste komplett zu trennen und die Druckdienste ausschließlich über CUPS anzubieten.
Posted on: 2010-08-18Gabriel Rüeck