Samba

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