Samba-Server
TMP
{{#if: Samba | Samba | {{#invoke:WLink|getArticleBase}} }} | ||
---|---|---|
|
{{#if: {{#invoke:Wikidata|claim|P154}} | | ||
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
}} }}{{#if: | | ||
{{{Screenshot}}}{{#if: | }}| }} | ||
Basisdaten
{{#if: | | ||
Maintainer |
{{#if: {{#invoke:Wikidata|claim|P126}} | | |
Maintainer | claim|P126|parameter=link|references=ja|list=, }}
}} }}{{#if: Samba-Team[1] | | |
Entwickler |
{{#if: {{#invoke:Wikidata|claim|P178}} | | |
Entwickler | claim|P178|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |
Erscheinungsjahr |
{{#if: {{#invoke:Wikidata|claim|P577}} | | |
Erscheinungsjahr | claim|P577|references=ja|list=, }} |
{{#if: {{#invoke:Wikidata|claim|P571}} | | |
Erscheinungsjahr | claim|P571|references=ja|list=, }}
}} }} }}{{#ifeq: | KEINE_ANGABE || {{#if: | | |
Aktuelle Version | () }} |
{{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356}} | |
Aktuelle Version | claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|qualifier=P577}} | ({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356|qualifier=P577}}) }}}}}} }}{{#if: | | |
Aktuelle Vorabversion | ({{{AktuelleVorabVersionFreigabeDatum}}}) }} }}{{#if: | | |
Ausführungsumgebung |
{{#if: plattformübergreifend | | |
Betriebssystem | plattformübergreifend |
{{#if: {{#invoke:Wikidata|claim|P306}} | | |
Betriebssystem | claim|P306|parameter=link|references=ja|list=, }}
}} }} }}{{#if: | | |
Programmiersprache |
{{#if: {{#invoke:Wikidata|claim|P277}} | | |
Programmiersprache | claim|P277|parameter=link|references=ja|list=, }}
}} }}{{#if: SMB-Server und -Client | | |
Kategorie | SMB-Server und -Client
}}{{#if: GPL | | |
Lizenz | GPL |
{{#if: {{#invoke:Wikidata|claim|P275}} | | |
Lizenz | claim|P275|parameter=link|references=ja|list=, }}
}} }}{{#if: nein | | |
deutschsprachig | faculty|nein}} | ja | nein }}
}}{{#if: | | |
Sonstiges | {{{Sonstiges}}} }}{{#if: samba.org | |
|
samba.org |
{{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} | | ||
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
}} }}{{#if: | | ||
Dateien | [[c:Category:Created with {{{Dateien}}}|{{{Dateien}}}]]
}} |
Samba ist ein freies Programmpaket, das es ermöglicht, Microsoft-Windows-Funktionen wie die Datei- und Druckdienste unter anderen Betriebssystemen zu nutzen und die Rolle eines Domain Controllers anzunehmen. Es implementiert hierfür unter anderem das SMB/CIFS-Protokoll.
Da die Software unter der GPL frei verfügbar ist, wird sie als Alternative zu Microsoft-Windows-Server-Betriebssystemen eingesetzt.
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:
- Das Samba-eigene browserbasierte Modul SWAT (Samba Web Administration Tool)
- Ein Modul für das Browser-basierte Konfigurationstool Webmin
- Das Tool GSAMBAD als Teil der Sammlung GAdmintools
- Der Browser-basierte LDAP Account Manager zur Verwaltung von Benutzerkonten
- Möglichkeiten zur Ordnerfreigabe in den Benutzeroberflächen des KDE- und Gnome-Projektes
- Verwaltungsoberflächen weiterführender Produkte wie z. B. Univention Corporate Server, IServ und Zentyal
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.
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 Vorlage:Anker
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
- ↑ The Samba Team (englisch) – offizielle Entwicklerseite, abgerufen am 5. Juni 2012
- ↑ Andrew Tridgell: Myths About Samba. Groklaw, 26. Februar 2005
- ↑
- ↑
- ↑
- ↑ „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)
- ↑
- ↑ CVE-2012-1182 – A security announcement regarding a major issue with Samba 3.6.3 and lower.
- ↑ SambaCry is coming. securelist.com
- ↑
- ↑ SambaCry: Erste Angriffe auf Linux-NAS-Boxen gesichtet. heise.de
Samba
Der Name Samba leitet sich vom Netzwerkprotokoll SMB (Server Message Block) 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 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 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 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 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 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 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-Slave zum Einbinden von SMB-Freigaben.
Für höhere Ansprüche kann für SMB zusätzlich noch ein spezielles Netzwerk-Dateisystem 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 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.
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 - Ü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 - Einbinden von Freigaben ins Dateisystem des Client mit dem Programm gio mount als GVfs.
- 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 - 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.
- Smb4K - Tool zum Einbinden von Freigaben als CIFS vfs.
Und schließlich ist auch über ein Terminal der Zugriff auf Freigaben möglich:* 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
Benutzung von Domänenkonten
Samba Winbind - Beschreibung, wie man Ubuntu an einer Windows-Domäne anmeldet, um die Benutzer am "Active Directory" zu authentifizieren.
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 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 /etc/samba/smb.conf mit Root-Rechten erstellt.
Persönliche Freigaben
Samba bietet mit dem Werkzeug 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
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 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 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 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 Besitz- und Zugriffsrechten über UID und GID
- Symbolische und harte Verknüpfungen ("symbolic links" und "hard links")
- Zeitstempel ("timestamp", Datum/Uhrzeit) für Dateien und Ordner
- weitere Daten der UNIX-Datenstruktur
Um die cifs-UNIX-Extensions nutzen zu können, müssen die Freigaben auf dem Client mit dem CIFS vfs (nicht GVfs!) eingebunden sein oder über ein Terminal mittels smbclient angesprochen werden.
Hinweis:
Die ursprünglich für das Protokoll SMBv1 entwickelten UNIX Erweiterungen unterstützten die 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 UNIX-Dareirechten auch die 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 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 SID und eigenen ACL, die mit den in Ubuntu/Linux verwendeten 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. Auch wenn der Name anderes vermuten lässt, läuft dieser Dienst ausschließlich lokal. Viele Informationen und weitere Details enthält der Artikel Samba Winbind.
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. 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 GVfs.
Active Directory
Das Active Directory® (AD) ist ein 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 – Verschiedene Möglichkeiten, ein kleines privates Netzwerk einzurichten.
- MS-Windows Integration – Hinweise zum Parallel-Betrieb von Linux und Windows auf einem Rechner oder in einem Netzwerk.
- 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 – Wissenswertes zu Netzwerk- und Servertechnologien (Übersichtsseite).
- gio mount – Freigaben mit gio mount einbinden als GVfs (nicht nur für SMB-Freigaben).
Extern
- Die englischsprachige Hauptseite des Samba-Teams 🇬🇧
- Samba_AD_DC_HOWTO 🇬🇧 - Samba Server als AD kompatibler Domain-Controller (ab Samba 4.0)
- Samba 4 als Domain Controller und Fileserver einrichten 🇩🇪 - Artikel von Stefan Kania in "Informatik aktuell", 06/2014
- Stop Using SMB1 🇬🇧 Ein Aufruf von Microsoft mit Erläuterungen
https://wiki.ubuntuusers.de/Samba/
Tipps
Hinweis:
Dieses Howto wurde von Bournless erstellt. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich gegebenenfalls zusätzlich an den/die Verfasser des Howtos.
Ziel
Dieses Howto beschreibt einige zusätzliche Hinweise, Ergänzungen und Tipps, wenn man zuvor einen Domaincontroller (DC), gemäß dem Howto Samba-AD-Server_unter_Ubuntu_20.04_installieren erfolgreich installiert hat und wendet sich primär an weniger erfahrene, aber dennoch interessierte User, die auch stationäre Ubuntu PCs (ab der Desktop-Version 20.04) in die Domäne aufnehmen möchten.
Die Ubuntu-Serverversionen werden in diesem Howto nicht berücksichtigt, da sie auf unterschiedliche Vorgehensweisen an die Domäne gebunden werden können!
Hinweis:
Zum leichteren Verständins werden alle Vorgaben (Bezeichnungen, Realm und IP-Adressen) aus dem oben genannten Howto benutzt.
AD-Benutzerkonten (Samba-Tool)
Nach Abschluss der Installation des neuen Domaincontrollers (adc01) existiert im Active Directory nur ein aktiviertes Benutzerkonto - das Konto vom Administrator. Um nun Standard-Benutzerkonten im AD anzulegen, benutzt man in der Regel die Remoteserver-Verwaltungstools (RSAT), die aber einen Windows PC in der Domäne voraussetzen. Wer diesen aber nicht bereitstellen kann oder möchte, kann als Alternative die samba-tools nutzen, die bereits auf dem Domaincontroller vorhanden sind.
Eine ausführliche Beschreibung findet man in der entsprechenden Manpage:
sudo samba-tool -h
AD-Benutzerkonto erstellen
sudo samba-tool user create peterp Hugo#0815 --given-name=Peter --surname=Pan
erstellt ein AD-Benutzerkonto für Peter Pan mit dem Benutzeranmeldename (loginname) peterp und dem Passwort Hugo#0815 in der OU Users.
AD-Benutzerkonten anzeigen
sudo samba-tool user list
zeigt eine kurze Übersicht aller AD-Benutzerkonten an.
AD-Benutzerkonten-Details
sudo samba-tool user show peterp
zeigt alle Details zum AD-Benutzerkonto von Peter Pan an.
Gateway und DNS
Die diesbezüglichen notwendigen Einstellungen auf den Clients werden in diesem Howto manuell erfolgen, da* auf dem DC (adc01) gewollt kein DHCP-Server installiert wurde.
- die meisten DHCP-Server auf den s.g. SOHO-Routern (z.B. Fritz!Box) nur eine IP-Adresse für lokale DNS-Server vergeben können.
Ubuntu (neuer PC)
Ein neu zu installierender stationärer kabelgebundener PC (Ubuntu-Desktop ab der Version 20.04.4) wird zunächst per "Ubuntu ausprobieren" gestartet, um im NetworkManager im TAB IPv4 manuell eine gewünschte IP (10.10.20.x), die Subnetzmaske (24) und die IP des Gateways (10.10.20.1) eintragen zu können. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.
Beispiel:
10.10.20.220,10.10.20.1
Jetzt ist sichergestellt, dass der neue Client-PC den DNS-Server des AD-DC zuerst benutzt und gleichzeitig über eine funktionsfähige Internetverbindung verfügt.
Ubuntu (vorhandener PC)
Zuerst muss dafür gesorgt werden, dass auf dem vorhandenen stationären PC die bereits schon installierte Ubuntu-Desktop Version 20.04.x der Version 20.04.4 entspricht. Dazu wird der Befehl
sudo apt update && sudo apt upgrade
ausgeführt.
Nun wird die IP des Client-PC im NetworkManager im TAB IPv4 (10.10.20.x) manuell vergeben, die Subnetzmaske (24) und die IP des Gatways (10.10.20.1) eingetragen. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.
Beispiel:
10.10.20.220,10.10.20.1
Mobile Geräte
Hinweis:
Eine Konfiguration für mobile Geräte (z.B. Notebooks oder Subnetbooks), die auch mal das heimiche LAN verlassen ist zwar möglich, sprengen aber den Umfang dieses Howtos.
Zeitserver
Eine gesonderte Konfiguration ist auf den stationären Ubuntu-Desktop Clients nicht zwingend notwendig, da diese nun stets einen öffentlichen Zeitserver erreichen können. Allerdings ist es auch möglich, den Zeitserver des lokalen Domaincontrollers als primären Zeitserver zu hinterlegen, was unkomliziert per per timesyncd möglich ist.
GptTmpl.inf
Ohne die bisher fehlende Datei GptTmpl.inf kann ein neu zu installierender Ubuntu-Desktop PC ab der Version 20.04.x zwar schon während des Installationsvorgangs der Domäne beitreten, jedoch wird jeglicher Versuch, sich anschließend mit einem AD-Benutzerkonto anzumelden, nach Eingabe des (korrekten) Passwortes mit einer Fehlermeldung abgelehnt. Grund: Die bisherigen Versionen von SSSD (bis zur Version 2.7+) erwarten u.A. die Existenz der Datei GptTmpl.inf
GptTmpl.inf erstellen
Zur Erstellung der fehlenden .inf Datei meldet man sich auf dem DC (adc01) als Systemverwalter an, um anschließend folgende Befehle auszuführen:
sudo -i cd /var/lib/samba/sysvol/*/Policies/{31*/MACHINE mkdir -p Microsoft/"Windows NT"/SecEdit cd Microsoft/Windows\ NT/SecEdit nano GptTmpl.inf
Die nun neu erstellte Datei bekommt folgenden Inhalt:
[Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision=1
Diese Datei abschließend speichern und schließen.
Mit dem Befehl
exit
sollte der "Superuser-Modus" nun wieder verlassen werden.
AD-Join (neuer PC)
Nachdem die Datei GptTmpl.if erfolgreich erstellt wurde, kann ein neu zu installierender Ubuntu-Desktop PC (ab der Version 20.04.4) schon während des Installationsvorgangs im AD registriert werden, um nach dem Abschluss der Installation sofort die bereits vorhandenen AD-Benutzerkonten zur Anmeldung nutzen zu können. Dazu aktiviert man während des Installationsvorgang den Punkt "Use Active Directory" und trägt bei "Domain" den Namen der Domäne (heim.lan), bei "Domain Administrator" Administrator und bei "Kennwort" das im Howto bereits vergebene Password ein. (ACHTUNG: Hier ist nicht das Passwort vom Systemverwalter gemeint!)
AD-Join (vorhandener PC)
Um Vergleichbares auf einem bereits vorhandenen PC (Ubuntu-Desktop ab Version 20.04.4) zu erreichen, sind folgende Befehle notwendig:
sudo apt update && sudo apt upgrade sudo apt install sssd-ad sssd-tools realmd adcli sudo pam-auth-update --enable mkhomedir sudo realm join heim.lan
Damit ist der PC der Domäne (heim.lan) beigetreten und man kann sich mit den vorhandenen AD-Benutzerkonten an der Domäne anmelden.
Ausnahme
Bei Ubuntu-Desktop Versionen, welche nicht von Beginn an nicht mindestens eine Version 20.04.4 waren, bedarf es leider etwas Nacharbeit an der Datei sssd.conf, da sonst die Anmeldung von AD-Benutzerkonten nicht ordnungsgemäß funktioniert - weder im Terminal noch im Anmeldebildschirm.
Hinweis:
Eine bereits vorkonfigurierte Datei sssd.conf wird erst erzeugt, wenn der Join-Befehl erfolgreich ausgeführt wurde.
sudoedit /etc/sssd/sssd.conf
Im Abschnitt [domain/heim.lan] als letzte Zeile den Eintrag
ad_gpo_access_control = permissive
hinzufügen. Diese Datei abschließend speichern und schließen.
Nun werden noch noch die Befehle
sudo sss_cache -UG sudo systemctl restart sssd
ausgeführt und der bisherige Benutzer (Systemverwalter) ausgeloggt. Alternativ kann man den PC auch einfach rebooten lassen.
AD-Login
Login im Terminal
Hinweis:
Im Gegensatz zum Anmelden im Anmeldebilschirm (Login Screen) ist das Anmelden mit einem AD-Benutzerkonto in einem Terminal nur möglich, wenn der aktuell am System angemeldete Benutzer Befehle mit root-Rechten ausführen kann und wird danach nicht im Anmeldebildschirm gelistet!
Im folgenden Beispiel ist der Benutzer ich ein Systemveralter auf u2004-13
ich@u2004-13:~/Schreibtisch$ sudo login [sudo] Passwort für ich:
Zunächst wird wie gewohnt das Passwort des Systemverwalters abgefragt. Nach der erfolgreichen Anmeldung einscheint nun ein neuer Login-Prompt.
u2004-13 Login: peterp@heim.lan Passwort:
Erst hier wird das AD-Benutzerkonto in UPN-Schreibweise und dessen Passwort eingegeben.
Login im Anmeldebildschirm
Im Anmeldebildschirm (Login Screen) auf "Nicht aufgeführt?" klicken und mit einem AD-Konto in UPN-Schreibweise anmelden.
Beispiel:
Benutzer: peterp@heim.lan Passwort: Hugo#0815
Info: Weitere, bereits vorhandene AD-Benutzerkonten können alternativ auch in der GUI unter Einstellungen->Benutzerkonto mit dem Button Anmeldung in Unternehmensumgebung eingerichtet werden, die anschließend im Login Screen gelistet werden. Allerdings werden deren Homezeichnisse erst bei der ersten erfolgreichen Anmeldung im AD erstellt.
Tipp Anmeldebildschirm
Der Anmeldebildschirm zeigt standardmäßig alle vorhandenen lokalen Benutzer an. Dazu gehören auch alle auf dem System eingerichten AD-Benutzerkonten , was sehr schnell unübersichtlich werden kann.
Dieses Verhalten kann wie folgt geändert werden:
sudoedit /etc/gdm3/greeter.dconf-defaults
Nun entfernt man das Hash-Zeichen (#) bei den folgenden Zeilen:
# [org.gnome/login-screen] # disable-user-list=true
Die Datei speichern und schließen.
Ab jetzt werden im Anmeldebildschirm keine Benutzerkonten mehr angezeigt.
Hinweis (PowerShell AD Module)
Als gute und kostenfreie Möglichkeit ein Active Directory unter Ubuntu zu administrieren bietet sich das Snap-Paket PowerShell an.
Links
https://wiki.ubuntuusers.de/Howto/Samba-AD-Server_unter_Ubuntu_20.04/Tipps/
Normally when you launch the system’s file manager on Linux/Windows system, you will see network shares advised on your network. These shares are only allowed if remote users are connected to the machine.
Samba is a free software that enables one to share files across the network using the SMB(Server Message Block) protocol. This tool was developed by Andrew Tridgell in December 1991 and January 1992.Vorlage:Anchor Vorlage:Anchor
The cool features associated with Samba are:* It is easy and quick to deploy
- It offers secured data transfer
- Multichanel technology
- Message signing-with digital signing – users who receive the data packets are assured of the origin point authenticity.
- Allows concurrent operations.(simultaneous access to the files)
- It offers good performance under heavy loads.
- Samba supports POSIX extensions for CIFS/SMB
- Supports NetBIOS over TCP/IP (NBT)
- It supports the NT-style printing service (SPOOLSS)
Samba is supported on various platforms such as Windows and Unix operating systems i.e Solaris, Linux, AIX, and BSD variants.Vorlage:Anchor Vorlage:Anchor
This guide will equip you with the required knowledge on how to configure Samba Share on Debian 11 / Debian 10.
Step 1 – Install Samba on Debian 11 / Debian 10
We will start off by installing Samba on Debian 11 / Debian 10. This is easy since it is available in the default Debian repositories.Vorlage:Anchor Vorlage:Anchor
sudo apt install samba smbclient cifs-utils
Dependency tree:
The following additional packages will be installed:
attr ibverbs-providers keyutils libcephfs2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 librados2 librdmacm1 python3-cffi-backend python3-cryptography python3-dnspython python3-gpg python3-markdown python3-pygments python3-requests-toolbelt python3-samba python3-tdb python3-yaml samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
Suggested packages:
winbind python-cryptography-doc python3-cryptography-vectors python3-sniffio python3-trio python-markdown-doc python-pygments-doc ttf-bitstream-vera bind9 bind9utils ctdb ldb-tools ntp | chrony smbldap-tools ufw heimdal-clients
The following NEW packages will be installed:
attr cifs-utils ibverbs-providers keyutils libcephfs2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 librados2 librdmacm1 python3-cffi-backend python3-cryptography python3-dnspython python3-gpg python3-markdown python3-pygments python3-requests-toolbelt python3-samba python3-tdb python3-yaml samba samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules smbclient tdb-tools
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded. Need to get 24.4 MB of archives. After this operation, 84.7 MB of additional disk space will be used. Do you want to continue? [Y/n] y
Step 2 – Set the Samba Global settings
The Samba configuration file is located under /etc/samba/smb.conf. In this file, there are several changes we need to make. Although Debian is intelligent enough to provide default configurations, it is also good to verify this.
Open the file using a preferred editor.
sudo vim /etc/samba/smb.conf
In the file, make make adjustments as you deem fit, example for workgroup.
workgroup = WORKGROUP
Here, you can share both public and private directories. So we will create the two directories as below.
sudo mkdir /public sudo mkdir /private
Now edit the Samba conf and add the two directories.
sudo vim /etc/samba/smb.conf
At the end of the file, add the shares and authentication methods to access it.Vorlage:Anchor Vorlage:Anchor
[public]
comment = Public Folder path = /public writable = yes guest ok = yes guest only = yes force create mode = 775 force directory mode = 775
[private]
comment = Private Folder path = /private writable = yes guest ok = no valid users = @smbshare force create mode = 770 force directory mode = 770 inherit permissions = yes
We need the Samba share user group to access the Private share as specified in the conf above. So we will create the group as below.
sudo groupadd smbshare
Add the necessary permissions for the private share.
sudo chgrp -R smbshare /private/ sudo chgrp -R smbshare /public
Set the right directory permissions.
sudo chmod 2770 /private/ sudo chmod 2775 /public
In the above command, the value 2 at the beginning, stands for the SGID bit. This allows newly created files to inherit the parent group.
Next, create a no login local user to access the private share.
sudo useradd -M -s /sbin/nologin sambauser
Add the user to the Samba share group created above.
sudo usermod -aG smbshare sambauser
Now create an SMB password for the user.
sudo smbpasswd -a sambauser
Enable the created account:
sudo smbpasswd -e sambauser
Step 5 – Verify the Samba configuration
Once changes have been made to the config file, it is recommended that you test it using the below command:
sudo testparm
Execution output:
Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters [global]
interfaces = 192.168.205.0/24 eth0 log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u server role = standalone server unix password sync = Yes usershare allow guests = Yes idmap config * : backend = tdb
..... [public]
comment = Public Folder force create mode = 0775 force directory mode = 0775 guest ok = Yes guest only = Yes path = /public read only = No
[private]
comment = Private Folder force create mode = 0770 force directory mode = 0770 inherit permissions = Yes path = /private read only = No valid users = @smbshare
The above output shows that everything is configured appropriately. Now proceed as below.
Vorlage:Anchor Vorlage:Anchor Create demo files in the Samba shares:
sudo mkdir /private/demo-private /public/demo-public sudo touch /private/demo1.txt /public/demo2.txt
Restart the Samba service for the changes to apply.
sudo systemctl restart nmbd
If you have a firewall running, you need to allow remote access from the specified IP range:
sudo ufw allow from 192.168.205.0/24 to any app Samba
This guide demonstrates how to access the Share files using both Windows and Linux systems.
First, try accessing the share from your local machine.
Vorlage:Anchor Vorlage:Anchor $ smbclient '\\localhost\private' -U sambauser Enter WORKGROUP\sambauser's password: Try "help" to get a list of possible commands. smb: \> ls
. D 0 Tue Feb 8 01:31:42 2022 .. D 0 Tue Feb 8 01:25:51 2022 demo1.txt N 0 Tue Feb 8 01:31:42 2022 demo-private D 0 Tue Feb 8 01:31:32 2022
39987708 blocks of size 1024. 32647972 blocks available
smb: \> exit
Now proceed as set up clients.
1. Setup a Windows Client
To access the share from Windows, browse using the IP address of the Samba share system as below.
Vorlage:Anchor Vorlage:Anchor Open a run box using Win+R and proceed as shown.
"How To Configure Samba Share on Debian 11 Debian 10 1"
The shared folders should appear as below.
"How To Configure Samba Share on Debian 11 Debian 10 1 1"
Open one of the folders and create a file.
Vorlage:Anchor Vorlage:Anchor "How To Configure Samba Share on Debian 11 Debian 10 6"
The file should be visible on the Samba server machine.
"How To Configure Samba Share on Debian 11 Debian 10 7 1"
Now mount the Samba share permanently on your Windows system. Click on This PC->Map Network Drive
"How To Configure Samba Share on Debian 11 Debian 10 2"
Provide the Path details as below.
Vorlage:Anchor Vorlage:Anchor "How To Configure Samba Share on Debian 11 Debian 10 3"
Enter the Samba user credentials.
"How To Configure Samba Share on Debian 11 Debian 10 4"
You will have the share available as shown.
"How To Configure Samba Share on Debian 11 Debian 10 5"
2. Setup a Linux client
To set up a Linux client, you will need Samba packages:
sudo apt install samba-client cifs-utils
Once installed, navigate to File manager->Other locations and add your share using the syntax below.
smb://servername/Share_name
For example:
"How To Configure Samba Share on Debian 11 Debian 10 8"
Enter the credentials for the samba user.
"How To Configure Samba Share on Debian 11 Debian 10 9"
That is it! You have your Samba share as below.
Vorlage:Anchor Vorlage:Anchor "How To Configure Samba Share on Debian 11 Debian 10 10"
Voila!
I hope you enjoyed this guide on how to configure Samba Share on Debian 11 / Debian 10. Now you can easily share files over a network between Windows and Linux systems.
See more:* How To Share your Linux Terminal Session in Web Browser
https://computingforgeeks.com/how-to-configure-samba-share-on-debian/