Samba Server unter Linux

Gerade im privaten Netzwerk kann es äußerst praktisch sein, einen kleinen Server zu betreiben, auf dem Daten zentral gespeichert werden. So müssen unter anderem Urlaubsfotos nicht auf jedem einzelnen Computer liegen, sondern können auf einem gemeinsamen Laufwerk abgelegt werden, auf das alle Geräte im Netzwerk zugreifen können.
Auch Drucker lassen sich auf diese Weise bequem für alle Nutzer freigeben. Viele denken bei dem Begriff Server sofort an große, lärmende Serverschränke aus dem Rechenzentrum – doch es geht auch deutlich kleiner. Oft genügt bereits ein älterer Computer, den man problemlos zu einem Server umfunktionieren kann.
In diesem Artikel zeige ich euch, wie ihr unter Linux einen Samba-Server einrichtet, mit dem ihr genau solche Dienste wie Datei- und Druckerfreigaben im Netzwerk realisieren könnt.

Zunächst benötigt ihr einen Computer mit einer Linux-Installation. Hierfür reicht auch eine Version ohne eine GUI (grafische Oberfläche). Die Grundlagen zum Thema Linux habe ich bereits hier in der Artikelserie beschrieben. Aber die Installation, welche ich hier von dem Samba-Server beschreibe, ist auch nicht so kompliziert, sodass ihr kein Fachwissen in Linux benötigt. Als kleiner Hinweis: Ich verwende bei diesem Tutorial ein Ubuntu 10 als Arbeitsumgebung.

Samba-Server installieren

Wenn ihr euer Linux gebootet habt, öffnet ihr das Terminal und meldet euch erst einmal mit dem Befehl su als root an und gebt anschließend Folgendes ein:

apt-get update

Mit diesem Befehl aktualisiert ihr das Repository. Anschließend könnt ihr mit folgendem Befehl das Samba-Paket installieren.

apt-get install samba

User und Gruppe anlegen

Nachdem jetzt Samba auf dem Linux-Server installiert wurde, erstellen wir eine neue Gruppe und prüfen danach gleich, ob diese auch wirklich angelegt wurde.

groupadd sambagruppe
cat /etc/group | grep „sambagruppe“

Mit dem ersten Befehl wird eine Gruppe mit dem Namen „sambagruppe“ erstellt und mit dem zweiten Befehl schaut man, ob diese Gruppe auch richtig erstellt wurde.
Als Nächstes muss noch ein User angelegt werden. Das machen wir mit folgendem Befehl:

useradd –m -d /home/usertest -s /bin/false -G sambagruppe testuser

Das –m in diesem Befehl steht dafür, dass das Homeverzeichnis /usertest angelegt wird, aber man muss beachten, dass die übergeordneten Verzeichnisse schon vorhanden sein müssen. Wenn diese bis jetzt nicht existieren, muss man sie davor mit mkdir anlegen. In dem Befehl steht das –s /bin/false dafür, dass dieser Benutzer die Shell nicht benutzen darf. Das –G steht für Gruppe und dieser User wird jetzt z. B. der Gruppe Sambagruppe hinzugefügt. Zum Schluss muss man noch den Benutzernamen angeben. Hier soll der Benutzer „testuser“ heißen.
Damit wir auch sehen, ob der User angelegt wurde, können wir das mit folgendem Befehl prüfen:

cat /etc/passwd

Wenn ihr jetzt bei eurem Samba-Server noch irgendwelche anderen Verzeichnisse freigeben möchtet, außer dem Homeverzeichnis des Users, welchen ihr gerade erstellt habt, müsst ihr diese noch mit mkdir anlegen. Danach müsst ihr auch noch die Rechte für diese Verzeichnisse entsprechend anpassen, das geht wie folgt:

chmod 750 /home/ordner
chown testuser /home/ordner
chgrp sambagruppe /home/ordner

Mit dem ersten Befehl geben wir die Rechte 750, mit dem 2. Befehl definieren wir den Benutzer testuser als neuen Besitzer des Verzeichnisses und mit dem dritten Befehl tragen wir die Gruppe sambagruppe ein.
Danach müssen wir den Benutzer noch in Samba eintragen. Das geht mit folgendem Befehl:

smbpasswd –a testuser

Damit wird der Benutzer testuser bei Samba eingetragen. Hier ist es wichtig, dass man denselben Usernamen verwendet wie bei dem davor angelegten Linux-Benutzer.

Samba-Konfiguration

Als Nächstes müssen wir noch die Konfiguration des Samba-Servers auf unsere Wünsche hin anpassen. Das können wir entweder mit dem SWAT-Webinterface machen, welches auf dem Port 901 läuft, oder indem wir direkt die Config-Datei anpassen. Ich zeige hier in dem Beispiel, wie man die Konfigurationsdatei anpasst, denn ich denke, das ist besser zum Verständnis. Dazu muss man zunächst die Config-Datei öffnen. Das geht mit folgendem Befehl:

nano /etc/samba/smb.conf

Hier zeige ich euch eine Beispielkonfigurationsdatei, auf welche ich genauer eingehen werde, und erkläre, wofür die einzelnen Befehle bzw. Parameter stehen.

[global]
workgroup = Gruppe1
encrypt passwords = yes
security = user
hosts allow = 192.0
server string = sambaserver
log file = /home/usertest/samba.log
max log size = 500
log level = 1
guest ok = yes
guest account = Usergast

[freigabe]
comment = Das Freigabe Share
path = /home/usertest
read only = no
write list = testuser@sambagruppe
valid users = testuser@sambagruppe
invalid users = unbekannt@boesegruppe
create mask = 770
directory mask = 770
force user = testuser
force group = sambagruppe

[homes]
comment = Kommentar zum Home-Share
browsable = no

[printers]
comment = Alle Drucker
path = /var/spool/samba
printable = Yes
browseable = no
guest ok = Yes

Samba-Konfiguration – Befehle und Bedeutung
Befehl Bedeutung
[global] Globaler Konfigurationsbereich
workgroup = Grupp1 Gibt der Arbeitsgruppe den Namen Gruppe 1
encrypt passwords = yes Gibt an, dass Passwörter verschlüsselt übertragen werden sollen. Wenn anstatt des „yes“ ein „no“ steht, würden die Passwörter nicht verschlüsselt verschickt.
security = user Man muss sich mit einem Account anmelden. Man könnte aber auch an der Stelle „Share“ angeben, dann würden die Rechte über die Share-Freigabe gehen.
hosts allow = 192.0 Es sind alle Zugriffe verboten, außer von 192.0.0.0/16.
server string = sambaserver Der Server meldet sich beim Client mit sambaserver.
log file = /home/usertest/samba.log Hiermit wird angegeben, wo das Logfile gespeichert wird.
max log size = 500 Bestimmt, wie viele kByte das Logfile maximal groß sein darf. Wenn es die maximale Größe erreicht hat, wird eine neue Datei angelegt.
log level = 1 Gibt an, wie viel geloggt werden soll: 1 heißt, dass sehr wenig geloggt werden soll, und 10 steht dafür, dass alles geloggt werden soll.
guest ok = yes Ob Gäste erlaubt sind. Wenn man das yes durch ein no ersetzt, sind Gäste nicht erlaubt.
guest account = Usergast Gäste werden als Usergast im System geführt.
[freigabe] Das Share heißt hier freigabe.
comment = Das Freigabe Share Kommentar zu dem Share.
path = /home/usertest Der Pfad zu dem Share unter Linux.
read only = no Es heißt, dass auch geschrieben werden darf. Wenn ein „yes“ stehen würde, dürfte nur gelesen werden.
write list = testuser@sambagruppe Der Benutzer testuser und die Gruppe sambagruppe dürfen schreiben.
valid users = testuser@sambagruppe Nur der Benutzer testuser und die Gruppe sambagruppe dürfen das Share verwenden.
invalid users = unbekannt@boesegruppe Der User unbekannt und die Gruppe boesegruppe dürfen das Share nicht verwenden.
create mask = 770 Es werden die Rechte 770 beim Erstellen von neuen Dateien gesetzt.
directory mask = 770 Es werden die Rechte 770 gesetzt, wenn ein neues Verzeichnis erstellt wird.
force user = testuser Alle neu erstellten Dateien oder Verzeichnisse gehören dem Benutzer testuser.
force group = sambagruppe Alle neu erstellten Dateien oder Verzeichnisse gehören der Gruppe sambagruppe.
[homes] Home Share.
comment = Kommentar zum Home-Share Kommentar zum Home-Share.
browsable = no Andere sehen dieses Share nicht. Wenn man das no durch ein yes ersetzen würde, könnten andere das Share sehen.
[printers] Dieser Bereich ist für die Drucker reserviert.
comment = Alle Drucker Kommentar zum Druckerbereich.
path = /var/spool/samba Das Spool-Verzeichnis (alle User sollten hier Schreibrechte haben). In dem Spool-Verzeichnis werden bei einem Druckauftrag temporäre Dateien angelegt.
printable = Yes Durch das Yes ist es erlaubt, zu drucken.
browseable = no Der Eintrag printers erscheint nicht in der Browserliste, jedoch ist jeder Drucker in der /etc/printcap.
guest ok = Yes Mit dieser Einstellung dürfen auch Gäste drucken.

Wenn ihr die Config-Datei fertig angepasst habe könnt ihr diese mit folgendem Befehl überprüfen lassen:

testparm

Als Nächstes könnt ihr den Sambaserver starten. Dies könnt ihr entweder mit diesen beiden Befehlen machen.

/etc/init.d/smbd start
/etc/init.d/nmbd start

Oder ihr könnt ihn auch mit diesem Befehl über das Programm service starten.

service smbd start

Jetzt könnt ihr testen, ob die Samba-Shares auch verfügbar sind. Das geht mit diesen beiden Befehlen.

smbclient //localhost/testuser
smbclient –U testuser –L localhost

1 Gedanke zu „Samba Server unter Linux“

  1. Danke für die übersichtliche Anleitung. Vor allem die Idee mit der Tabelle finde ich gut!
    Hat mir jedenfalls bei meiner eigenen Samba-Doku durchaus Denkanstöße gegeben.

    Antworten

Schreibe einen Kommentar