[[Vorlage(Getestet, bionic, focal)]] [[Inhaltsverzeichnis()]] [[Bild(Samba_Server/samba-logo.png, align=left)]] Der Name Samba leitet sich vom Netzwerkprotokoll '''[wikipedia:Server Message Block:SMB]''' ('''S'''erver '''M'''essage '''B'''lock) ab. Dieses wurde bereits 1983 von IBM entwickelt. Microsoft bezeichnete die 1996 überarbeitete Version SMBv1 mit ''CIFS''. SMBv1 blieb lange Zeit Standard, obwohl bereits 2006 die Version SMBv2 und dann 2012 die Version SMBv3 (SMB3.0) veröffentlicht wurden. Die aktuelle Version von SMBv3 (SMB3.1.x) wurde 2015 mit Windows 10 eingeführt. Das Protokoll SMBv1 (''CIFS'') gilt inzwischen als veraltet, langsam und unsicher, wird aber leider immer noch verwendet. Mit [wikipedia:Samba (Software):Samba] steht seit 1992 eine Implementation des SMB-Protokolls auch auf UNIX-Systemen (Linux etwas später) zur Verfügung. Ab Samba 3.6 (ab [:Trusty:Ubuntu 14.04 LTS]) wurden dann auch die Protokolle SMBv2 und SMBv3 schrittweise als Optionen nach Samba übernommen. Seit September 2017 ist nun auch in Samba SMBv3 Standard, und seit Samba 4.11 (ab [:Focal:Ubuntu 20.04 LTS]) wird, wie auch in Windows 10, das Protokoll SMBv1 in der Grundeinstellung nicht mehr unterstützt. Samba kann als "Server" fungieren, um Daten (Ordner, Dateien, Festplatten, CD-Laufwerke usw.) mit anderen Rechnern im Netzwerk zu teilen. Dies wird auch als ''Einrichten von Freigaben'' bezeichnet. Gibt es eine SMB-Version, die sowohl auf dem Server als auch auf dem Client automatisch (d. h. ohne Einstellungen von Hand zu ändern) aktivierbar ist, so sollte der Samba-Server auf dem (Windows- oder Linux-) Client in der ''Netzwerkumgebung'' auftauchen. Von dort aus können die Freigaben temporär, d.h. für die jeweilige Sitzung, eingebunden werden. Alternativ lassen sich regelmäßig gebrauchte Freigaben auf dem Client auch statisch als ''Netzlaufwerke'' einbinden. Das Einrichten ''Allgemeiner Freigaben'' auf dem Server ist eine administrative Aufgabe und benötigt [:sudo:Root-Rechte]. Damit aber jeder Benutzer seine eigenen Dateien auch ohne Root-Rechte im lokalen Netzwerk freigeben kann, wurde mit Samba 3.0.23 das Tool [:net usershare:] eingeführt. Dieses wird z. B. von den Dateimanagern [:Nautilus:] und [:Dolphin:] verwendet. Samba dient aber auch dazu, um als "Client" auf Freigaben anderer Rechner zuzugreifen. Das in Ubuntu und Xubuntu standardmäßig eingerichtete Netzwerk-Dateisystem [:gio_mount:GVfs] unterstützt neben einigen anderen Netzwerk-Diensten auch SMB-Freigaben. Mit dem ''GVfs'' kann man im Netzwerk vorhandene Server ermitteln ("browsen") und deren Freigaben temporär ins lokale Dateisystem einbinden. Dieses "Computer-Browsing" im [:Samba_Client/Windows-Netzwerk:Windows-Netzwerk] verwendet zusätzliche Protokolle und Server. Das ''GVfs'' wird standardmäßig von den Netzwerk-Managern [:Nautilus:], [:Thunar:] und anderen unterstützt. Außerdem gibt es für das ''GVfs'' ein spezielles graphisches Tool [:Gigolo:]. In ähnlicher Weise verwenden in Kubuntu die Dateimanager Dolphin und Konqueror einen [:KIO-Slaves:KIO-Slave] zum Einbinden von SMB-Freigaben. Für höhere Ansprüche kann für SMB zusätzlich noch ein spezielles Netzwerk-Dateisystem [:mount.cifs:CIFS vfs] installiert werden, das noch wesentlich mehr Optionen unterstützt. Samba kann auch Drucker freigeben und Windows-Clients bei der Einrichtung von Druckern unterstützen. Eine Alternative für die Freigabe von Druckern ist [:CUPS:]. = Samba 4= Seit [:Trusty:Ubuntu 14.04 LTS] sind statt der bisherigen Versionen 3.xx nach einer sehr langen Vorbereitungsphase ausschließlich Samba-Versionen 4.xx in den Paketquellen enthalten. Die sicher wichtigste Neuerung in Samba 4.0 ist, dass nun ein Samba Server in einem Windows-Netzwerk uneingeschränkt auch die Funktion eines zum Microsoft Active Directory® (AD) kompatiblen Domain Controllers (DC) übernehmen kann. Dies ist jedoch nur für die Administration von komplexen, größeren Netzwerken von Bedeutung. Da diese Thematik sehr gründliche Vorkenntnisse und Einblicke in die Struktur von Windows-Netzwerken verlangt, übersteigt sie den Rahmen dieses Wiki. Für Interessenten befinden sich am Ende dieses Artikels Links zu weiterführender Literatur. {{{#!vorlage Hinweis Die Funktionen "Server" und "Client" sind in Samba nicht streng nach Rechnern getrennt. Der gleiche Rechner kann als Server Freigaben für andere Rechner bereitstellen und gleichzeitig auch als Client auf Freigaben anderer Server zugreifen. Die Bezeichnung "Server" bedeutet in diesem Zusammenhang also nicht, dass sich die Ausführungen nur auf eine Server-Version von Ubuntu beziehen. }}} = Gliederung und Überblick = Das Themengebiet ''Samba'' wird auf mehreren Wiki-Seiten behandelt, die sich hinsichtlich der Ausführlichkeit und des Niveaus stark unterscheiden: == Einführende Seiten, Basics == * [:Samba:] {Übersicht} - Überblick und Grundbegriffe (diese Seite) * [:Samba Server:] - Allgemeines über Samba als Server. Einrichten eines Samba-Servers auch ohne GUI (die Einrichtung eines Samba-Servers als zum Microsoft Active Directory® kompatibler Domain-Controller ist nicht Gegenstand dieses Artikels). * [:Samba Server/smb.conf:] - Aufbau der Konfigurationsdatei für Samba-Server, diese Datei dient jedoch auch zur Konfiguration von SMB-Clients, welche die Samba-Bibliotheken verwenden! Dies betrifft beispielsweise [:smbclient:] und über ''GVfs'' auch [:Nautilus:] und [:Thunar:]. === Freigaben bereitstellen === * [:Samba Server_GNOME:] - Mit dem Dateimanager, bevorzugt GNOME/[:Nautilus:], persönliche oder allgemeine Freigaben für andere Rechner (Clients) einrichten. * [:Samba_Server/net_usershare:] - Freigaben als normaler Benutzer (ohne Root-Rechte) einrichten. === Auf Freigaben zugreifen === * [:Samba Client_GNOME:] - Mit dem Dateimanager, bevorzugt GNOME/Nautilus, auf Freigaben anderer Rechner (Server) zugreifen. Mit gewissen Einschränkungen ist diese Seite auch für [:Xfce:] ([:Xubuntu:]) gültig. * [:Samba Client_KDE:] - Mit KDE auf Freigaben anderer Rechner (Server) zugreifen. * [:gio mount: gio mount] - Einbinden von Freigaben ins Dateisystem des Client mit dem Programm gio mount als ''GVfs''. * [:mount.cifs: mount.cifs] - Einbinden von Freigaben ins Dateisystem des Client mit dem Programm mount.cifs als ''CIFS vfs''. Dieses ist deutlich anspruchsvoller als das ''GVfs'', erlaubt aber auch mehr individuelle Optionen. * [:Autofs: autofs] - Einbinden von Freigaben ins Dateisystem des Client mit dem autofs als ''CIFS vfs''. Die folgenden Seiten beschreiben grafische Werkzeuge, die das grafische Browsen und Einbinden wesentlich erleichtern: * [:Gigolo:] - Tool zum Einbinden von Freigaben als ''GVfs''. * [:Samba Client/Smb4K:Smb4K] - Tool zum Einbinden von Freigaben als ''CIFS vfs''. Und schließlich ist auch über ein Terminal der Zugriff auf Freigaben möglich: * [:Samba Client/smbclient:smbclient] ist vor allem bei Problemen ein willkommenes, vielseitiges Hilfsmittel. Beim Zugriff per smbclient wird die SMB-Freigabe nicht in das Dateisystem des Client eingebunden. == Spezielle Themen für Fortgeschrittene == === Browsen von Freigaben im Windows-Netzwerk === [:Samba_Client/Windows-Netzwerk:] - Beschreibung, wie man auf die Freigaben per Dateimanager browst. = Grundlagen und Begriffe = == Freigaben == Dienste, die über das SMB-Protokoll im Netzwerk verteilt werden, nennt man [wikipedia:Dateifreigabe:Freigaben]. Damit ist in der Regel der Zugriff auf Dateien und Ordner im lokalen Netzwerk gemeint. Aber auch Drucker können freigegeben werden. === Allgemeine Freigaben === "Allgemeine Freigaben" (nicht zu verwechseln mit "Öffentliche Freigaben" mit erlaubtem Gast-Zugriff) werden durch einen Eintrag in die Datei [:smb.conf:/etc/samba/smb.conf] mit [:sudo:Root-Rechten] erstellt. === Persönliche Freigaben === Samba bietet mit dem Werkzeug [:Samba_Server/net_usershare:net usershare] auch gewöhnlichen Benutzern der Gruppe ''sambashare'' die Möglichkeit, für eigene Dateien und Ordner ohne Root-Rechte "Persönliche Freigaben" einzurichten (nicht zu verwechseln mit "Geschützte Freigaben", auf die nur mit Benutzername und Kennwort zugegriffen werden kann). Verschiedene Dateimanager verwenden net usershare, um Ordner und Dateien freizugeben. == Netzwerk-Protokolle == === SMB === [wikipedia:Server_Message_Block:SMB] ist ein auf NetBEUI/NetBIOS oder TCP/IP aufbauendes Protokoll, um Dienste im Netzwerk zu Verfügung zu stellen. Es wurde ursprünglich von der Firma IBM entwickelt und bildet auch die Grundlage für neuere Samba-Versionen. === SMBv1 (CIFS) === Bereits im Jahre 1996 wurde SMB von Microsoft erweitert und in [wikipedia:CIFS:] (Common Internet File System) umbenannt. Das Protokoll SMBv1 (CIFS) wurde von Windows-xp ff. und von den Samba-Versionen 3.xx langezeit ausschließlich verwendet. Heute gilt SMBv1 als unsicher. Die Bezeichnung ''CIFS'' erscheint aber immer noch im Namen verschiedener Samba-Bibliotheken (z.B. '''cifs-utils'''), die sich auch für neuere SMB-Versionen eignen. Seit Samba 4.11 (seit [:Focal:Ubuntu 20.04 LTS] wird SMBv1 in der Standard-Einstellung nicht mehr unterstützt. === SMBv2 === Beim Protokoll SMBv2 (Windows ab ''vista'') wurde nicht nur die Performance verbessert (z.B. höhere Übertragungs-Geschwindigkeit). Es bietet auch eine bessere Sicherheit. Einige Optionen fielen deshalb weg. So wird mit SMBv2 vom Server z.B. keine Freigaben-Liste mehr angeboten. Ab Version 3.6.0 bietet Samba neben SMBv1 optional auch das Protokoll SMBv2 an. === SMBv3 === Unter den zahlreichen neuen Optionen von SMBv3 ist wohl die "''Ende-zu-Ende-Verschlüsselung''" die wichtigste. Durch diese wird die Sicherheit wesentlich erhöht. In Windows-10 ist SMBv3 nun Standard. Samba bietet dieses Protokoll ab der Version 4.1 an (veröffentlicht Oktober 2013, Ubuntu ab [:Trusty:Ubuntu 14.04 LTS]). Bis Version 4.6 (bis September 2017) blieb aber SMB1 die Standard-Einstellung. Seither ist nun das höchste unterstützte Protokoll Standard. === Die cifs-UNIX-Extensions (gültig für SMBv1)=== Um das CIFS-Protokoll auch für reine UNIX- bzw. Linux-Netze neben [:NFS:] zu einer vollwertigen Alternative zu machen, wurden von Hewlett-Packard die cifs UNIX Extensions (CIFS-UNIX-Erweiterungen) eingeführt. Schon seit der Samba-Version 2.2.4 (Mai 2002) stehen sie als Erweiterung des Protokolls SMBv1 (cifs) auch in Linux zur Verfügung. Wegen einiger Sicherheits-Lücken wurden sie aber für das nachfolgende Protokoll SMBv2 __nicht__ übernommen. Mit den "cifs-UNIX-Extensions" werden im Einzelnen unterstützt: * Übertragung von [:Rechte:Besitz- und Zugriffsrechten] über [:Benutzer_und_Gruppen:UID und GID] * [wikipedia:Symbolische_Verknüpfung:Symbolische] und [wikipedia:Harter_Link:harte] Verknüpfungen ("symbolic links" und "hard links") * [wikipedia:Zeitstempel:Zeitstempel] ("timestamp", Datum/Uhrzeit) für Dateien und Ordner * weitere Daten der [wikipedia:Unix-Dateirechte:UNIX-Datenstruktur] Um die cifs-UNIX-Extensions nutzen zu können, müssen die Freigaben auf dem Client mit dem [:mount.cifs:CIFS vfs] (nicht ''GVfs''!) eingebunden sein oder über ein [:Terminal:] mittels [:Samba Client/smbclient:smbclient] angesprochen werden. {{{#!vorlage Hinweis Die ursprünglich für das Protokoll SMBv1 entwickelten UNIX Erweiterungen unterstützten die [:ACL:POSIX-ACL] nicht und erwiesen sich zudem als unsicher. Deshalb wurden sie __nicht__ in das Nachfolge-Protokoll SMBv2 übernommen. Eine völlige Neubearbeitung, die neben den [:Rechte:UNIX-Dareirechten] auch die [:ACL:POSIX-ACL] und Windows-ACL unterstützt, wurde unter der Bezeichnung ''POSIX Extensions'' ab SMB 3.1.1 ins Protokoll übernommen. Die POSIX Extensions werden derzeit von Windows (Server und Client) und vom ''CIFS vfs'' (Client), aber leider noch nicht von Samba als Server unterstützt (Stand Juni 2020, Samba 4.11.6). }}} === Windows- und Posix-ACL === Die cifs-UNIX-Extensions arbeiten mit [:Rechte:UNIX-Dateirechten] und verwenden zur Identifikation von Benutzern und Gruppen die numerischen Werte von UID und GID. Windows kennt diese nicht und arbeitet statt dessen mit [wikipedia:Security Identifier:SID] und eigenen [wikipedia:Access Control List:ACL], die mit den in Ubuntu/Linux verwendeten [:ACL:POSIX-ACL] leider nicht identisch sind. Deshalb ist eine Kommunikation mit Windows über die cifs-UNIX-Extensions grundsätzlich unmöglich. Wenn auf dem Linux-Dateisystem POSIX-ACL unterstützt werden (Standard in ext3 und ext4, optional in NTFS), dann kann Samba Windows-ACL in POSIX-ACL umwandeln und umgekehrt ("mappen"). Damit können ab Samba 4.0 nun Samba-Freigaben auch von Windows-Clients aus administriert werden, was oft einfacher ist als die direkte Administration auf dem Server. === WINS === Bei WINS handelt es sich um den "Windows Internet Naming Service" und damit um die Implementierung von NetBIOS über TCP von Microsoft. == Virtuelle Netzwerk-Dateisysteme == Das ''CIFS vfs'' ist ein virtuelles Dateisystem in Linux, das den Zugang sowohl zu modernen SMBv3-Servern als auch zu älteren SMB(cifs)-Servern gestattet Es unterstützt alle Optionen des jeweiligen Protokolls (auch die cifs-UNIX-Extensions mit SMBv1 und die POSIX-Erweiterungen mit SMBv3, s.o.). Das dazugehörigen Mountprogramm ist [:mount.cifs:mount.cifs]. Es ist im Paket '''cifs-utils''' enthalten. Es gibt auch andere Netzwerk-Dateisysteme, mit denen man auf SMB-Freigaben zugreifen kann. So verwenden z. B. die Dateimanager [:Nautilus:], [:Caja:] und [:Thunar:] oder das Tool [:Gigolo:] nicht das ''CIFS vfs'', sondern das [:gio mount:GVfs]. == Active Directory == Das [wikipedia:Active_Directory:Active Directory]® (AD) ist ein [wikipedia:Verzeichnisdienst:] der Firma Microsoft, der in mittleren und großen Windows-Netzwerken verwendet wird. Die aktuelle Samba-Version 4 enthält eine vollständige Implementierung von Active Directory und kann damit auch in dieser Hinsicht einen Windows-Server vollständig ersetzen. Ermöglicht wurde dies auch durch die Unterstützung, die das Samba-Projekt von Microsoft selbst erhalten hat. Die Konfiguration eines Samba-Servers als AD-Controller sprengt jedoch den Rahmen dieses Wiki. = Links = == Intern == * [:Heimnetzwerk:] {Übersicht} – Verschiedene Möglichkeiten, ein kleines privates Netzwerk einzurichten. * [:MS-Windows Integration:] {Übersicht} – Hinweise zum Parallel-Betrieb von Linux und Windows auf einem Rechner oder in einem Netzwerk. * [:HowTo/Samba-AD-Server_unter_Ubuntu_20.04_installieren:Howto: Samba-AD-Server unter Ubuntu 20.04 installieren] - Samba-Server als "Active-Directory Domain-Controller" für eine Windows Domäne auf Ubuntu installieren * [:Internet und Netzwerk:] {Übersicht} – Wissenswertes zu Netzwerk- und Servertechnologien (Übersichtsseite). * [:gio mount:] – Freigaben mit gio mount einbinden als ''GVfs'' (nicht nur für SMB-Freigaben). == Extern == * [https://www.samba.org/samba/ Die englischsprachige Hauptseite des Samba-Teams] {en} * [https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller Samba_AD_DC_HOWTO] {en} - Samba Server als AD kompatibler Domain-Controller (ab Samba 4.0) * [https://www.informatik-aktuell.de/betrieb/server/samba-4-als-domaincontroller-einrichten-und-verwalten.html Samba 4 als Domain Controller und Fileserver einrichten] {de} - Artikel von Stefan Kania in "Informatik aktuell", 06/2014 * [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, Freigaben, Windows, Samba, smb, cifs