Samba – Dateiserver unter Linux

server tutorialDa der letzte Teil der Linux-Server Serie 'Server nach Wunsch' schon eine Weile zurückliegt, geht es jetzt endlich weiter. Das SMB-Protokoll, dem das Freigeben von Ordnern in den meisten Windows-Netzen zu Grunde liegt, wurde bereits 1983 von IBM entwickelt und seitdem von vielen Firmen weiterentwickelt. Das größte Einsatzgebiet von SMB ist in der Windows-Dateifreigabe zu finden, und da sich diese mittlerweile als Quasi-Standard festgesetzt hat, sollte auch unser Linux-Server die Sprache von SMB beherrschen. Das dafür benötigte Programm Samba, das frei unter GPL-Lizenz verbreitet wird, stellt die benötigten Funktionen zur Verfügung, um aus Linux einen "Windows-Dateiserver" zu machen.

Bevor wir anfangen kurz überprüfen ob irgendwelche Updates anliegen:

sudo apt-get update
sudo apt-get upgrade

Als nächstes erfolgt die Installation von Samba über das entsprechende Paket (auf der Konsole, oder falls ihr XFCE mitinstalliert habt, über euren favorisierten Paketmanager):

sudo apt-get install samba

samba install

Anschließend richten wir die Benutzer ein, die später auf den Server zugreifen dürfen. Dazu müssen die Benutzer zuerst im System angelegt werden, was mit einem 'sudo adduser benutzer' schnell erledigt ist. Anschließend wird noch ein Samba-Passwort für den Benutzer vergeben mit 'smbpasswd -a benutzer'. Dieses Spiel einfach mit allen Benutzern die Zugriff haben sollen wiederholen. Anschließend fügen wir die Benutzer der Gruppe 'users' hinzu, das wird benötigt um später Zugriffsrechte auf gemeinsame Ordner zu gewähren:


sudo nano /etc/group

Dort werden die Namen der Benutzer einfach an die Zeile die mit 'users' beginnt angehangen:

users:x:100:benutzer1,benutzer2,benutzer3
Datei abspeichern und schließen mit Strg-X.

Alternativ können Benutzer auch mit dem folgenden Befehl zu einer Gruppe hinzugefügt werden:

sudo addgroup benutzer gruppe

Doch nun zur Konfiguration, diese erfolgt über eine einzige Datei, die im Verzeichnis '/etc/samba' zu finden ist. Um die Konfiguration zu beginnen machen wir zuerst mal ein Backup von der Original Datei 'smb.conf':


sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

Um unsere neue Konfigurationsdatei zu erstellen öffnen wir einfach unseren Lieblingseditor (der Einfachheit halber benutze ich hier nano, es kann aber auch jeder andere Editor benutzt werden) mit folgendem Befehl:

sudo nano /etc/samba/smb.conf

Die Datei ist der Übersichtlichkeit halber in Sektionen unterteilt, in der Regel gilt das eine Sektion einer Freigabe entspricht und der Name der Sektion der Name der späteren Freigabe ist. Wenn also die Sektion [freigabe] heißt (die eckigen Klammern umschließen den Sektionsnamen), dann würde die Freigabe entsprechend 'freigabe' heissen. Es gibt allerdings einige bereits festgelegte Sektionsnamen, die man nicht für seine eigenen Freigaben verwenden sollte. Dazu gehört unter anderen auch die Sektion [global], die für die Einstellungen für den Server reserviert ist und mit der die Konfigurationsdatei 'smb.conf' in der Regel beginnt:


[global]
workgroup = ARBEITSGRUPPE
server string = Samba Server auf %h
wins support = yes
os level = 33
local master = yes
;wins server = w.x.y.z

Für einfaches Filesharing ist das schon genug der Einstellung. Die Zeile 'wins support' sollte falls man einen Windows-Server im Netzwerk betreibt auf 'no' gesetzt werden und die Zeilen 'os level = 33' und 'local master = yes' gelöscht oder mit ';' auskommentiert werden. Dafür sollte die Zeile ';wins server = w.x.y.z' wiefolgt abgeändert werden:

wins server = {IPdesWINDOWSservers} Die Klammer müssen weg gelassen werden!

Wozu dient WINS? Ganz einfach dazu die IP-Adressen der im Netzwerk vorhandenen Rechner deren NETBIOS-Namen, also den Hostnamen zuzuweisen und anderen Rechnern ein Verzeichnis zu bieten, in der diese die Zuordnung (IP<>Hostname) nachschauen können.

Als nächstes richten wir eine einfache Freigabe ein, zu der jeder der eingerichteten Nutzer Zugriff hat. Dazu legen wir eine neue Sektion an mit dem Namen 'public'. Zuerst erstellen wir allerdings das Verzeichnis und setzen die Benutzerrechte so, das die Benutzer der Gruppe 'users' (also unsere eben eingerichteten), darauf zugreifen können:


sudo mkdir /srv/public
sudo chmod o-rwx /srv/public
sudo chgrp users /srv/public
sudo chmod g+sw /srv/public

Zeile 1 legt das Verzeichnis (das Überverzeichnis '/srv' ist für solche Serverdienste reserviert, also nutzen wir das hier auch mal) an, Zeile zwei beschränkt die Lese- und Schreibrechte auf Besitzer und Gruppe des Verzeichnisses, Zeile 3 ändert die Gruppe des Verzeichnisses auf 'users' und Zeile 4 sorgt dafür das neu angelegte Verzeichnisse immer der Gruppe 'users' gehören.


[public]
comment = Freigabe fuer jedermann
path = /srv/public
writeable = yes
valid users = @users
force directory mode = 660
force create mode = 660

In der Zeile comment gibt man am besten eine Beschreibung des Verzeichnisses an (kann auch weggelassen werden), in der Zeile path gibt man den Pfad zum eben angelegten Verzeichnis an. 'writeable' sorgt dafür das das Schreiben in das Verzeichnis möglich ist. Die letzten drei Zeilen sind für die Zugriffsrechte zuständig: 'valid users' zeigt hier an das die Gruppe 'users', deutlich gemacht durch das @, Zugriff hat. Einzelne Benutzer werden ohne @ durch Komma getrennt eingetragen. Die anderen beiden Zeilen sorgen dafür, das neu angelegte Dateien und Verzeichnisse von den Benutzern der Gruppe 'users' Les- und Schreibbar sind.

Damit können wir unseren Server auch schon testen, 'smb.conf' abspeichern und mit 'testparm -v' prüfen ob die gemachten Konfigurationen Fehler enthalten. Das Konsolenprogramm gibt die komplette Konfiguration aus und zeigt eventuelle Fehler an. Wenn die Einstellungen fehlerfrei sind, wird der Server mit 'sudo /etc/init.d/samba restart', neu gestartet. Danach sollte man testen ob die Freigabe aus dem Netzwerk erreichbar ist.

Unter Windows geht das folgendermaßen:

Start->Ausführen

Im Dialogfenster ist einzugeben: '\\www.xxx.yyy.zzz' wobei www.xxx.yyy.zzz der IP eures Servers entspricht. Falls ihr unter Windows mit dem selben Benutzer arbeitet, den ihr vorher im Linux Server angelegt habt, also gleicher Benutzernam, gleiches Passwort, dann sollte bereits ein Explorer-Fenster mit dem Ordner public geöffnet werden. Andernfalls erscheint ein Dialog der zur Eingabe von Benutzernamen und Passwort auffordert. Nach Eingabe dieser und bestätigen mit Enter erscheint dann ebenfalls unser public-Ordner. Zum Test sollte auch mal versucht werden eine Datei zu erstellen, falls das nicht funktionieren sollte, ist wohl bei der Konfiguration irgendwo etwas schiefgelaufen, keine Panik, das passiert jedem, einfach noch mal ruhig alles durchgehen und den Fehler finden.

Falls ihr den public Ordner weiterhin verwenden wollt, empfiehlt es sich diesen als Netzlaufwerk zu verbinden. Dazu einfach mit der rechten Maustaste auf den Ordner 'public' klicken und 'Netzlaufwerk verbinden...' klicken, anschließend einen Laufwerksbuchstaben auswählen (bei den Netzlaufwerken ist es sinnvoll diese am Ende des Alphabets anzulegen, da es dann keine Probleme mit USB-Sticks oder externen Festplatten gibt) und mit OK bestätigen. Danach sollte im Arbeitsplatz ein Laufwerk mit dem von euch gewählten Buchstaben zu sehen sein, über das ihr auf den Netzwerkordner zugreifen könnt.

Zu guter Letzt werden wir noch die Home-Verzeichnisse der angelegten Benutzer freigeben. Diese Freigaben sind nur den jeweiligen Benutzern zugänglich, nur sie dürfen dort lesen, schreiben usw.

Um nicht für jedes Verzeichnis einzeln eine Sektion anlegen zu müssen wurde für diesen Zweck die Sektion '[homes]' vorgesehen. Die Sektion würde dann entsprechend so aussehen:


[homes]
comment = Home Verzeichnisse
browseable = yes
writeable = yes

Das ist bereits genug, man sollte jetzt unter Windows mit 'Start->Ausführen-> \\www.xxx.yyy.zzz\benutzer' und eventueller Passworteingabe in das jeweilige Home-Verzeichnis gelangen. Problematisch ist, das in diesem Zustand, jeder Benutzer alle Verzeichnisse lesen darf, auch über das Netzwerk. Um das zu ändern sollte das folgende getan werden:


sudo chmod g-rx,o-rx /home/benutzer

Damit hat nur noch der Besitzer Zugriff auf sein Verzeichnis, sowohl lokal, als auch übers Netz.

Fazit:
Um nun weitere Verzeichnisse anzulegen, kann man sich das Verzeichnis 'public' als Vorlage nehmen und entsprechend abändern. Die Zugriffsrechte sollte man primär unter Linux setzen, Samba ist dazu zwar auch fähig, das führt allerdings meist zu Verwirrungen.
Am einfachsten folgt man bei der Rechtevergabe dem folgenden Schema:
Wenn mehrere Benutzer auf ein Verzeichnis zugreifen sollen, legt man am besten eine neue Gruppe an ('addgroup gruppe'), und fügt die Benutzer dieser hinzu ('addgroup benutzer gruppe'), anschließend gibt man der Gruppe den Besitz am Verzeichnis ('chgrp gruppe verzeichnis') und setzt die Rechte entsprechend (siehe public-Freigabe).
Wenn nur ein Benutzer Zugriff haben soll, dann überträgt man ihm mit 'chown benutzer:benutzergruppe verzeichnis' die Rechte und sorgt mit 'sudo chmod g-rx,o-rx verzeichnis', dafür das nur er darauf Zugriff hat. So lassen sich relativ leicht sehr komplexe Nutzerrechte erstellen, ich denke dazu sollte später noch ein kleiner Artikel folgen, was meint ihr?

So damit schließen wir dieses Kapitel und erfreuen uns unseres Dateiservers, bei Fragen oder Beschwerden kontaktiert mich bitte über die Kommentare oder das Kontaktformular. Leider kann ich hier wie immer keine Garantie geben und vor allem nicht für eventuell entstandene Schäden haften, ihr versteht.

Falls ihr noch Vorschläge habt für weitere Dienste die unser Server anbieten soll, immer her damit!!

Related Links:

Internetseite des Samba-Projektes
Offizielle deutsche Seite des Samba-Projektes
Samba Wiki
Verzeichnis der offiziellen Dokumentation, sowie Howtos und Beispiel-Konfigurationen

Serie: Linux Home Server

Teil 1:

Installation des Grundsystems mit grafischer Oberfläche - Xubuntu 6.06

Teil 2:

Grundeinrichtung des Systems - Netzwerk, Updates, Midnight Commander, SSH-Server

Teil 3:

Samba - Dateiserver unter Linux

Teil 4:

LAMP - Linux-Apach-MySQL-PHP

Teil 5:

Web-Anwendungen für den Server - Jinzora und Torrentflux-b4rt

Teil 6:

FTP und WebDAV für euren Ubuntu-Server

Teil 7:

Mailserver mit Postfix, Dovecot und Getmail

4 Gedanken zu „Samba – Dateiserver unter Linux

  1. gufixxx

    Vielen Dank für die Müh der Arbeit, weiter so. warum kann ich die Prüfsumme nicht als Produkt angeben? 😉

  2. Pingback: pligg.com

  3. Z_man

    Schöne Anleitung.

    Kleiner Tippfehler: Beim Testbefehl unter Linux fehlt ein t, er sollte ‚testparm -v‘ lauten.

Kommentare sind geschlossen.