Samba/Server

Aus Foxwiki

Samba ist ein freier Serverdienst für Linux, der Services für Microsoft Windows Netzwerke anbietet

Beschreibung

Logo von Samba
Hersteller Samba-Team[1]
Betriebssystem plattformübergreifend
Kategorie SMB-Server und -Client
Lizenz GPL

Da die Software unter der GPL frei verfügbar ist, wird sie als Alternative zu Microsoft-Windows-Server-Betriebssystemen eingesetzt.

Installation

Anwendungen

Fehlerbehebung

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt-Homepage

  1. https://www.samba.org/

Weblinks

wiki.ubuntuusers.de

Samba Server

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.

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 Dokumentation 🇬🇧 einarbeiten.
  • Als weiterführendes Thema wird dies in 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.

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 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 (der Samba Server.
  • Dieses Metapaket enthält auch die übrigen, zur Einrichtung eines einfachen Samba-Servers notwendigen Pakete.)

Befehl zum Installieren der Pakete:

# apt-get install samba 

Oder mit apturl installieren, Link: [apt://samba apt://samba]

Netzwerkfreigabe für HP-Drucker-Scanner

Offensichtlich unterstütztn viele ältere HP-Drucker nur das SMB1-Protokoll wenn man in einen Netzwerk-Ordner scannen will.

  • Für diese Drucker muss man folgende Zeilen im Teil [global] der Datei /etc/samba/smb.conf ergänzen:
[global]
 ...
 server min protocol = NT1
 ...

siehe auch Netzwerk-Protokolle

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

Achtung!

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:

# smbpasswd -a USERNAME # Fügt den Benutzer USERNAME der Samba Datenbank hinzu und aktiviert diesen
# smbpasswd -x USERNAME # Entfernt den Benutzer USERNAME aus der Samba Datenbank
# smbpasswd -d USERNAME # Deaktiviert den Benutzer USERNAME in der Datenbank
# 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:
# 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:
# 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.
  • Möchte man ihn für einzelne Freigaben erlauben, so muss in der Konfigurationsdatei bei diesen Freigaben jeweils die Zeile:

guest ok = yes #(gleichbedeutend: public = yes)

eingetragen sein (Standardwert ist no).

  • Bei Administrativen 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.

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.

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.

Achtung!

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

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:

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

smbd -V 

Links

Verwandte Seiten

Ergänzende und weiterführende Informationen

https://wiki.ubuntuusers.de/Samba_Server/

Wikipedia

Entwicklung

Samba wurde erstmals 1992 vom Australier Andrew Tridgell veröffentlicht, um den Datenaustausch zwischen SunOS und DOS auch ohne NFS zu ermöglichen. Später wurde Samba auch auf Linux portiert, was dem Betriebssystem eine enorme Verbreitung im Dateiserver-Segment bescherte und zu dessen weiterem Erfolg beitrug. Die nun von einer Gemeinschaft freiwilliger Programmierer entwickelte Software wurde stetig erweitert, um die Beiträge anderer Unternehmen zum Server-Message-Block-Protokoll aufzunehmen. Die Erweiterungen des SMB-Protokolls stammten unter anderem von Microsoft, SCO, Thursby, IBM, Apple und dem Samba-Team selbst, wobei Microsoft die meisten Beiträge leistete und auch als einziges Unternehmen einige Erweiterungen geheim hielt. Da aber ein reibungsloser Datenaustausch ohne diese geheimen Erweiterungen nicht immer möglich war, musste ein Teil des SMB-Protokolls durch das Auswerten des Netzwerkverkehrs (Protokoll-/Netzwerkanalyse) erschlossen werden.[2]

Nach Differenzen bezüglich der Architektur von Samba spaltete sich 2000 das Projekt Samba-TNG vom Hauptprojekt mit dem Ziel ab, einen Primary Domain Controller (PDC) für Windows-NT-Domänen zu entwickeln, eine Funktionalität, welche im Hauptzweig damals noch nicht stabil verfügbar war. Die Entwicklung von Samba-TNG schlief 2009 ein.

Zum festen Kern der Entwicklergemeinde von Samba zählen in etwa 40 Personen.[3] Einige Unternehmen, wie zum Beispiel IBM, leisten finanzielle und personelle Unterstützung bzw. sind sogar Arbeitgeber einiger Samba-Entwickler.

In der Versionsreihe Samba 3 bestand die Möglichkeit, Samba als Mitgliedsserver in einer Active-Directory-Domäne zu betreiben, nicht jedoch als deren Domain Controller. Samba 3 konnte nur Domain Controller des veralteten Windows-NT-4.0-Typs emulieren, was jedoch für viele Netzwerke überschaubarer Größe ausreicht. Darin kann ein zweiter Samba-Server auch die Rolle eines Backup Domain Controller (BDC) übernehmen. Ab Version 3.5 unterstützt Samba auch die von Microsoft mit deren Betriebssystem Windows Vista eingeführte, proprietäre neue Version des SMB-Protokolles namens SMB2.

Die größte Neuerung der aktuellen Version 4 ist die Unterstützung der Active-Directory-Domain-Controller-Rolle. Außerdem wurde das Verwaltungswerkzeug SWAT so weit verbessert, dass es auch zur Verwaltung einer Active-Directory-Domäne über das Web genutzt werden kann. Samba 4 beinhaltet eine Neuentwicklung der Domain-Controller-Funktionalität, die integrierte Dateiserver-Rolle basiert jedoch auf der bewährten Version 3 und unterstützt nun auch SMB3. Samba 4 wurde im Dezember 2012 für den Produktiveinsatz freigegeben.

Bestandteile und grafische Benutzeroberflächen

Samba besteht aus einer Reihe von einzelnen Modulen, die der grundlegenden Funktion sowie der Konfiguration dienen.

Die Kernmodule sind die Daemons samba (Active-Directory-Emulation ab Version 4), smbd (Datei- und Druckerfreigabe), nmbd (NetBIOS-Namensauflösung) und winbindd (Benutzer-/Gruppen-Zuordnung).

Für die Konfiguration von Samba existieren eine Reihe von GUIs, beispielsweise:

Verbreitung

Fast alle Linux-Distributionen enthalten Samba und bieten damit Zugriff auf Dateifreigaben in gemischten Netzwerken, in denen z. B. auch Windows eingesetzt wird. Auch in homogenen Unix-Netzwerken wird Samba, und damit das SMB-Protokoll, häufig statt des NFS-Protokolls eingesetzt.

Zusätzlich ist Samba oft Bestandteil weiterführender Hard- (z. B. NAS) und Software-Produkte, die die Installation, Konfiguration und Verwaltung der Software erleichtern und deren Hersteller außerdem oft kommerzielle Unterstützung anbieten.[4][5]

Zugang zur Protokolldokumentation

In den frühen 1990er-Jahren hatten Microsoft und das Samba-Team eine produktive Beziehung, bei der Schnittstellendaten ausgetauscht wurden.[6] Dies änderte sich jedoch mit einer neuen Schnittstellen-Politik Microsofts ab Windows 95. Am 20. Dezember 2007 jedoch wurde zwischen Microsoft und der „Protocol Freedom Information Foundation“ (PFIF) auf Anordnung der Europäischen Union ein Abkommen geschlossen, welches Microsoft verpflichtet, alle nötigen Informationen über „Microsoft Work Group Server“ bereitzustellen, um mit diesem vollständig kommunizieren zu können. Das Abkommen sieht vor, dass diese Informationen nur der PFIF und den Samba-Entwicklern zugänglich sind. Dafür erlaubt das Abkommen auch die Veröffentlichung des Quelltextes von Implementierungen dieser Schnittstellen, so dass die Schnittstellen so indirekt offengelegt werden. Patente sind von dem Abkommen allerdings nicht betroffen.

Vorlage:Zitat

Als Ausdruck eines inzwischen wieder entspannteren Verhältnisses zwischen Microsoft und dem Samba-Projekt kann auch gelten, dass Microsoft-Mitarbeiter sich 2011 erstmals aktiv an der Samba-Entwicklung beteiligten.[7]

Sicherheit

Im Folgenden sind einige wesentliche geschlossene Sicherheitslücken von Samba angeführt:

  • Im Jahr 2010 wurde bekannt, dass einige Versionen bis hin zu Samba 3.6.3 über den anonymen Gastzugriff mittels Remote Procedure Calls (RPC) Zugang zum Root-Konto erlaubten.[8]
  • Im Mai 2017 wurde bekannt, dass ähnliche Sicherheitsprobleme wie bei Windows-Betriebssystemen, welche in Form von WannaCry ausgenutzt werden konnten, auch bei Samba bestanden.[9] Bei diesem Fehler, welcher in Anlehnung als SambaCry bezeichnet wird, war es möglich, injizierten Schadcode am betreffenden Samba-System auszuführen. Der Fehler betraf alle Samba-Versionen ab der Version 3.5.0 bis zu der im Mai 2017 aktuellen Version 4.6.4.[10] Dieser Fehler ist vor allem bei NAS-Systemen, welche üblicherweise auf Samba aufsetzen, kritisch. Die Problematik wird verstärkt, wenn das Samba-System von extern zugänglich ist und nicht alle Hersteller für ihre proprietären NAS-Systeme entsprechende Updates für die Fehlerbehebung anbieten oder diese Updates vom Besitzer in Unkenntnis der Problematik nicht eingespielt werden.[11]

Literatur

  • Stefan Kania: Samba 4: Das Handbuch für Administratoren. 1. Auflage. Carl Hanser Verlag, 2019, ISBN 978-3-446-45591-7
  • Winfried Trümper: Intranetworking mit Linux, m. CD-ROM. 2. Auflage. Addison-Wesley, 1999, ISBN 978-3-8273-1584-7

Weblinks

Einzelnachweise

  1. The Samba Team (englisch) – offizielle Entwicklerseite, abgerufen am 5. Juni 2012
  2. Andrew Tridgell: Myths About Samba. Groklaw, 26. Februar 2005
  3. „We are hoping to get back to the productive relationship we had with Microsoft during the early 1990's when we shared information about these protocols.“ (Jeremy Allison, co-creator of Samba)
  4. CVE-2012-1182 – A security announcement regarding a major issue with Samba 3.6.3 and lower.
  5. SambaCry is coming. securelist.com
  6. SambaCry: Erste Angriffe auf Linux-NAS-Boxen gesichtet. heise.de