[[Vorlage(Getestet, focal, bionic)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Paketverwaltung:Pakete installieren] [:Dienste: Dienste starten und stoppen] [:Samba:Übersichtsartikel zu Samba] }}} [[Inhaltsverzeichnis()]] [[Bild (samba-logo.png, align=left)]] 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 [:Archiv/Samba_Server_KDE:]. 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 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 [https://wiki.samba.org/index.php/User_Documentation Dokumentation] {en} einarbeiten. 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:]. Ein Samba Server kann auch als zu Microsoft Active Directory® kompatibler Domain Controller eingesetzt werden. Dies sprengt jedoch den Rahmen dieses Artikels. 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 [:Samba Server/smb.conf: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: {{{#!vorlage Paketinstallation samba, der Samba Server. Dieses [:Metapakete: Metapaket] enthält auch die übrigen, zur Einrichtung eines einfachen Samba-Servers notwendigen Pakete. }}} = Netzwerk-Protokolle = Lange Zeit wurde von Windows und Samba als SMB-Protokoll ausschließlich SMBv1 (von Microsoft ''cifs'' genannt) verwendet. Seit Samba 3.6 steht nun optional auch SMBv2 und seit Samba 4.1 auch SMBv3 zur Verfügung. Bis Samba 4.6 (bis September 2017) blieb aber SMBv1 Standard; danach wurde dann das höchste verfügbare Protokoll Standard. Seit Samba 4.11 ([:Focal:Ubuntu 20.04 LTS]) wird nun das Protokoll SMBv1 in der Grundeinstellung nicht mehr unterstützt, da es den Sicherheits-Ansprüchen nicht mehr genügt. Den Rahmen für die von einem Samba-Server unterstützten Protokolle legen folgende Zeilen im Teil `[global]` der Datei '''[:smb.conf:/etc/samba/smb.conf]''' fest: {{{ # Beispiel: server min protocol = SMB2_02 server max protocol = SMB3 }}} Bei der Verbindungs-Anfrage müssen sich Client und Server auf ein Protokoll einigen. Die Kommunikation zwischen Server und Client ist nur dann möglich, wenn der auf beiden eingestellte Rahmen für die Protokolle dies möglich macht. Es wird dann das höchste von beiden unterstützte Protokoll gewählt. {{{#!vorlage Warnung Das Protokoll SMBv1 (cifs, NT1) gilt als unsicher und sollte in Netzwerken mit sensiblen Daten oder unkontrolliertem Zugang nicht mehr verwendet werden. }}} = Benutzerverwaltung = == Benutzer-Datenbank == Samba hat in der Standardinstallation eine vom System getrennte Benutzerverwaltung, welche mit dem Befehl '''smbpasswd''' administriert wird: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 möglich, aber nicht erforderlich, für Samba das gleiche Passwort wie das Systempasswort des Benutzers zu nehmen. Manchmal möchte man einer größeren Anzahl von Benutzern den Zugang über das gleiche Passwort gestatten. Dann kann es sinnvoll sein, dafür einen speziellen Account auf dem Server anzulegen, der sich weder einloggen kann, noch ein Homeverzeichnis hat, noch sonst etwas darf. Dies geschieht mit folgendem Befehl: {{{#!vorlage 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. {{{#!vorlage Hinweis Bei der Installation von Samba wird leicht vergessen, dass weder die im System eingetragenen [:Benutzer und Gruppen: 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 auf dem Samba-Server deaktiviert. Das gleiche gilt auch für '''Windows-Clients seit Windows 10 Version 1709'''. Diese erlauben '''keinen Zugriff auf anonyme Freigaben''' ohne [https://docs.microsoft.com/de-de/troubleshoot/windows-server/networking/guest-access-in-smb2-is-disabled-by-default Eingriff in die Windows-Registry]. '''Linux-Clients können aber weiterhin als Gast''' auf den Samba-Server zugreifen. Möchte man den Gastzugang für einzelne Freigaben erlauben, so muss in der [#Konfiguration Konfigurationsdatei] bei diesen Freigaben jeweils die Zeile: {{{ guest ok = yes #(gleichbedeutend: public = yes) }}} eingetragen sein (Standardwert ist `no`). Bei [#Administrative_(Allgemeine)_Freigaben Administrativen Freigaben] (s.u.) ist dieser Eintrag grundsätzlich möglich; ob auch einzelne Benutzer bei ihren [#Persönliche_Freigaben 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. {{{#!vorlage Warnung 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. }}} = Konfiguration = == Die Konfigurationsdatei == Der Samba-Server wird über die Datei '''/etc/samba/smb.conf''' konfiguriert, welche mit einem Texteditor und nur mit [:sudo:Root-Rechten] bearbeitet werden kann. Das vorwiegend für die Fernwartung eines Samba Servers konzipierte Webinterface Swat ist leider nicht mehr auf dem aktuellen Stand (Mai 2017). 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 '''/etc/samba/smb.conf''' und "für Notfälle" eine Kopie derselben in '''/usr/share/samba/smb.conf''' angelegt. Diese ist mit ausführlichen Kommentaren (in englischer Sprache) versehen. 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. == Administrative (Allgemeine) Freigaben == Administrative 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: {{{ [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 [:Samba Server/smb.conf: smb.conf], in der [:man: Manpage] `man smb.conf` oder auf [https://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.html samba.org] {en} {{{#!vorlage Warnung Vor jeder Veränderung der Datei '''/etc/samba/smb.conf''' sollte unbedingt eine Kopie der vorherigen Fassung angelegt werden. Vor dem Aktivieren überprüft man die Datei mit `testparm`. }}} == Persönliche Freigaben == Samba bietet zusätzlich noch allen gewöhnlichen Benutzern, die der [:Benutzer und Gruppen: Gruppe] `sambashare` angehören, die Möglichkeit, ihre eigenen Dateien mit `net usershare` ohne Root-Rechte freizugeben. 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 standardmäßig 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: {{{ 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 [:man: Manpage] `man net` im Abschnitt `usershare`. Die Rahmenbedingungen für alle Persönlichen Freigaben können in der Datei '''/etc/samba/smb.conf''' über verschiedene Parameter festgelegt bzw. verändert werden. Mit dem Befehl {{{#!vorlage Befehl testparm -vs | grep usershare }}} werden diese angezeigt. Administrative und Persönliche Freigaben lassen sich nebeneinander verwenden. Möchte man sich jedoch auf Persönliche Freigaben beschränken, so sind meist keine Änderungen an der bei der Installation von Samba automatisch angelegten Datei '''smb.conf''' nötig. {{{#!vorlage Hinweis Man sollte es vermeiden, eine Administrative und eine Persönliche Freigabe unter der gleichen Bezeichnung zu erstellen. Geschieht dies versehentlich trotzdem, dann hat die allgemeine Freigabe Vorrang. }}} === Mit dem Dateimanager === Mit den Dateimanagern [:Nautilus:] (GNOME) und [:Caja:] (Mate) können interaktiv Persönliche Freigaben über ''net usershare'' erstellt und gelöscht werden. Der Dateimanager [:Thunar:] (Xfce) bietet vergleichbare Möglichkeiten nur, wenn man entsprechnde Befehlszeilen von Hand unter ''Bearbeiten > Benutzerdefinierte Aktionen'' einträgt. Im Artikel [:Samba Server GNOME:] ist dies ausführlich beschrieben. === In der Konsole bzw im Terminal === Persönliche Freigaben lassen sich auch über ein Terminal[1] mit den Befehlen `net usershare add` bzw. `net usershare delete` einrichten bzw. löschen. Mittels `net usershare list` und `net usershare info` werden die vorhandenen Persönlichen Freigaben aufgelistet bzw. ihre Eigenschaften angezeigt. Ausführliche Informationen hierzu findet sich im Artikel [:net usershare:]. = 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: {{{#!vorlage Befehl testparm }}} Ohne Parameter bzw. mit dem Parameter `-s` zeigt `testparm` nur Einstellungen an, die durch Einträge in '''smb.conf''' verändert wurden, mit dem Parameter `-v` auch alle Default-Einstellungen. 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 [3] werden, damit die Änderungen sofort wirksam werden. Dies erfolgt aus einem Terminal[1] heraus mit dem Befehl: {{{#!vorlage Befehl systemctl restart smbd.service }}} Veränderungen von im Netzwerk sichtbaren Namen und Beschreibungen erfordern oft zusätzlich den Neustart von `nmbd.service`. 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. == Samba-Version anzeigen == Falls man sich nicht sicher ist, welche Samba-Version (nicht Version des SMB-Protokolls) momentan zum Einsatz kommt, kann man das ganz einfach mit folgendem Befehl in einem Terminal[1] herausfinden: {{{#!vorlage Befehl smbd -V }}} = Problembehebung = == Netzwerkfreigabe Scanner/Multifunktionsgeräte == Manche Scanner/Multifunktionsgeräte, z.B. ältere HP-Geräte, unterstützen nur das SMB1-Protokoll wenn man in einen Netzwerk-Ordner scannen will. Für diese Geräte muss man folgende Zeilen im Teil `[global]` der Datei '''[:smb.conf:/etc/samba/smb.conf]''' ergänzen: {{{ [global] ... server min protocol = NT1 ... }}} siehe auch [#Netzwerk-Protokolle Netzwerk-Protokolle] = Links = == Intern == * [:Samba_Server_GNOME:] - Die graphische Konfiguration von Freigaben mit [:GNOME:],[:Unity:] oder [:MATE:]. Diese Seite ist zum größten Teil auch für [:Xfce:] (Xubuntu) und [:LXDE:] (Lubuntu) gültig. ## * [:Archiv/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. * [:Howto/Samba-Fileserver_im_Active_Directory:] - Einen Samba4-Fileserver als Mitgliedsserver in einem Active Directory erstellen ## * [:Archiv/Samba_Server_PDC:] - Eine Beschreibung, wie man Samba-3 als Primary Domain Controller (PDC) nutzen kann. ## * [:Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller:] - Eine Beschreibung, wie man Samba-4 als Domaincontroller (DC) betreiben kann. ## * [:Samba_Server_Swat:] - "Swat", das ehemals offizielle Webinterface von Samba. Ist derzeit leider nicht aktuell. == Extern == * [https://www.samba.org/samba/ Samba Projektseite] {en} * [https://wiki.samba.org/index.php/User_Documentation] {en} Umfassende Dokumentation im Samba-Wiki (489 Seiten!) * [https://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.html Manpage zu smb.conf in lesbarer Form] {en} ## * [http://samba.sernet.de/ Die deutsche Homepage des Samba Projektes] {de} (teilweise veraltet) ## * [sourceforge:gertranssmb3.berlios/files:Samba-HOWTO-Sammlung] {de} * [https://www.oreilly.de/german/freebooks/samba2ger/ Open Book "Samba"] {de} - 2. Auflage, O'Reilly-Verlag, 2003 ## * [https://www.zeroathome.de/wordpress/ubuntu-804-server-tutorial-als-pdfhardy-heron/ Ubuntu 8.04 Samba Server Tutorial] {de} pdf-Datei (Beta-Version). ## * [https://ctaas.de/linux-install.htm#Linux_Samba_Netzwerk_Dateiserver_einrichten_mit_Papierkorb Samba Datei-Server mit Papierkorb auf den Netzwerkfreigaben (Netzwerklaufwerken)] {de} - Tutorial zur Einrichtung eines Samba Dateiservers mit Papierkorb (mit automatischer Papierkorb-Bereinigung). * [https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858 Stop Using SMB1] {en} Ein Aufruf von Microsoft mit Erläuterungen # tag: Netzwerk, Server, Samba