29.5Beispiel – Home- und Medien-Server

Dieser Abschnitt gibt ein einfaches Beispiel für die Konfiguration eines zentralen Samba-Servers. Ausgangspunkt ist ein computer-affiner Haushalt, in dem sich auf den drei Computern der Eltern bzw. der beiden Kinder immer mehr Daten anhäufen: Bilder von Digitalkameras, Audio- und Video-Dateien, Schuldokumente, die Buchhaltung etc. Die dezentrale Datenhaltung wirft einige Probleme auf:

Der Linux-begeisterte Sohn schlägt schließlich vor, diese Probleme durch einen zentralen Home- oder Medien-Server zu lösen. Der Server kann via WLAN in das Heimnetz integriert werden und bei Bedarf auch weitere Funktionen übernehmen.

An dieser Stelle ist nur die Samba-Konfiguration von Interesse: Jedes Familienmitglied bekommt ein eigenes Netzwerkverzeichnis, in dem es allein Daten schreiben und lesen darf. Die dort gespeicherten Daten sind also privat, wobei natürlich allen Familienmitgliedern klar sein muss, dass der Sohn als Administrator letztlich jede Datei lesen und verändern kann ...

Zum gemeinsamen Datenaustausch gibt es außerdem noch fünf weitere Verzeichnisse. Die Eltern dürfen auf eltern zugreifen, die Kinder auf kinder und alle Familienmitglieder auf die Verzeichnisse familie, audio und fotos. Natürlich wäre es möglich gewesen, die Verzeichnisse audio und fotos einfach als Unterverzeichnisse von familie einzurichten, die Definition eigener Netzwerkverzeichnisse macht die Anwendung aber ein wenig intuitiver. Bei Bedarf können natürlich beliebige weitere Benutzer und Verzeichnisse eingerichtet werden.

Als Benutzernamen verwende ich im Folgenden mutter, vater, tochter, sohn. In der Praxis werden Sie hier natürlich richtige Namen verwenden – aber darauf habe ich hier verzichtet, damit Sie nicht auch noch die Namen einer fiktiven Familie lernen müssen.

root# groupadd eltern root# groupadd kinder root# groupadd familie root# useradd --create-home --groups eltern,familie vater root# useradd --create-home --groups eltern,familie mutter root# useradd --create-home --groups kinder,familie sohn root# useradd --create-home --groups kinder,familie tochter

Da useradd ohne Passwort ausgeführt wurde, werden die neuen Benutzer automatisch gesperrt, d.h., es ist kein Login möglich. Das ist beabsichtigt: Es ist weder erforderlich noch zweckmäßig, dass sich die Familienmitglieder direkt auf dem Server anmelden.

Zusammen mit jedem Benutzer wird automatisch auch eine neue, gleichnamige Gruppe erzeugt, die als Standardgruppe für den Benutzer gilt. Außerdem werden den neuen Benutzern auch die Gruppen familie und eltern oder kinder zugeordnet. vater gehört somit den Gruppen vater, eltern und familie an, mutter den Gruppen mutter, eltern und familie etc. Wenn Sie einem Benutzer später eine weitere Gruppe zuordnen möchten, verwenden Sie am einfachsten das folgende Kommando:

root# usermod -a -G neuegruppe benutzer

Als Nächstes werden die Samba-Benutzer eingerichtet, diesmal jeweils mit einem Passwort:

root# smbpasswd -a vater root# smbpasswd -a mutter ...

Beim Einrichten der Verzeichnisse für die gemeinsamen Dateien ist es wichtig, Besitzer und Zugriffsrechte richtig einzustellen – sonst funktioniert später der Datenzugriff nicht. Das erste Kommando chmod 770 bewirkt, dass nur Gruppenmitglieder das Verzeichnis lesen und verändern dürfen. Das zweite Kommando verbietet den Zugriff auf die Home-Verzeichnisse durch andere Benutzer.

root# mkdir /shared-data root# mkdir /shared-data/{eltern,kinder,familie,audio,fotos} root# cd /shared-data root# chown :eltern eltern/ root# chown :kinder kinder/ root# chown :famile familie/ audio/ fotos/ root# chmod 770 * root# chmod 770 /home/{vater,mutter,sohn,tochter}

Ein Vorteil des gemeinsamen Datei-Servers ist die Möglichkeit, zentrale Backups zu machen. Dabei müssen Sie lediglich die Verzeichnisse /home und shared-data sichern.

Die folgenden Zeilen zeigen die Konfigurationsdatei smb.conf. Die Passwort-Synchronisierung und jeglicher Samba-Zugriff durch Gäste sind deaktiviert. Die Einstellungen für die diversen Verzeichnisse sollten nach der Lektüre von Abschnitt 29.4, »Netzwerkverzeichnisse«, ohne weitere Erklärung verständlich sein.

# /etc/samba/smb.conf für einen Home-Server [global] workgroup = home server string = %h server (Samba, Ubuntu) security = user passdb backend = tdbsam unix password sync = no invalid users = root map to guest = never log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 dns proxy = no panic action = /usr/share/samba/panic-action %d [homes] browseable = no writeable = yes [eltern] valid users = @eltern path = /shared-data/eltern writeable = yes force group = +eltern create mask = 0660 directory mask = 0770 [kinder] valid users = @kinder path = /shared-data/kinder writeable = yes force group = +kinder create mask = 0660 directory mask = 0770 [familie] valid users = @familie path = /shared-data/familie writeable = yes force group = +familie create mask = 0660 directory mask = 0770 [fotos] valid users = @familie path = /shared-data/fotos ... wie bei [familie] [audio] valid users = @familie path = /shared-data/audio ... wie bei [familie]

Die Konfiguration hat einen kleinen Schönheitsfehler: Alle Benutzer sehen alle Freigaben, auch die, die nicht für sie bestimmt sind und die sie nicht nutzen dürfen. Zum Beispiel sehen die Kinder das Verzeichnis eltern, die Eltern das Verzeichnis kinder. Eine tatsächliche Nutzung dieser Verzeichnisse scheitert wie geplant an den Zugriffsrechten, aber noch eleganter wäre es natürlich, wenn diese Verzeichnisse gar nicht erst sichtbar wären.

Samba bietet hierfür leider keine Konfigurationsmöglichkeiten. Sie können zwar einzelne Verzeichnisse durch browseable = no verstecken, aber dann sieht niemand die Verzeichnisse mehr, auch nicht die rechtmäßigen Nutzer. Die Verzeichnisse bleiben weiter benutzbar, allerdings muss der richtige Pfad manuell angegeben werden. Auch die Optionen hide unreadable = yes und hide unwriteable = yes helfen nicht weiter: Damit werden innerhalb eines Netzwerkverzeichnisses alle Dateien versteckt, die ein Benutzer nicht lesen bzw. nicht verändern kann. Das Netzwerkverzeichnis an sich bleibt aber weiter sichtbar.