ubuntuusers.de

Samba Server

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

samba-logo.png Unter "Samba Server" kann man Verschiedenes verstehen. Werden auf einem privaten Arbeitsrechner ein paar Dateien für den Zugriff vom eigenen Notebook aus freigegeben, so ist dieser damit im Grunde schon ein "Samba Server". Hier werden Überlegungen zur Sicherung vor Missbrauch und zur Zugriffskontrolle nicht an erster Stelle stehen. Die graphischen Oberflächen GNOME und KDE bieten für solche Fälle einfache Lösungen an. Siehe hierzu Samba Server GNOME und Samba Server/KDE. Das auch unter Xfce (Xubuntu) verwendbare graphische Konfigurations-Tool "system-config-samba" ist hier beschrieben.

Unter einem "Server" im engeren Sinne kann man auch einen Rechner verstehen, dessen Aufgabe ausschließlich oder überwiegend darin besteht, Daten in einem Netzwerk zur Verfügung zu stellen und die Zugriffe darauf zu steuern. Bei einem solchen Server wird man häufig auf eine graphische Oberfläche ganz verzichten, da diese zusätzlich Rechenleistung und Speicherplatz in Anspruch nimmt (siehe Server Installation). Da es sich hier meist um Mehrbenutzer-Systeme handelt, spielen Sicherheit und Zugriffskontrolle dabei eine entscheidende Rolle. Samba bietet dafür sehr differenzierte Möglichkeiten. Dieser Artikel behandelt die Konfiguration eines einfachen Samba Servers ohne die Hilfsmittel einer speziellen graphischen Oberfläche.

Samba lässt sich auch in sehr komplexen Netzwerk-Strukturen mit mehreren Domänen und ganz verschiedenen beteiligten Betriebssystemen einsetzen; nach oben gibt es kaum Grenzen. Dies umfassend zu beschreiben, würde den Umfang eines Wiki-Artikels sprengen. Hierfür sollte man sich in die ausführliche Dokumentation {de} einarbeiten. Einzelne weiterführende Themen werden auch in Samba Server/PDC und Samba Winbind behandelt.

Nicht selten wird bei einem Server auf eigene Bedienungselemente ganz verzichtet; die Bedienung erfolgt dann von einem Client aus (Remote Administration). Wie dies zu bewerkstelligen ist, erklären die Artikel SSH und FUSE/sshfs.

Seit der Version 4.0 (Standard seit Ubuntu 14.04 LTS) kann ein Samba Server auch als zu Microsoft Active Directory® kompatibler Domain Controller eingesetzt werden. Dies sprengt jedoch den Rahmen dieses Wiki. Hier wird nur die Verwendung als Standalone Server (Option server role = standalone bzw. server role = auto in Verbindung mit security = user im Teil [global] der Datei smb.conf) beschrieben. In Ubuntu ist diese Einstellung Standard.

Installation

Um Samba verwenden zu können, muss es zuerst installiert werden. Folgende Pakete sind dafür erforderlich:

  • samba-common (Basiswerkzeuge von Samba wie z.B. smbpasswd )

  • samba ( der eigentliche Samba Server. Dieses Metapaket enthält auch die übrigen, zur Einrichtung eines einfachen Samba-Servers notwendigen Pakete.)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install samba-common samba 

sudo aptitude install samba-common samba 

Sinnvoll sind in vielen Fällen auch folgende Pakete:

  • samba-doc (Die Dokumentation zu Samba )

  • samba-doc-pdf (Die Dokumentation von Samba als PDF Dateien )

  • tdb-tools (Tools für die Samba Benutzerdatenbank )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install samba-doc samba-doc-pdf tdb-tools 

sudo aptitude install samba-doc samba-doc-pdf tdb-tools 

Benutzerverwaltung

Benutzer-Datenbank

Samba hat in der Standardinstallation eine vom System getrennte Benutzerverwaltung, welche mit dem Befehl smbpasswd administriert wird:

sudo smbpasswd -a <username> # Fügt den Benutzer <username> der Samba Datenbank hinzu und aktiviert diesen
sudo smbpasswd -x <username> # Entfernt den Benutzer <username> aus der Samba Datenbank
sudo smbpasswd -d <username> # Deaktiviert den Benutzer <username> in der Datenbank
sudo smbpasswd -e <username> # Aktiviert den vorher deaktivierten Benutzer <username> in der Datenbank wieder 

Für den Benutzer, den man der Datenbank von Samba hinzugefügt hat, kann man ein Passwort vergeben. Dies kann sofort nach der Eingabe des Befehls:

sudo smbpasswd -a <username> 

verdeckt (d.h. ohne Anzeige) geschehen. Der gleiche Befehl kann auch verwendet werden, um das Samba-Passwort eines bereits eingetragenen Benutzers nachträglich zu ändern.

Benutzer, die zur Datenbank von Samba hinzugefügt werden, müssen schon auf dem System als "normale" Benutzer vorhanden sein. Es ist ratsam, aber nicht erforderlich, für Samba das gleiche Passwort wie das Systempasswort des Benutzers zu nehmen.
Falls man das Passwort der Samba-Freigabe an eine größere Gruppe verteilen will, so ist es sinnvoll dafür einen speziellen Account auf dem eigenen System anzulegen, der sich weder einloggen kann, noch ein Homeverzeichnis hat, oder sonst etwas darf. Dies geschieht mit folgendem Befehl:

sudo  adduser --no-create-home --disabled-login --shell /bin/false <username> 

Durch das Deaktivieren eines Benutzers kann man für diesen den Zugriff auf Samba vorübergehend sperren, ohne dafür sein Passwort zu verändern oder seinen Eintrag zu löschen.

Hinweis:

Bei der Installation von Samba wird leicht vergessen, dass weder die im System eingetragenen Benutzer noch deren Passwörter automatisch in die Benutzer-Datenbank von Samba übernommen werden.

Gast-Zugang

Samba kann auch "Gästen", die nicht in der Benutzer-Datenbank eingetragen sind, den Zugang ohne Passwort gestatten. Standardmäßig ist der Gast-Zugang generell deaktiviert. Mochte man ihn für einzelne Freigaben erlauben, so muss in der Konfigurationsdatei bei diesen Freigaben jeweils die Zeile:

guest ok = yes

oder gleichbedeutend

public = yes

eingetragen sein (Standardwert ist no). Bei allgemeinen Freigaben (s.u.) ist dieser Eintrag grundsätzlich möglich; ob auch einzelne Benutzer bei ihren persönlichen Freigaben (s.u.) den Gast-Zugang gestatten dürfen, legt der Parameter usershare allow guests im Bereich [public] von smb.conf fest. Standardwert ist hier:

usershare allow guests = yes

Doch nicht jeder kann sich automatisch bei Samba als "Gast" anmelden. Wer als "Gast" gilt, legt der Parameter map to guest im Abschnitt [global] von smb.conf fest. Üblich ist

map to guest = bad user

Als bad user gilt jeder Benutzer, der nicht in der Samba-Datenbank des Servers eingetragen ist. Wem dann die Ordner und Dateien gehören, die ggf. von Gästen angelegt werden, legt der Parameter "guest account" fest. Üblich ist:

guest account = nobody

Unter diesem Namen melden sich auch Windows sowie GNOME und KDE beim Zugriff auf Freigaben mit erlaubtem Gast-Zugang an.

Gäste haben beim Zugriff auf Freigaben höchstens die Rechte, die ihnen auch auf dem Server selbst zustehen würden. Es ist deshalb durchaus möglich, dass Gäste keine Schreibrechte haben, obwohl bei der Freigabe:

writeable = yes

eingetragen ist.

Achtung!

Auf Notebooks, mit denen auch Verbindungen zu fremden Netzen (Schule, Uni, Hotel...) hergestellt werden, sollten grundsätzlich keine Freigaben mit Gast-Zugang eingerichtet werden! Auch sonst ist bei allen sensiblen Daten vom Gast-Zugang dringend abzuraten.

Hinweis:

Rechner mit Home-Versionen von Windows-Betriebssystemen können manchmal nur mit Schwierigkeiten auf Samba-Freigaben ohne Gast-Zugang zugreifen.

Konfiguration

Die Konfigurationsdatei

Der Samba-Server wird über die Datei /etc/samba/smb.conf konfiguriert, welche mit einem Texteditor und nur mit Root-Rechten bearbeitet werden kann. Verfügt der Server über eine graphische Oberfläche (GUI), so lassen sich die wichtigsten Einstellungen auch mit dem sehr einfachen graphischen Tool system config samba (Beschreibung in Samba Server GNOME) oder mittels GAdmin-Samba vornehmen bzw. verändern.

Das vorwiegend für die Fernwartung eines Samba Servers konzipierte Webinterface Swat ist derzeit leider nicht auf dem aktuellen Stand (März 2015).

Die allgemeinen Festlegungen im Teil [global] der Datei smb.conf gelten sowohl für allgemeine als auch für persönliche Freigaben. Sie werden noch durch zusätzliche Eintragungen bei den betreffenden Freigaben ergänzt, die dann jeweils nur für diese eine Freigabe gelten.

Bei der Installation von Samba wird automatisch eine Datei smb.conf angelegt. Diese ist mit ausführlichen Kommentaren versehen {en}. In vielen Fällen sind nur wenige Änderungen oder Ergänzungen zu dieser Datei nötig, die sich mit Hilfe der Kommentarzeilen leicht durchführen lassen. Für umfangreiche Änderungen und Eintragungen bietet der Artikel Samba Server/smb.conf weitere Informationen.

Achtung!

Bei der Bearbeitung mit Swat wird die kommentierte Datei durch eine neue Datei ohne Kommentarzeilen ersetzt.

Allgemeine Freigaben

Allgemeine Freigaben werden direkt in die Datei /etc/samba/smb.conf an deren Ende eingetragen. Dazu wird zuerst in eckigen Klammern der Name angegeben, unter dem die Freigabe im Netz verfügbar ist. In der nächsten Zeile folgt der Pfad zur freigegebenen Datei oder Ordner auf dem Server. Dann folgen Parameter, die nur für diese Freigabe gelten. Beispiel:

1
2
3
4
[Fotos]
path = /media/Bilder
public = yes
writeable = yes

Parameter brauchen grundsätzlich nur dann angegeben zu werden, wenn ihr Wert vom Standardwert (Default) abweicht. Näheres zu den einzelnen Parametern siehe im Artikel smb.conf, in der Manpage man smb.conf oder hier {en}

Achtung!

Vor jeder Veränderung der Datei /etc/samba/smb.conf sollte unbedingt eine Kopie der ursprünglichen Fassung angelegt werden. Ganz besonders gilt dies für jede Bearbeitung mit Swat. Vor dem Aktivieren überprüft man die Datei mit "testparm".

Persönliche Freigaben

Seit der Version 3.0.23 bietet Samba zusätzlich noch die Möglichkeit, dass auch gewöhnliche Benutzer, die der Gruppe sambashare angehören, ihre Dateien ohne Root-Rechte freigeben können. Dieses Verfahren wird mit net usershare bezeichnet. Solcherart vorgenommene Freigaben werden dann nicht in /etc/samba/smb.conf eingetragen, sondern es wird für jede persönliche Freigabe eine eigene Textdatei erstellt, die in der Regel im Ordner /var/lib/samba/usershares als Besitz des jeweiligen Benutzers abgelegt wird. Unter dem Namen dieser Datei ist die Freigabe im Netz verfügbar. Der Inhalt der Datei ist der Pfad zur Freigabe auf dem Server, ein optionaler Kommentar, die Usershare-ACL (Access Control List) sowie ein Parameter, ob Gast-Zugang gestattet wird. Beispiel:

1
2
3
4
5
6
#VERSION 2
path=/home/BENUTZERNAME/Gemeinsam
comment=
usershare_acl=S-1-1-0:R
guest_ok=n
sharename=gemeinsam

Weitere Informationen siehe net usershare und in der Manpage "man net" im Abschnitt "usershare". Seit Ubuntu 8.04 wird von GNOME/Nautilus nur noch dieses Verfahren unterstützt (siehe hierzu auch Samba Server GNOME).

Allgemeine Freigaben (über einen Eintrag in smb.conf) und persönliche Freigaben (mittels "net usershare") können nebeneinander verwendet werden. Möchte man sich jedoch auf persönliche Freigaben beschränken, so sind meist keine Änderungen an der bei der Installation automatisch angelegten Datei smb.conf nötig.

Hinweis:

Man sollte es vermeiden, eine allgemeine und eine persönliche Freigabe unter der gleichen Bezeichnung zu erstellen. Geschieht dies versehentlich trotzdem, dann hat die allgemeine Freigabe Vorrang.

In der Konsole

Ordner können auch direkt in der Shell freigegeben werden. Der Befehl hierfür lautet net usershare add. Beispiele:

  • Anonymer, lesender Zugriff:

    net usershare add Sharename /pfad/zu/ordner "Kommentar" Everyone:r guest_ok=y 

  • Lese- und Schreibzugriff für den Benutzer user:

    net usershare add Sharename /pfad/zu/ordner "Kommentar" user:f 

  • Zugriff für jeden außer eviluser:

    net usershare add Sharename /pfad/zu/ordner "Kommentar" Everyone:r,eviluser:d 

    f steht hierbei für "Full Access", r für "read-only" (schreibgeschützt) und d für "deny" (kein Zugriff).

Mit Hilfe von

net usershare list # Kurzinfo, nur Sharenamen angeben
net usershare info # Detailinfo, Pfad, Kommentar, ACL und Gastzugriff angeben 

können die aktuellen Freigaben überprüft werden und mit Hilfe von

net usershare delete Sharename 

wieder entfernt werden.

Administrative Tools

Überprüfen der smb.conf

Um die Konfigurationsdatei /etc/samba/smb.conf auf eine gültige Syntax überprüfen zu lassen, wird testparm verwendet:

testparm 

Läuft die Ausgabe korrekt durch, sind zumindest keine Syntaxfehler enthalten.

Server (neu) starten

Nachdem man Änderungen an der Samba-Konfiguration vorgenommen hat, kann Samba neu gestartet [4] werden, damit die Änderungen sofort wirksam werden. Dies erfolgt aus einem Terminal [2] heraus mit dem Befehl:

sudo service smbd restart 

Der Samba-Server liest die Konfigurationsdatei aber auch im Intervall von ca. 90 Sekunden regelmäßig ein. Dann werden die Änderungen auch ohne Neustart von Samba selbstständig übernommen.

Probleme mit Windows

Falls unter Windows die Performance deutlich zu langsam ist (hauptsächlich Windows 7), hilft unter Umständen eine Abschaltung der "Remote Differential Compression" in der Systemsteuerung von Windows.

Verwandte Seiten

  • Samba Server GNOME - Die graphische Konfiguration von Freigaben mit GNOME oder Unity. Diese Seite enthält auch eine Beschreibung des Konfigurations-Tools "system-config-samba", das sich auch mit anderen graphischen Oberflächen verwenden lässt, und ist so in Teilen auch für Xfce (Xubuntu) und Lxde (Lubuntu) gültig.

  • Samba Server/KDE - Die graphische Konfiguration von Freigaben mit KDE

  • Samba Server/smb.conf - Eine Einführung in die Konfigurationsdatei /etc/samba/smb.conf mit einigen Beispielen

  • Samba Server/net usershare - Erstellen persönlicher Freigaben mittels Kommandozeile

  • Samba Server PDC - Eine Beschreibung, wie man Samba-3 als Primary Domain Controller (PDC) nutzen kann

  • Howto/Samba4-Server als Active-Directory Domain-Controller - Eine Beschreibung, wie man Samba-4 als Domaincontroller (DC) betreiben kann

  • Samba Winbind - Ubuntu an einer Windows Domäne anmelden und die Benutzer am "Active Directory" authentifizieren

  • Samba Server Swat - "Swat", das ehemals offizielle Webinterface von Samba. Ist derzeit leider nicht aktuell.

Ergänzende und weiterführende Informationen

Diese Revision wurde am 14. April 2015 22:20 von Max-Ulrich Farber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server