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
| 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
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.