Samba-Server auf dem Raspberry Pi einrichten

ELektronik-KOmpendium.de
Online

Preis auf Anfrage
Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Samba-Server auf dem Raspberry Pi einrichten Das Ziel ist, den Raspberry Pi als File-Server zu betreiben, auf den man per Windows-Explorer zugreifen kann. Die dafür am besten geeignete Software-Lösung ist ein Samba-Server. Mit Samba lassen sich fast alle Funktionen eines Windows-Servers realisieren. Dazu gehören: Datei- und Verzeichnis-Freigaben (Shares) Drucker-Freigaben Primärer Domain-Controller für NT (Samba 3) Active Directory Domain Controller (ab Samba 4)

Wichtige informationen

Themenkreis

Unterschied zwischen Samba 3 und Samba 4

Samba 3 unterstützt LDAP, auf dem auch Windows Active Directory beruht. Ein Samba-3-Server kann aber keinen Windows-Active-Directory-Domain-Controller ersetzen. Unter Raspbian Wheezy steht nur Samba 3 zur Verfügung. Das ist in Ordnung, wenn man auf einen Active Directory Domain Controller verzichten kann. Das kann erst Samba 4. Für einfache Verzeichnis-Freigaben reicht Samba 3 vollkommen aus.
Sofern man Raspbian Jessie verwendet, sollte man auch Samba 4 verwenden. Auch dann, wenn man nur einen einfachen Dateiserver braucht. Samba 4 ist die einzige Samba-Version, die noch aktiv gewartet wird.

Aufgaben
  1. Samba-Server installieren.
  2. Grundkonfiguration des Samba-Servers.
  3. Verzeichnis-Freigaben einrichten.
  4. Samba-Passwort für Benutzer einrichten.
Vorbemerkung zu den folgenden Lösungen

Im Vergleich zu den üblichen Tutorials und Anleitungen zur Einrichtung von Samba-Freigaben ist diese Anleitung etwas umfangreicher. Der Grund ist, dass eine Verzeichnis-Freigabe nicht gleich Verzeichnis-Freigabe ist. Man kann generell für alle ein Verzeichnis freigeben, für eine bestimmte Benutzergruppe oder für einen einzelnen Benutzer. In dieser Anleitung berücksichtigen wir alle drei Möglichkeiten. Es geht hier im wesentlichen um die Darstellung, welche Berechtigungen gesetzt werden müssen. Das sparen andere Anleitungen aus. Aber genau hier liegen später die Probleme, wenn man selber individuelle Freigaben einrichten will.

Lösung: Samba-Server installieren

Relevant für den Samba-Server sind die Pakete "samba" und "samba-common". Das Paket "smbclient" wäre auf einem Server nicht notwendig. Es hat allerdings den Vorteil, dass man lokal auf dem Server die Freigaben testen kann. Das vereinfacht die Fehlersuche.

sudo apt-get install samba samba-common smbclient

Das Herunterladen und Installieren kann je nach System schon mal etwas dauern. Es schadet nicht jede Menge Geduld mitzubringen.

Anschließend prüfen wir, ob die Samba-Dienste laufen:

ps ax | grep .*mbd

In der Liste sollten "nmbd" und "smbd" enthalten sein.

Außerdem können wir noch mit "netstat" prüfen, ob die Samba-Ports (137/udp, 138/udp, 139/tcp und 445/tcp) gebunden sind.

sudo netstat -tulpn | grep mbd

Wenn die Samba-Dienste laufen und auf die Ports lauschen, dann ist alles im grünen Bereich. Wenn nicht, dann ist bei der Installation was schief gegangen und man braucht mit der Konfiguration von Samba nicht weiter machen.

Lösung: Grundkonfigurieren des Samba-Servers

Für die Samba-Grundkonfiguration gibt es eine zentrale Konfigurationsdatei "/etc/samba/smb.conf". Diese Datei ist in der Vorkonfiguration äußerst umfangreich und dadurch unübersichtlich. Für eine einfache Grundkonfiguration empfiehlt sich die Datei umzubenennen und neu zu erstellen.

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_alt sudo nano /etc/samba/smb.conf

Die folgende Grundkonfiguration ist nicht allgemeingültig, sondern für die meisten Anwendungen sinnvoll und zweckmäßig anzusehen. Das heißt, für den Anfang reicht es aus. Später muss sie vielleicht individuell angepasst werden.

[global] workgroup = WORKGROUP security = user encrypt passwords = yes

Diese Grundkonfiguration gibt eine global gültige Konfiguration vor. Das wird durch den Bereich "global" gekennzeichnet, der in eckige Klammern gesetzt ist. Alle darin gemachten Angaben gelten für alle später konfigurierten Freigaben.

Der Parameter "workgroup" gibt die Bezeichnung der Arbeitsgruppe an. Damit hat man in Windows-Netzwerken Computer in Gruppen strukturiert. Heute spielt dieser Parameter keine Rolle mehr, da neuere Windows-Versionen, diese Angabe nicht mehr berücksichtigen. Er ist nur noch aus Kompatibilitätsgründen enthalten. Hier steht typischerweise "Workgroup" oder "Arbeitsgruppe".
Der Parameter "security" gibt an, welche Sicherheitsstufe beim Zugriff auf die Freigaben gelten sollen. Der Wert "user" ist eine gute Wahl und sagt aus, dass die User-Verwaltung des Servers verwendet werden soll. Das heißt, für den Zugriff auf die Samba-Freigaben gelten die eingerichteten Nutzer und deren Berechtigungen auf dem Server.
Der Parameter "encrypt passwords" mit "yes" sorgt dafür, dass die Passwörter bei der Authentifizierung verschlüsselt übertragen werden. Aus Sicherheitsgründen eine sinnvolle Einstellung, die keine Nachteile bei der Nutzung mit sich bringt.

Hat man diese Grundkonfiguration in die Datei eingetragen, kann man die Datei speichern und schließen: Strg + O, Return, Strg + X.

Dann testen wir diese Konfigurationsdatei. Das hat den Vorteil, dass wenn wir etwas falsch oder fehlerhaft eintragen, dann können wir den Fehlstart des Samba-Servers vermeiden.

testparm

Wenn hier kein Fehler kommt, dann ist alles ok. Ansonsten muss der Fehler beseitigt und die Datei noch mal getestet werden.

Nach jeder Änderung an der Konfigurationsdatei müssen die Samba-Dienste neu gestartet werden. Erst dann wird die Konfiguration übernommen.

sudo service samba restart

Unter Umständen kommt dabei die Fehlermeldung "Failed to restart samba.service: Unit samba.service is masked.". Kein Problem. Alternativ kann man den Samba-Server auch so neu starten:

sudo /etc/init.d/samba restart

Sofern die Konfiguration vollständig und korrekt ist, geht der Samba-Server wieder in Betrieb.

Lösung: Samba-Freigaben für Verzeichnisse einrichten

Um Freigaben für Verzeichnisse einzurichten brauchen wir als erstes ein Verzeichnis, in dem wir die Verzeichnisse anlegen, die wir später freigeben wollen. Im Prinzip ist es egal, wo sich der Ordner befindet. Ganz gut eignet sich dazu das Home-Verzeichnis "/home" in dem wir ein Verzeichnis mit dem Namen "shares" anlegen. Hier werden dann anschließend die Verzeichnisse angelegt, die freigeben werden sollen.

sudo mkdir /home/shares

Dann erstellen wir die Verzeichnisse, die wir nachher freigeben wollen und setzen auch gleich die dazu passenden Berechtigungen.
Es müssen nicht alle Verzeichnisse angelegt werden. Man kann sich auch eines für die eigenen Zwecke heraussuchen und die anderen weglassen.

Allgemeines Verzeichnis für alle zum Testen:

sudo mkdir /home/shares/test sudo chown root:root /home/shares/test/ sudo chmod 777 /home/shares/test/

Verzeichnis nur für die Benutzergruppe "users":

sudo mkdir /home/shares/users sudo chown root:users /home/shares/users/ sudo chmod 770 /home/shares/users/

Verzeichnis nur für den Benutzer "pi":

sudo mkdir /home/shares/pi sudo chown pi:pi /home/shares/pi/ sudo chmod 700 /home/shares/pi/

Dann öffnen wir die Samba-Konfigurationsdatei und tragen dort die Freigaben ein.

sudo nano /etc/samba/smb.conf

Auch hier gilt, nur die Freigaben eintragen, für die das Verzeichnis angelegt wurde.

[SambaTest] comment = Samba-Test-Freigabe path = /home/shares/test read only = no guest ok = yes [SambaUsers] comment = Samba-Users-Freigabe path = /home/shares/users read only = no [SambaPi] comment = Samba-Pi-Freigabe path = /home/shares/pi read only = no

Der Name der Freigabe ist in eckige Klammern gesetzt. Das vereinfacht die Verwaltung und den Zugriff auf die Freigabe.
Die Datei muss anschließend gespeichert und geschlossen werden: Strg + O, Return, Strg + X.
Nach der Änderung der Konfigurationsdatei empfiehlt sich ein Test.

testparm

Wenn der Test erfolgreich war, dann muss Samba neu gestartet werden.

sudo service samba restart

oder

sudo /etc/init.d/samba restart

Damit sind die Freigeben im Netzwerk verfügbar. Allerdings fehlt noch die Berechtigung darauf zuzugreifen. Gemeint ist, dass für den oder die Benutzer noch Samba-Passwörter eingerichtet werden müssen.

Lösung: Samba-Passwort für Benutzer einrichten

Für die Authentifizierung ist die Benutzerverwaltung auf dem Server vorgesehen. Allerdings benutzt Samba nur die eingerichteten Benutzernamen und die Datei- und Verzeichnisberechtigungen. Nicht die Passwörter. Für jeden Benutzer, der Samba-Freigaben benutzen will, muss man ein separates Passwort für Samba einrichten. Hier wählen wir beispielhaft den Benutzer "pi".

sudo smbpasswd -a pi

Benutzer "pi" für Samba deaktivieren:

sudo smbpasswd -d pi

Benutzer "pi" für Samba wieder aktivieren:

sudo smbpasswd -e pi Troubleshooting

Sofern der Test der Konfigurationsdatei mit "testparm" erfolgreich war und man den Restart des Samba-Servers nicht vergessen hat, sollte es eigentlich keine Probleme mit den Samba-Freigaben geben.
Wenn es dann doch mal nicht wie gewünscht funktioniert, dann hilft es bei der Fehlersuche ungemein, wenn auf dem Server auch der Samba-Client installiert ist.

sudo apt-get install smbclient

Mit der Angabe des Host- bzw. Computernamens kann man prüfen, ob der Samba-Server erreichbar ist. Dabei wird aber nur der Hostname zur IP-Adresse aufgelöst.

nmblookup {HOSTNAME}

Selbiges funktioniert auch mit der Angabe der Arbeitsgruppe bzw. des Parameters "workgroup" aus den globalen Einstellungen der Konfigurationsdatei.

nmblookup workgroup

Richtig interessant ist es zu sehen, welche Freigaben der Samba-Server zur Verfügung stellt.

smbclient -N -L {HOSTNAME}

Hier sollten die Freigaben aufgelistet sein. Wenn nicht, dann sollte man mit "testparm" die Konfiguration prüfen. Oder den vergessenen Restart des Samba-Servers durchführen, damit die Konfiguration übernommen werden kann.

Die meisten Fehler werden aber nichts mit der Konfiguration des Samba-Servers zu tun haben, sondern mit den gesetzten Datei- und Verzeichnis-Berechtigungen und der Authentifizierung mit Benutzername und Passwort.
Grundsätzlich wird der Benutzername auf dem Samba-Server verwendet. Allerdings mit einem separaten Passwort, dass mit "smbpasswd" eingerichtet werden muss.
Das korrekte Setzen der Datei- und Verzeichnis-Berechtigungen ist extrem wichtig.

Weitere verwandte Themen:
  • Schritt für Schritt den Raspberry Pi als Server einrichten
  • Raspberry Pi als Server im Dauerbetrieb (24/7, headless)
  • Print-Server mit CUPS und AirPrint auf dem Raspberry Pi einrichten
  • File-Server auf dem Raspberry Pi einrichten
  • NFS-Server auf dem Raspberry Pi einrichten
  • FTP-Server auf dem Raspberry Pi einrichten

Hinweis: Dieses Tutorial ist Teil einer Aufgaben und Übungen mit dem Raspberry Pi-Reihe, die für Lern- und Ausbildungszwecke erstellt wurde. Die dargestellte Lösung ist Teil einer konkreten Aufgabenstellung, die Schüler, Auszubildende und Studenten, lösen sollen. Deshalb muss der hier aufgezeigte Weg nicht der Optimalfall sein.


Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen