Samba-Server: Unterschied zwischen den Versionen

Aus Foxwiki
 
(47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= TMP =
'''Samba-Server''' - Kurzbeschreibung
{{Infobox Software
 
| Name                        = Samba
== Beschreibung ==
| Logo                        = [[Datei:Samba Logo.png|250px|Logo von Samba]]
Der Name Samba leitet sich vom Netzwerkprotokoll [https://de.wikipedia.org/wiki/Server%20Message%20Block SMB] ('''S'''erver '''M'''essage '''B'''lock) ab
| Beschreibung                 =  
* Dieses wurde bereits 1983 von IBM entwickelt
| Hersteller                  = Samba-Team<ref>[https://www.samba.org/samba/team/ The Samba Team] (englisch) – offizielle Entwicklerseite, abgerufen am 5. Juni 2012</ref>
* Microsoft bezeichnete die 1996 überarbeitete Version SMBv1 mit ''CIFS''
| AktuelleVersion              = <!-- Wikidata -->
* SMBv1 blieb lange Zeit Standard, obwohl bereits 2006 die Version SMBv2 und dann 2012 die Version SMBv3 (SMB3.0) veröffentlicht wurden
| AktuelleVersionFreigabeDatum = <!-- Wikidata -->
* Die aktuelle Version von SMBv3 (SMB3.1.x) wurde 2015 mit Windows 10 eingeführt
| Betriebssystem              = [[plattformübergreifend]]
* Das Protokoll SMBv1 (''CIFS'') gilt inzwischen als veraltet, langsam und unsicher, wird aber leider immer noch verwendet
| Kategorie                    = [[Server Message Block|SMB]]-Server und -Client
| Lizenz                      = [[GNU General Public License|GPL]]
| Deutsch                      = nein
| Website                      = [https://www.samba.org/ samba.org]
}}


'''Samba''' ist ein [[Freie Software|freies]] [[Programmpaket]], das es ermöglicht, [[Microsoft Windows|Microsoft-Windows]]-Funktionen wie die [[Datei- und Druckdienste]] unter anderen Betriebssystemen zu nutzen und die Rolle eines [[Domain Controller]]s anzunehmen. Es implementiert hierfür unter anderem das [[Server Message Block|SMB/CIFS]]-Protokoll.
Mit [https://de.wikipedia.org/wiki/Samba%20(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 [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS]) wird, wie auch in Windows 10, das Protokoll SMBv1 in der Grundeinstellung nicht mehr unterstützt


Da die Software unter der [[GNU General Public License|GPL]] [[Freie Software|frei]] verfügbar ist, wird sie als Alternative zu [[Microsoft Windows Server|Microsoft-Windows-Server]]-Betriebssystemen eingesetzt.
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.&nbsp;h.&nbsp;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 [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/net_usershare/ net usershare] eingeführt
* Dieses wird z.&nbsp;B.&nbsp; von den Dateimanagern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus] und [https://wiki.ubuntuusers.de/Dolphin/ Dolphin] verwendet


== Entwicklung ==
Samba dient aber auch dazu, um als "Client" auf Freigaben anderer Rechner zuzugreifen
Samba wurde erstmals 1992 vom Australier [[Andrew Tridgell]] veröffentlicht, um den Datenaustausch zwischen [[SunOS]] und [[Disk Operating System|DOS]] auch ohne [[Network File System|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 [[Online-Community#Entwicklergemeinschaft|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 Group|SCO]], [[Thursby Software|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 ([[Netzwerkanalyse (Informatik)|Protokoll-/Netzwerkanalyse]]) erschlossen werden.<ref name="Groklaw">Andrew Tridgell: [http://www.groklaw.net/article.php?story=20050205010415933 ''Myths About Samba''.] Groklaw, 26. Februar 2005</ref>
* Das in Ubuntu und Xubuntu standardmäßig eingerichtete Netzwerk-Dateisystem [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/Samba_Client/Windows-Netzwerk/ Windows-Netzwerk] verwendet zusätzliche Protokolle und Server
* Das ''GVfs'' wird standardmäßig von den Netzwerk-Managern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus], [https://wiki.ubuntuusers.de/Thunar/ Thunar] und anderen unterstützt
* Außerdem gibt es für das ''GVfs'' ein spezielles graphisches Tool [https://wiki.ubuntuusers.de/Gigolo/ Gigolo]
* In ähnlicher Weise verwenden in Kubuntu die Dateimanager Dolphin und Konqueror einen [https://wiki.ubuntuusers.de/KIO-Slaves/ KIO-Slave] zum Einbinden von SMB-Freigaben


Nach Differenzen bezüglich der [[Softwarearchitektur|Architektur]] von Samba [[Abspaltung (Softwareentwicklung)|spaltete]] sich 2000 das Projekt [[Samba-TNG]] vom Hauptprojekt mit dem Ziel ab, einen [[Primary Domain Controller]] (PDC) für [[Windows NT|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.
Für höhere Ansprüche kann für SMB zusätzlich noch ein spezielles Netzwerk-Dateisystem [https://wiki.ubuntuusers.de/mount.cifs/ CIFS vfs] installiert werden, das noch wesentlich mehr Optionen unterstützt


Zum festen Kern der Entwicklergemeinde von Samba zählen in etwa 40 Personen.<ref>{{Internetquelle |url=https://www.samba.org/samba/team/ |titel=The Samba Team |abruf=2021-04-11}}</ref> Einige Unternehmen, wie zum Beispiel [[IBM]], leisten finanzielle und personelle Unterstützung bzw. sind sogar Arbeitgeber einiger Samba-Entwickler.
Samba kann auch Drucker freigeben und Windows-Clients bei der Einrichtung von Druckern unterstützen
* Eine Alternative für die Freigabe von Druckern ist [https://wiki.ubuntuusers.de/CUPS/ CUPS]


In der Versionsreihe Samba&nbsp;3 bestand die Möglichkeit, Samba als Mitgliedsserver in einer Active-Directory-Domäne zu betreiben, nicht jedoch als deren ''Domain Controller''. Samba&nbsp;3 konnte nur Domain Controller des veralteten [[Windows NT 4.0|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.
'''Samba''' ist ein [[Freie Software|freies]] [[Programmpaket]], das es ermöglicht, [[Microsoft Windows|Microsoft-Windows]]-Funktionen wie die [[Datei- und Druckdienste]] unter anderen Betriebssystemen zu nutzen und die Rolle eines [[Domain Controller]]s anzunehmen
* Es implementiert hierfür unter anderem das [[Server Message Block|SMB/CIFS]]-Protokoll


Die größte Neuerung der aktuellen Version&nbsp;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&nbsp;4 beinhaltet eine Neuentwicklung der Domain-Controller-Funktionalität, die integrierte Dateiserver-Rolle basiert jedoch auf der bewährten Version&nbsp;3 und unterstützt nun auch SMB3. Samba&nbsp;4 wurde im Dezember 2012 für den Produktiveinsatz freigegeben.
Da die Software unter der [[GNU General Public License|GPL]] [[Freie Software|frei]] verfügbar ist, wird sie als Alternative zu [[Microsoft Windows Server|Microsoft-Windows-Server]]-Betriebssystemen eingesetzt


== Bestandteile und grafische Benutzeroberflächen ==
== Bestandteile ==
Samba besteht aus einer Reihe von einzelnen Modulen, die der grundlegenden Funktion sowie der Konfiguration dienen.
; 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 [[Daemon]]s ''samba'' (Active-Directory-Emulation ab Version 4), ''smbd'' ([[Datei- und Druckerfreigabe]]), ''nmbd'' (NetBIOS-Namensauflösung) und ''winbindd'' ([[Benutzerkonto|Benutzer]]-/[[Benutzergruppe|Gruppen]]-Zuordnung).
Die Kernmodule sind die [[Daemon]]s ''samba'' (Active-Directory-Emulation ab Version 4), ''smbd'' ([[Datei- und Druckerfreigabe]]), ''nmbd'' (NetBIOS-Namensauflösung) und ''winbindd'' ([[Benutzerkonto|Benutzer]]-/[[Benutzergruppe|Gruppen]]-Zuordnung)


Für die Konfiguration von Samba existieren eine Reihe von [[Grafische Benutzeroberfläche|GUIs]], beispielsweise:
Für die Konfiguration von Samba existieren eine Reihe von [[Grafische Benutzeroberfläche|GUIs]], beispielsweise
* Das Samba-eigene browserbasierte Modul ''SWAT'' (Samba Web Administration Tool)
* Das Samba-eigene browserbasierte Modul ''SWAT'' (Samba Web Administration Tool)
* Ein Modul für das Browser-basierte Konfigurationstool [[Webmin]]
* Ein Modul für das Browser-basierte Konfigurationstool [[Webmin]]
Zeile 40: Zeile 53:
* Der Browser-basierte [[LDAP Account Manager]] zur Verwaltung von [[Benutzerkonto|Benutzerkonten]]
* Der Browser-basierte [[LDAP Account Manager]] zur Verwaltung von [[Benutzerkonto|Benutzerkonten]]
* Möglichkeiten zur [[Ordnerfreigabe]] in den Benutzeroberflächen des [[KDE]]- und [[Gnome]]-Projektes
* Möglichkeiten zur [[Ordnerfreigabe]] in den Benutzeroberflächen des [[KDE]]- und [[Gnome]]-Projektes
* Verwaltungsoberflächen weiterführender Produkte wie z.&nbsp;B. [[Univention Corporate Server]], [[IServ]] und [[Zentyal]]
* Verwaltungsoberflächen weiterführender Produkte wie z.&nbsp;B.&nbsp; [[Univention Corporate Server]], [[IServ]] und [[Zentyal]]


== Verbreitung ==
== Verbreitung ==
Fast alle [[Linux-Distribution]]en enthalten Samba und bieten damit Zugriff auf Dateifreigaben in gemischten Netzwerken, in denen z.&nbsp;B. auch Windows eingesetzt wird. Auch in homogenen Unix-Netzwerken wird Samba, und damit das SMB-Protokoll, häufig statt des NFS-Protokolls eingesetzt.
Fast alle [[Linux-Distribution]]en enthalten Samba und bieten damit Zugriff auf Dateifreigaben in gemischten Netzwerken, in denen z.&nbsp;B.&nbsp; 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.&nbsp;B. [[Network Attached Storage|NAS]]) und Software-Produkte, die die Installation, Konfiguration und Verwaltung der Software erleichtern und deren Hersteller außerdem oft kommerzielle [[Support (Dienstleistung)|Unterstützung]] anbieten.<ref>{{Internetquelle |url=http://www.samba.org/samba/vendors/ |titel=Samba as part of Commercial Products |hrsg=Samba-Webseite |sprache=en |abruf=2014-04-01}}</ref><ref>{{Internetquelle |url=http://www.samba.org/samba/support/ |titel=Samba Commercial Support Providers |hrsg=Samba-Webseite |sprache=en |abruf=2014-04-01}}</ref>
Zusätzlich ist Samba oft Bestandteil weiterführender Hard- (z.&nbsp;B.&nbsp; [[Network Attached Storage|NAS]]) und Software-Produkte, die die Installation, Konfiguration und Verwaltung der Software erleichtern und deren Hersteller außerdem oft kommerzielle [[Support (Dienstleistung)|Unterstützung]] anbieten.


== Zugang zur Protokolldokumentation ==
== Zugang zur Protokolldokumentation ==
In den frühen 1990er-Jahren hatten Microsoft und das Samba-Team eine produktive Beziehung, bei der Schnittstellendaten ausgetauscht wurden.<ref>„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'')</ref> 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äische Union|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.
In den frühen 1990er-Jahren hatten Microsoft und das Samba-Team eine produktive Beziehung, bei der Schnittstellendaten ausgetauscht wurden. Dies änderte sich jedoch mit einer neuen Schnittstellen-Politik Microsofts ab Windows 95
* Am 20.&nbsp;Dezember 2007 jedoch wurde zwischen Microsoft und der „Protocol Freedom Information Foundation“ (PFIF) auf Anordnung der [[Europäische Union|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


{{Zitat
{{Zitat
  |Text=We are very pleased to be able to get access to the technical information necessary to continue to develop Samba as a Free Software project. Although we were disappointed the decision did not address the issue of patent claims over the protocols, it was a great achievement for the European Commission and for enforcement of antitrust laws in Europe. The agreement allows us to keep Samba up to date with recent changes in Microsoft Windows, and also helps other Free Software projects that need to interoperate with Windows.
  |Text=We are very pleased to be able to get access to the technical information necessary to continue to develop Samba as a Free Software project
* Although we were disappointed the decision did not address the issue of patent claims over the protocols, it was a great achievement for the European Commission and for enforcement of antitrust laws in Europe
* The agreement allows us to keep Samba up to date with recent changes in Microsoft Windows, and also helps other Free Software projects that need to interoperate with Windows
  |Sprache=en
  |Sprache=en
  |Autor=[[Andrew Tridgell]]
  |Autor=[[Andrew Tridgell]]
  |Quelle=20.&nbsp;Dezember 2007
  |Quelle=20.&nbsp;Dezember 2007
  |ref=<ref>[http://www.samba.org/samba/PFIF/ Samba and the PFIF.] Pressemitteilung des ''Samba-Team'', 20. Dezember 2007 (englisch); abgerufen am 25. Dezember 2010</ref>
  |ref=
  |Übersetzung=Wir sind hocherfreut, Zugang zu den technischen Informationen zu erhalten, die nötig sind, um Samba als ein freies Softwareprojekt weiterzuentwickeln. Obwohl wir enttäuscht waren, dass die Entscheidung nicht auf die Protokoll-Patentansprüche einging, stellt sie einen herausragenden Erfolg der EU-Kommission und für die Durchsetzung des Kartellrechts in Europa dar. Das Abkommen gestattet uns, Samba mit den neuesten Veränderungen von Microsoft Windows Schritt halten zu lassen, und hilft auch anderen freien Softwareprojekten, die mit Windows interagieren müssen.}}
  |Übersetzung=Wir sind hocherfreut, Zugang zu den technischen Informationen zu erhalten, die nötig sind, um Samba als ein freies Softwareprojekt weiterzuentwickeln
 
* Obwohl wir enttäuscht waren, dass die Entscheidung nicht auf die Protokoll-Patentansprüche einging, stellt sie einen herausragenden Erfolg der EU-Kommission und für die Durchsetzung des Kartellrechts in Europa dar
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.<ref>{{Internetquelle |url=http://www.samba.org/samba/news/developers/ms-patch.html |titel=Samba Notes Passing a Milestone |hrsg=Samba-Webseite |datum=2011-11-02 |sprache=en |abruf=2011-12-04}}</ref>
* Das Abkommen gestattet uns, Samba mit den neuesten Veränderungen von Microsoft Windows Schritt halten zu lassen, und hilft auch anderen freien Softwareprojekten, die mit Windows interagieren müssen.}}
 
== Sicherheit {{Anker|SambaCry}}==
Im Folgenden sind einige wesentliche geschlossene [[Sicherheitslücke]]n 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 Call]]s (RPC) Zugang zum [[Root-Konto]] erlaubten.<ref>[https://www.samba.org/samba/security/CVE-2012-1182 CVE-2012-1182] – A security announcement regarding a major issue with Samba 3.6.3 and lower.</ref>
* Im Mai 2017 wurde bekannt, dass ähnliche Sicherheitsprobleme wie bei Windows-Betriebssystemen, welche in Form von [[WannaCry]] ausgenutzt werden konnten, auch bei Samba bestanden.<ref>[https://securelist.com/sambacry-is-coming/78674/ SambaCry is coming.] securelist.com</ref> 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.<ref name="samba-release-4.6.4">{{Internetquelle |url=https://www.samba.org/samba/security/CVE-2017-7494.html |titel=CVE-2017-7494 – Remote code execution from a writable share |abruf=2017-07-23}}</ref> Dieser Fehler ist vor allem bei [[Network Attached Storage|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.<ref>[https://www.heise.de/security/meldung/SambaCry-Erste-Angriffe-auf-Linux-NAS-Boxen-gesichtet-3777456.html ''SambaCry: Erste Angriffe auf Linux-NAS-Boxen gesichtet''.] heise.de</ref>
 
== 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 ==
* {{Webarchiv |url=https://www.bsdwiki.de/FreeBSD_-_Samba_PDC |text=Samba PDC mit OpenLDAP |wayback=20120130140627}}
* [http://www.sambaxp.org/ Samba eXPerience, jährliche Entwicklerkonferenz] (englisch)
* {{dmoz|/World/Deutsch/Computer/Netzwerk/Protokolle_und_Dienste/CIFS/|Samba}}
 
== Einzelnachweise ==
<references />
 
[[Kategorie:Freie Dateitransfer-Software]]
[[Kategorie:Freie Server-Software]]
[[Kategorie:Daemon]]
 
= Samba  =


Der Name Samba leitet sich vom Netzwerkprotokoll [https://de.wikipedia.org/wiki/Server%20Message%20Block 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.
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.


Mit [https://de.wikipedia.org/wiki/Samba%20(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 [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS]) wird, wie auch in Windows 10, das Protokoll SMBv1 in der Grundeinstellung nicht mehr unterstützt.
== Sicherheit ==
Im Folgenden sind einige wesentliche geschlossene [[Sicherheitslücke]]n von Samba angeführt


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 [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/net_usershare/ net usershare] eingeführt. Dieses wird z. B. von den Dateimanagern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus] und [https://wiki.ubuntuusers.de/Dolphin/ Dolphin] verwendet.
* Im Jahr 2010 wurde bekannt, dass einige Versionen bis hin zu Samba 3.6.3 über den anonymen Gastzugriff mittels [[Remote Procedure Call]]s (RPC) Zugang zum [[Root-Konto]] erlaubten.
 
* Im Mai 2017 wurde bekannt, dass ähnliche Sicherheitsprobleme wie bei Windows-Betriebssystemen, welche in Form von [[WannaCry]] ausgenutzt werden konnten, auch bei Samba bestanden. Bei diesem Fehler, welcher in Anlehnung als ''SambaCry'' bezeichnet wird, war es möglich, injizierten Schadcode am betreffenden Samba-System auszuführen
Samba dient aber auch dazu, um als "Client" auf Freigaben anderer Rechner zuzugreifen. Das in Ubuntu und Xubuntu standardmäßig eingerichtete Netzwerk-Dateisystem [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/Samba_Client/Windows-Netzwerk/ Windows-Netzwerk] verwendet zusätzliche Protokolle und Server. Das ''GVfs'' wird standardmäßig von den Netzwerk-Managern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus], [https://wiki.ubuntuusers.de/Thunar/ Thunar] und anderen unterstützt. Außerdem gibt es für das ''GVfs'' ein spezielles graphisches Tool [https://wiki.ubuntuusers.de/Gigolo/ Gigolo]. In ähnlicher Weise verwenden in Kubuntu die Dateimanager Dolphin und Konqueror einen [https://wiki.ubuntuusers.de/KIO-Slaves/ KIO-Slave] zum Einbinden von SMB-Freigaben.
* Der Fehler betraf alle Samba-Versionen ab der Version 3.5.0 bis zu der im Mai 2017 aktuellen Version 4.6.4. Dieser Fehler ist vor allem bei [[Network Attached Storage|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.
Für höhere Ansprüche kann für SMB zusätzlich noch ein spezielles Netzwerk-Dateisystem [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/CUPS/ CUPS].


== Samba 4 ==
== Samba 4 ==
Seit [https://wiki.ubuntuusers.de/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


Seit [https://wiki.ubuntuusers.de/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.
; 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


=== Hinweis: ===
Die Bezeichnung "Server" bedeutet in diesem Zusammenhang also nicht, dass sich die Ausführungen nur auf eine Server-Version von Ubuntu beziehen


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.
== Installation ==
== Anwendung ==
=== Fehlerbehebung ===


Die Bezeichnung "Server" bedeutet in diesem Zusammenhang also nicht, dass sich die Ausführungen nur auf eine Server-Version von Ubuntu beziehen.
== Konfiguration ==
=== Dateien ===
<noinclude>
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/samba}}
==== Dokumentation ====
[[Samba-Server/Dokumentation]]


== Gliederung und Überblick ==
==== Links ====
 
===== Projekt =====
Das Themengebiet ''Samba'' wird auf mehreren Wiki-Seiten behandelt, die sich hinsichtlich der Ausführlichkeit und des Niveaus stark unterscheiden:
===== Weblinks =====
 
* https://wiki.ubuntuusers.de/Samba/
=== Einführende Seiten, Basics ===
* [https://wiki.ubuntuusers.de/Heimnetzwerk/ Heimnetzwerk] – Verschiedene Möglichkeiten, ein kleines privates Netzwerk einzurichten
 
* [https://wiki.ubuntuusers.de/MS-Windows_Integration/ MS-Windows Integration] – Hinweise zum Parallel-Betrieb von Linux und Windows auf einem Rechner oder in einem Netzwerk
* [https://wiki.ubuntuusers.de/Samba/ Samba] - Überblick und Grundbegriffe (diese Seite)
* [https://wiki.ubuntuusers.de/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
* [https://wiki.ubuntuusers.de/Samba_Server/ 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).
* [https://wiki.ubuntuusers.de/Internet_und_Netzwerk/ Internet und Netzwerk] – Wissenswertes zu Netzwerk- und Servertechnologien (Übersichtsseite)
* [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/ 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 [https://wiki.ubuntuusers.de/smbclient/ smbclient] und über ''GVfs'' auch [https://wiki.ubuntuusers.de/Nautilus/ Nautilus] und [https://wiki.ubuntuusers.de/Thunar/ Thunar].
* [https://wiki.ubuntuusers.de/gio_mount/ gio mount] Freigaben mit gio mount einbinden als ''GVfs'' (nicht nur für SMB-Freigaben)
 
* [https://www.samba.org/samba/ Die englischsprachige Hauptseite des Samba-Teams] 🇬🇧
 
* [https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller Samba_AD_DC_HOWTO] 🇬🇧 - 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] 🇩🇪 - Artikel von Stefan Kania in "Informatik aktuell", 06/2014
==== Freigaben bereitstellen ====
* [https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858 Stop Using SMB1] 🇬🇧 Ein Aufruf von Microsoft mit Erläuterungen
 
* [https://wiki.ubuntuusers.de/Samba_Server_GNOME/ Samba Server GNOME] - Mit dem Dateimanager, bevorzugt GNOME/[https://wiki.ubuntuusers.de/Nautilus/ Nautilus], persönliche oder allgemeine Freigaben für andere Rechner (Clients) einrichten.
* [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/ Samba Server/net usershare] - Freigaben als normaler Benutzer (ohne Root-Rechte) einrichten.
 
 
 
==== Auf Freigaben zugreifen ====
 
* [https://wiki.ubuntuusers.de/Samba_Client_GNOME/ 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 [https://wiki.ubuntuusers.de/Xfce/ Xfce] ([https://wiki.ubuntuusers.de/Xubuntu/ Xubuntu]) gültig.
* [https://wiki.ubuntuusers.de/Samba_Client_KDE/ Samba Client KDE] - Mit KDE auf Freigaben anderer Rechner (Server) zugreifen.
* [https://wiki.ubuntuusers.de/gio_mount/ gio mount] - Einbinden von Freigaben ins Dateisystem des Client mit dem Programm gio mount als ''GVfs''.
* [https://wiki.ubuntuusers.de/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.
* [https://wiki.ubuntuusers.de/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:* [https://wiki.ubuntuusers.de/Gigolo/ Gigolo] - Tool zum Einbinden von Freigaben als ''GVfs''.
* [https://wiki.ubuntuusers.de/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:* [https://wiki.ubuntuusers.de/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 ===
 
==== Benutzung von Domänenkonten ====
 
[https://wiki.ubuntuusers.de/Samba_Winbind/ 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 ====
 
[https://wiki.ubuntuusers.de/Samba_Client/Windows-Netzwerk/ Samba Client/Windows-Netzwerk] - Beschreibung, wie man auf die Freigaben per Dateimanager browst.


= TMP =
== Grundlagen und Begriffe ==
== Grundlagen und Begriffe ==
=== Freigaben ===
=== Freigaben ===
 
Dienste, die über das SMB-Protokoll im Netzwerk verteilt werden, nennt man [https://de.wikipedia.org/wiki/Dateifreigabe Freigaben]
Dienste, die über das SMB-Protokoll im Netzwerk verteilt werden, nennt man [https://de.wikipedia.org/wiki/Dateifreigabe Freigaben]. Damit ist in der Regel der Zugriff auf Dateien und Ordner im lokalen Netzwerk gemeint. Aber auch Drucker können freigegeben werden.
* 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 ====
 
"Allgemeine Freigaben" (nicht zu verwechseln mit "Öffentliche Freigaben" mit erlaubtem Gast-Zugriff) werden durch einen Eintrag in die Datei [https://wiki.ubuntuusers.de/smb.conf/ /etc/samba/smb.conf] mit [https://wiki.ubuntuusers.de/sudo/ Root-Rechten] erstellt
"Allgemeine Freigaben" (nicht zu verwechseln mit "Öffentliche Freigaben" mit erlaubtem Gast-Zugriff) werden durch einen Eintrag in die Datei [https://wiki.ubuntuusers.de/smb.conf/ /etc/samba/smb.conf] mit [https://wiki.ubuntuusers.de/sudo/ Root-Rechten] erstellt.


==== Persönliche Freigaben ====
==== Persönliche Freigaben ====
 
Samba bietet mit dem Werkzeug [https://wiki.ubuntuusers.de/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)
Samba bietet mit dem Werkzeug [https://wiki.ubuntuusers.de/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.
* Verschiedene Dateimanager verwenden net usershare, um Ordner und Dateien freizugeben


=== Netzwerk-Protokolle ===
=== Netzwerk-Protokolle ===
==== SMB ====
==== SMB ====
 
[https://de.wikipedia.org/wiki/Server_Message_Block SMB] ist ein auf NetBEUI/NetBIOS oder TCP/IP aufbauendes Protokoll, um Dienste im Netzwerk zu Verfügung zu stellen
[https://de.wikipedia.org/wiki/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.
* Es wurde ursprünglich von der Firma IBM entwickelt und bildet auch die Grundlage für neuere Samba-Versionen


==== SMBv1 (CIFS) ====
==== SMBv1 (CIFS) ====
 
Bereits im Jahre 1996 wurde SMB von Microsoft erweitert und in [https://de.wikipedia.org/wiki/CIFS CIFS] (Common Internet File System) umbenannt
Bereits im Jahre 1996 wurde SMB von Microsoft erweitert und in [https://de.wikipedia.org/wiki/CIFS 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 [https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS] wird SMBv1 in der Standard-Einstellung nicht mehr unterstützt.
* 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.&nbsp;B.&nbsp; '''cifs-utils'''), die sich auch für neuere SMB-Versionen eignen
* Seit Samba 4.11 (seit [https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS] wird SMBv1 in der Standard-Einstellung nicht mehr unterstützt


==== SMBv2 ====
==== SMBv2 ====
 
Beim Protokoll SMBv2 (Windows ab ''vista'') wurde nicht nur die Performance verbessert (z.&nbsp;B.&nbsp; höhere Übertragungs-Geschwindigkeit)
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.
* Es bietet auch eine bessere Sicherheit
* Einige Optionen fielen deshalb weg
* So wird mit SMBv2 vom Server z.&nbsp;B.&nbsp; keine Freigaben-Liste mehr angeboten
* Ab Version 3.6.0 bietet Samba neben SMBv1 optional auch das Protokoll SMBv2 an


==== SMBv3 ====
==== SMBv3 ====
 
Unter den zahlreichen neuen Optionen von SMBv3 ist wohl die "''Ende-zu-Ende-Kryptografie''" die wichtigste
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 [https://wiki.ubuntuusers.de/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.
* 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 [https://wiki.ubuntuusers.de/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) ====
==== Die cifs-UNIX-Extensions (gültig für SMBv1) ====
Um das CIFS-Protokoll auch für reine UNIX- bzw
* Linux-Netze neben [https://wiki.ubuntuusers.de/NFS/ 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


Um das CIFS-Protokoll auch für reine UNIX- bzw. Linux-Netze neben [https://wiki.ubuntuusers.de/NFS/ 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 [https://wiki.ubuntuusers.de/Rechte/ Besitz- und Zugriffsrechten] über [https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/ UID und GID]
 
* [https://de.wikipedia.org/wiki/Symbolische_Verknüpfung Symbolische] und [https://de.wikipedia.org/wiki/Harter_Link harte] Verknüpfungen ("symbolic links" und "hard links")
Mit den "cifs-UNIX-Extensions" werden im Einzelnen unterstützt:* Übertragung von [https://wiki.ubuntuusers.de/Rechte/ Besitz- und Zugriffsrechten] über [https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/ UID und GID]  
* [https://de.wikipedia.org/wiki/Zeitstempel Zeitstempel] ("timestamp", Datum/Uhrzeit) für Dateien und Ordner
* [https://de.wikipedia.org/wiki/Symbolische_Verknüpfung Symbolische] und [https://de.wikipedia.org/wiki/Harter_Link harte] Verknüpfungen ("symbolic links" und "hard links")  
* [https://de.wikipedia.org/wiki/Zeitstempel Zeitstempel] ("timestamp", Datum/Uhrzeit) für Dateien und Ordner  
* weitere Daten der [https://de.wikipedia.org/wiki/Unix-Dateirechte UNIX-Datenstruktur]
* weitere Daten der [https://de.wikipedia.org/wiki/Unix-Dateirechte UNIX-Datenstruktur]


 
Um die cifs-UNIX-Extensions nutzen zu können, müssen die Freigaben auf dem Client mit dem [https://wiki.ubuntuusers.de/mount.cifs/ CIFS vfs] (nicht ''GVfs''!) eingebunden sein oder über ein [https://wiki.ubuntuusers.de/Terminal/ Terminal] mittels [https://wiki.ubuntuusers.de/Samba_Client/smbclient/ smbclient] angesprochen werden
 
Um die cifs-UNIX-Extensions nutzen zu können, müssen die Freigaben auf dem Client mit dem [https://wiki.ubuntuusers.de/mount.cifs/ CIFS vfs] (nicht ''GVfs''!) eingebunden sein oder über ein [https://wiki.ubuntuusers.de/Terminal/ Terminal] mittels [https://wiki.ubuntuusers.de/Samba_Client/smbclient/ smbclient] angesprochen werden.


=== Hinweis: ===
=== Hinweis: ===
 
Die ursprünglich für das Protokoll SMBv1 entwickelten UNIX Erweiterungen unterstützten die [https://wiki.ubuntuusers.de/ACL/ POSIX-ACL] nicht und erwiesen sich zudem als unsicher
Die ursprünglich für das Protokoll SMBv1 entwickelten UNIX Erweiterungen unterstützten die [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/Rechte/ UNIX-Dareirechten] auch die [https://wiki.ubuntuusers.de/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).
* Deshalb wurden sie nicht in das Nachfolge-Protokoll SMBv2 übernommen
* Eine völlige Neubearbeitung, die neben den [https://wiki.ubuntuusers.de/Rechte/ UNIX-Dareirechten] auch die [https://wiki.ubuntuusers.de/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 ====
==== Windows- und Posix-ACL ====
Die cifs-UNIX-Extensions arbeiten mit [https://wiki.ubuntuusers.de/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 [https://de.wikipedia.org/wiki/Security%20Identifier SID] und eigenen [https://de.wikipedia.org/wiki/Access%20Control%20List ACL], die mit den in Ubuntu/Linux verwendeten [https://wiki.ubuntuusers.de/ACL/ POSIX-ACL] leider nicht identisch sind
* Deshalb ist eine Kommunikation mit Windows über die cifs-UNIX-Extensions grundsätzlich unmöglich


Die cifs-UNIX-Extensions arbeiten mit [https://wiki.ubuntuusers.de/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 [https://de.wikipedia.org/wiki/Security%20Identifier SID] und eigenen [https://de.wikipedia.org/wiki/Access%20Control%20List ACL], die mit den in Ubuntu/Linux verwendeten [https://wiki.ubuntuusers.de/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
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 ====
==== WINS ====
 
Bei WINS handelt es sich um den "Windows Internet Naming Service" und damit um die Implementierung von NetBIOS über TCP von Microsoft
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 [https://wiki.ubuntuusers.de/Samba_Winbind/ Samba Winbind].
* Auch wenn der Name anderes vermuten lässt, läuft dieser Dienst ausschließlich lokal
* Viele Informationen und weitere Details enthält der Artikel [https://wiki.ubuntuusers.de/Samba_Winbind/ Samba Winbind]


=== Virtuelle Netzwerk-Dateisysteme ===
=== 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 [https://wiki.ubuntuusers.de/mount.cifs/ mount.cifs]
* Es ist im Paket '''cifs-utils''' enthalten


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 [https://wiki.ubuntuusers.de/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.&nbsp;B.&nbsp; die Dateimanager [https://wiki.ubuntuusers.de/Nautilus/ Nautilus], [https://wiki.ubuntuusers.de/Caja/ Caja] und [https://wiki.ubuntuusers.de/Thunar/ Thunar] oder das Tool [https://wiki.ubuntuusers.de/Gigolo/ Gigolo] nicht das ''CIFS vfs'', sondern das [https://wiki.ubuntuusers.de/gio_mount/ GVfs]
Es gibt auch andere Netzwerk-Dateisysteme, mit denen man auf SMB-Freigaben zugreifen kann. So verwenden z. B. die Dateimanager [https://wiki.ubuntuusers.de/Nautilus/ Nautilus], [https://wiki.ubuntuusers.de/Caja/ Caja] und [https://wiki.ubuntuusers.de/Thunar/ Thunar] oder das Tool [https://wiki.ubuntuusers.de/Gigolo/ Gigolo] nicht das ''CIFS vfs'', sondern das [https://wiki.ubuntuusers.de/gio_mount/ GVfs].


=== Active Directory ===
=== Active Directory ===
Das [https://de.wikipedia.org/wiki/Active_Directory Active Directory] (AD) ist ein [https://de.wikipedia.org/wiki/Verzeichnisdienst 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


Das [https://de.wikipedia.org/wiki/Active_Directory Active Directory]® (AD) ist ein [https://de.wikipedia.org/wiki/Verzeichnisdienst 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
 
Die Konfiguration eines Samba-Servers als AD-Controller sprengt jedoch den Rahmen dieses Wiki.
 
== Links ==
 
=== Intern ===
 
* [https://wiki.ubuntuusers.de/Heimnetzwerk/ Heimnetzwerk] – Verschiedene Möglichkeiten, ein kleines privates Netzwerk einzurichten.
* [https://wiki.ubuntuusers.de/MS-Windows_Integration/ MS-Windows Integration] – Hinweise zum Parallel-Betrieb von Linux und Windows auf einem Rechner oder in einem Netzwerk.
* [https://wiki.ubuntuusers.de/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
* [https://wiki.ubuntuusers.de/Internet_und_Netzwerk/ Internet und Netzwerk] – Wissenswertes zu Netzwerk- und Servertechnologien (Übersichtsseite).
* [https://wiki.ubuntuusers.de/gio_mount/ 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] 🇬🇧
* [https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller Samba_AD_DC_HOWTO] 🇬🇧 - 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] 🇩🇪 - 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] 🇬🇧 Ein Aufruf von Microsoft mit Erläuterungen
 
 
 
https://wiki.ubuntuusers.de/Samba/
 
= Samba Client smbclient  =
 
'''smbclient''' ist ein Konsolenclient für [https://wiki.ubuntuusers.de/Samba/#SMB SMB/CIFS]-Freigaben. Damit ist auch ein Zugriff auf Freigaben möglich, ohne diese in das Dateisystem einhängen zu müssen. Ursprünglich als Test- und Debugging-Tool konzipiert, ist smbclient auch zu einer universellen [https://wiki.ubuntuusers.de/Shell/ Shell] geworden, deren Befehlsvorrat dem von ftp[https://wiki.ubuntuusers.de/Samba_Client_smbclient/#source-3 [3]] vergleichbar ist. smbclient ist oft die erste Hilfe, wenn mit [https://wiki.ubuntuusers.de/Samba/ Samba] Probleme auftreten. Es ist aber auch dann von Vorteil, wenn man nur schnell und unkompliziert auf der Konsole eine Datei von Samba oder Windows hoch- oder herunterladen möchte. Oder einfach, wenn man allgemein dem direkten Weg mit Konsole oder Terminal den Vorzug vor aufwändigen grafischen Hilfsprogrammen gibt.
 
Die wichtigsten Operationen, die sich mit smbclient ausführen lassen, sind: * Suche und Beseitigen von Fehlern
* Übermitteln von Kommandos an einen Server
* Interaktiver Datenaustausch (ähnlich ftp)
* Interaktives Drucken mit über Samba freigegebenen Druckern
* Austausch von Nachrichten im Netzwerk
 
 
 
Grob lässt sich die Anwendung von smbclient in zwei Bereiche einteilen: # Eingabe und Übermittlung von Kommandos
# Arbeiten mit einer Freigabe (Share) über die smbclient-Shell
 
 
 
Es würde den Rahmen eines Wiki-Artikels sprengen, auf alle Optionen und Befehle von smbclient einzugehen. Deshalb werden hier nur einige gängige Beispiele aufgeführt.
 
Hinweis: Der Begriff Samba Server wird im folgenden als Synonym für Freigaben des cifs Protokolls verwendet.
 
== Installation ==
 
smbclient befindet sich im Paket* '''smbclient'''
 
 
 
Befehl zum Installieren der Pakete:
 
sudo apt-get install  smbclient
 
Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [http://apt:/ smbclient]
 
== Kommandos eingeben ==
 
Über smbclient lassen sich sowohl Kommandos an den Client selbst als auch an einen Samba Server übergeben. Die genaue Syntax variiert je nach Kommando, entspricht aber im Wesentlichen folgendem Schema:
 
<nowiki># allgemein:</nowiki>
smbclient Option Zusatzangabe
<nowiki># Beispiel:</nowiki>
smbclient -L //IP-des-Servers/Daten
smbclient -L //DNS-Hostname-des-Servers/Daten
 
Die Option legt das Kommando fest. Sie kann (wie üblich) in Kurz- oder Langform angegeben werden. Die Zusatzangabe kann ein Parameter und/oder der Adressat des Kommandos sein und ggf. noch weitere sekundäre Optionen enthalten. Manche Optionen sind auch nur in Verbindung mit anderen Kommandos möglich.
 
Nach der Eingabe der Kommando-Zeile erfolgt eine verdeckte Abfrage des Samba-Passworts. Mit der Zusatzoption -N lässt sich die Passwort-Abfrage unterdrücken. Gibt man kein Passwort ein, dann wird das Kommando anonym übermittelt. Viele, aber nicht alle Kommandos können anonym ausgeführt werden. Nach der Ausführung des Kommandos kehrt smbclient automatisch wieder in die Linux-Shell zurück, was am Prompt zu erkennen ist.
 
Im Folgenden werden einige häufig gebrauchte Kommandos beschrieben.
 
=== Informationen eines Samba Servers abfragen ===
 
=== Hinweis: ===
 
Ab '''Samba 4.7.0''' / [https://wiki.ubuntuusers.de/Bionic_Beaver/ Bionic Beaver] versucht '''smbclient''' die Verbindung im Dialekt SMB3_11 aufzubauen. Sofern der Samba Server nur Dialekte ab SMB2 akzeptiert, funktioniert das Browsing der Workgroup nicht mehr (<tt>smbclient -L <server></tt>) (Fehlermeldung: Failed to connect with SMB1 – no workgroup available). Die Shares werden jedoch angezeigt.
 
Um die Freigaben (Shares) eines Samba Servers zu erfragen, kann folgender Befehl genutzt werden:
 
<nowiki># allgemein:</nowiki>
smbclient -L //Server
<nowiki># Beispiele:</nowiki>
smbclient -L //notebook/
smbclient -L //192.168.1.111/
smbclient -N -L //notebook/
 
Die Abfrage des Servers ist auch ohne Anmeldung (anonym) möglich. Unter Umständen sind dann aber nicht alle Freigaben zu sehen. Für den Server kann der Rechnername (netbios name) oder die IP angegeben werden. Man erhält dann eine Ausgabe folgender Art:
 
vergrößern
 
<nowiki># mit Serverseitig aktiviertem Dialekt SMB1:</nowiki>
 
ubuntu@ubuntu:~$ smbclient -L localhost
WARNING: The "syslog" option is deprecated
Enter WORKGROUP\ubuntu's password:
 
        Sharename      Type      Comment
        <nowiki>--------- </nowiki>      <nowiki>---- </nowiki>    <nowiki>-------</nowiki>
        print$          Disk      Printer Drivers
        demo            Disk     
        IPC$            IPC      IPC Service (ubuntu server (Samba, Ubuntu))
Reconnecting with SMB1 for workgroup listing.
 
        Server              Comment
        <nowiki>--------- </nowiki>          <nowiki>-------</nowiki>
 
        Workgroup            Master
        <nowiki>--------- </nowiki>          <nowiki>-------</nowiki>
        WORKGROUP            UBUNTU
 
<nowiki># ohne Serverseitig aktiviertem Dialekt SMB1:</nowiki>
 
ubuntu@ubuntu:~$ smbclient -L localhost
WARNING: The "syslog" option is deprecated
Enter WORKGROUP\ubuntu's password:
 
        Sharename      Type      Comment
        <nowiki>--------- </nowiki>      <nowiki>---- </nowiki>    <nowiki>-------</nowiki>
        print$          Disk      Printer Drivers
        demo            Disk     
        IPC$            IPC      IPC Service (ubuntu server (Samba, Ubuntu))
Reconnecting with SMB1 for workgroup listing.
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Failed to connect with SMB1 -- no workgroup available
 
=== Anmeldung mit Benutzername und Kennwort ===
 
Mit der Option <tt>-U</tt> kann man sich persönlich anmelden. Das Kommando zur Anmeldung wird dem auszuführenden Kommando vorangestellt:
 
<nowiki># allgemein:</nowiki>
smbclient -U benutzername -L //Server
<nowiki># Beispiel:</nowiki>
smbclient -U Simon -L //notebook/
 
Der angegebene Benutzername muss nicht mit dem aktuellen Benutzernamen auf dem Client übereinstimmen, muss aber auf dem Server in der Samba-Benutzerdatenbank eingetragen sein (mittels <tt>smbpasswd</tt>).
 
== Arbeiten mit der smbclient-Shell ==
 
Mit der Befehlszeile
 
<nowiki># allgemein</nowiki>
smbclient //Server/Freigabe
<nowiki># Beispiele</nowiki>
smbclient //notebook/Daten
smbclient //192.168.1.111/Daten
 
kann man sich mit einer Freigabe auf dem angegebenen Server verbinden und dort eine smbclient-Shell öffnen. Man erhält dann eine Ausgabe folgender Art:
 
ubuntu@ubuntu:~$ smbclient //localhost/demo
WARNING: The "syslog" option is deprecated
Enter WORKGROUP\ubuntu's password:
Try "help" to get a list of possible commands.
smb: \>
 
Verzichtet man auf die Eingabe eines Passwortes, erfolgt die Anmeldung anonym, und man hat dann nur die Rechte, die bei der Freigabe einem Gast zukommen. Es ist aber auch möglich, sich mit Benutzername und Kennwort anzumelden:
 
smbclient -U Simon //notebook/Daten
 
Der Prompt <tt>smb: \></tt> macht deutlich, dass Samba eine Verbindung zwischen Linux und Windows herstellen möchte. In der smbclient-Shell ist für Pfadnamen sowohl die Windows-Syntax mit Backslash (\) als auch die Linux-Syntax mit Slash (/) zulässig.
 
=== Häufig benutzte Shell-Befehle ===
 
* Folgende Befehle haben in der smbclient-Shell eine entsprechende Bedeutung wie in DOS oder in der Linux-Shell (Bash): <tt>cd, del, dir, history, ls, md, mkdir, more, rd, rm, rmdir</tt>.
* <tt>get entfernter-Dateiname [lokaler-Dateiname]</tt>: kopiert eine Datei von der Freigabe auf den Client (Download). Fehlt die Angabe für <tt>lokaler-Dateiname</tt>, so wird der Dateiname beibehalten.
* <tt>put lokaler-Dateiname [entfernter-Dateiname]</tt>: kopiert eine Datei vom Client auf die Freigabe (Upload). Fehlt die Angabe für <tt>entfernter-Dateiname</tt>, so wird der Dateiname beibehalten.
* <tt>setmode Dateiname [+|\-]rsha</tt>: setzt DOS-Dateiattribute (wie DOS-Befehl <tt>attrib</tt>).
* <tt>exit, quit</tt>: Rückkehr zur Linux-Shell (Bash).
 
 
 
=== Kopieren ganzer Ordner ===
 
Nach dem Verbinden auf die Freigabe folgende Befehle ausführen, um ganze Ordner zu kopieren: * <tt>prompt</tt> deaktiviert die Kopiernachfrage für jede Datei
* <tt>recurse</tt> aktiviert das rekursive Durchsuchen von ganzen Ordnern
* <tt>mput [Ordnername]</tt> zum Hochladen eines Ordners
* <tt>mget [Ordnername]</tt> zum Herunterladen eines Ordners
 
 
 
Ein erneutes Eingeben von <tt>recurse</tt> bzw. <tt>prompt</tt> stellt die Standardeinstellungen wieder her.
 
=== Besonderheiten der Syntax ===
 
==== Leerzeichen in Namen oder Parametern ====
 
Weil in Dateipfaden wahlweise Slash (/) oder Backslash (\) zulässig sind, kann ein Backslash nicht - wie in Linux üblich - zum "Escapen" von Leerzeichen oder anderen besonderen Zeichen verwendet werden. Zeichenketten, die solche Zeichen enthalten, müssen deshalb in (doppelte) Anführungszeichen gesetzt werden (Beispiel: <tt>cd \Daten\"neue Datei"</tt>).
 
==== Syntaxfehler ====
 
Bei Syntaxfehlen verschiedener Art erfolgt in der smbclient-Shell meist die wenig informative Fehlermeldung
 
Not enough '\' characters in service
 
Es lohnt sich, zu überlegen, ob der Fehler nicht vielleicht von ganz anderer Art ist.
 
== Verwandte Befehle ==
 
Mit im Paket '''smbclient''' enthalten sind u. a. noch folgende Routinen: * <tt>smbspool</tt> - Sendet eine zu druckende Datei an einen Samba-Drucker
* <tt>smbtar</tt> - Fügt Samba-Freigaben zu einem Archiv ("Tarball") hinzu. Lässt sich z.B. für Backup verwenden.
 
 
 
Einzelheiten zu diesen Befehlen finden sich in den entsprechenden [https://wiki.ubuntuusers.de/man/ Manpages].
 
== Links ==
 
* [https://www.samba.org/samba/docs/current/man-html/smbclient.1.html smbclient.1.html] 🇬🇧 - Manpage in lesbarer Formatierung
* [https://wiki.ubuntuusers.de/FTP/ FTP] - ein Netzwerkprotokoll zur Übertragung von Dateien
* [https://wiki.ubuntuusers.de/Samba/ Samba] Grundlegende Informationen mit vielen weiteren Links
** [https://wiki.ubuntuusers.de/mount.cifs/ mount.cifs] - Einbinden von Windows- und Samba-Freigaben ins lokale Dateisystem
** [https://wiki.ubuntuusers.de/Samba_Client_GNOME/ Samba Client GNOME] – Einbinden von SMB-Freigaben mittels Dateimanager im GVfs
 
 
 
https://wiki.ubuntuusers.de/Samba_Client_smbclient/
 
 
= smb.conf  =
 
Seit [https://wiki.ubuntuusers.de/Trusty/ Ubuntu 14.04 LTS] sind statt der bisherigen Versionen 3.xx ausschließlich Samba-Versionen 4.xx in den Paketquellen enthalten. Seither kann ein Samba-Server entweder als eigenständiger "Stand-Alone-Server" oder aber als ein zum Microsoft Active Directory® (AD) kompatibler Domain Controller (DC) installiert werden.
 
=== Hinweis: ===
 
Dieser Artikel bezieht sich nicht auf die Einrichtung eines AD-DC Controllers. Dies geschieht auf ganz andere Weise. Hierfür wird auf das [https://wiki.samba.org/index.php/Main_Page Samba-Wiki] 🇬🇧 verwiesen.
 
Das Kernstück jeder klassischen Samba-Installation ist die Konfigurationsdatei '''/etc/samba/smb.conf'''. Über diese lässt sich Samba [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/#source-4 [4]] sehr umfangreich und detailliert einrichten. Die meisten der Einträge beziehen sich auf einen eigenständigen Samba-Server; einige davon sind aber auch für Samba-Clients von Bedeutung. Der Aufbau dieser Konfigurationsdatei wurde fast unverändert von der Samba Version 3 in die Version 4.xx übernommen.
 
Die Datei '''smb.conf''' teilt sich in mehrere Sektionen und muss mit einem Editor [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/#source-2 [2]] mit Root-Rechten [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/#source-3 [3]] bearbeitet werden. Die graphischen Hilfsprogramme ''system-config-samba'', ''gadmin samba'' und das WEB-Interface ''Swat'' sind veraltet und sollten nicht mehr verwendet werden.
 
=== Hinweis: ===
 
Bei der Installation von Samba wird automatisch eine Kopie der Standard-Konfigurationsdatei unter '''/usr/share/samba/smb.conf''' abgelegt. Diese kann bei Bedarf von dort zurück kopiert werden, um den Ausgangszustand wieder herzustellen.
 
Ohne Anspruch auf Vollständigkeit werden im folgenden die wichtigsten Optionen - die man normalerweise beachten muss, um einen Samba-Server einzurichten - erklärt. Grundlagen sind dem Artikel [https://wiki.ubuntuusers.de/Samba_Server/ Samba Server] zu entnehmen, weitere Details zu den verfügbaren Optionen sind über den Abschnitt [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/#Links Links] zu finden.
 
Die Gesamtheit aller Einstellungen einschließlich der Standardwerte erhält man im Terminal mit dem Befehl <tt>testparm -vs</tt>, der Übersicht halber gezielt auf eine Zeichenfolge ausgerichtet.Beispiel:
 
testparm -vs | grep usershare
 
== Aufbau der Datei smb.conf ==
 
=== Hinweis: ===
 
Kommentare in der '''/etc/samba/smb.conf''' sind Zeilen, welche mit "<tt><nowiki>#</nowiki></tt>" oder "<tt><nowiki>;</nowiki></tt>" beginnen; was hinter diesem Zeichen steht, wird von Samba ignoriert. Viele Einstellungen sind unter Ubuntu standardmäßig auskommentiert; es genügt in der Regel, diese Kommentarzeichen zu entfernen, um eine bestimmte Funktion zu nutzen.
 
=== Globale Einstellungen ===
 
In der globalen Sektion werden die allgemeinen Einstellungen und Sicherheitsoptionen festgelegt. Üblicherweise müssen nur wenige Werte angepasst werden. Die globale Sektion beginnt mit
 
 
{| style="border-spacing:0;width:2.342cm;"
|- style="border:none;padding:0.049cm;"
|| 1
|| [global]
 
 
|-
|}
==== Grundeinstellungen ====
 
 
{| style="border-spacing:0;width:9.751cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
||  workgroup = Arbeitsgruppe
  server string = %h server (Samba, Ubuntu)
|-
|}
Hierbei gibt der Parameter <tt>workgroup</tt> die Arbeitsgruppe bzw. Domäne an. Prinzipiell ist er frei wählbar, aber bei der Benennung sollte auf deutsche Umlaute und Leerzeichen verzichtet sowie nicht mehr als 11 Zeichen verwendet werden. Der Parameter <tt>server string</tt> steht für den Rechnernamen und ist ebenfalls frei wählbar. Allerdings sollte auch hier auf deutsche Umlaute verzichtet werden. Die Länge des über die Variable <tt>%h</tt> übergebenen Rechnernamens darf höchstens 15 Byte betragen.
 
==== Protokolle ====
 
Seit Samba 3.6 steht nun optional auch SMBv2 und seit Samba 4.1 auch SMBv3 als Netzwerk-Protokoll zur Verfügung. Bis Samba 4.6 (bis September 2017) blieb aber SMBv1 Standard; seither ist das höchste verfügbare Protokoll Standard. Seit Samba 4.11 ([https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS]) wird nun sowohl für Server als auch für Clients das Protokoll SMBv1 in der Grundeinstellung nicht mehr unterstützt. Es gilt als veraltet, langsam und unsicher.
 
Den Rahmen für die unterstützten Protokolle legen folgende Zeilen im Teil <tt>[global]</tt> fest:Beispiel (Grundeinstellung in Ubuntu 20.04 LTS):
 
  client max protocol = default
  client min protocol = SMB2_02
  server max protocol = SMB3
  server min protocol = SMB2_02
 
Etwas überraschend ist, dass hier auch Einstellungen für den Samba-Client über die Datei '''smb.conf''' vorgenommen werden. Eine solche ist auf einem Client nicht unbedingt vorhanden. Nötigenfalls muss für die Einträge mittels
 
sudo touch /etc/samba/smb.conf
 
eigens eine leere Datei angelegt werden.
 
Eine Verbindung zwischen Server und Client ist nur dann möglich, wenn sich deren Protokoll-Bereiche überlappen. Aus dem Überlappungsbereich wird bei einer Verbindungs-Anfrage automatisch das höchstmögliche Protokoll ausgewählt.
 
=== Achtung! ===
 
Das Protokoll SMBv1 (cifs, NT1) gilt als unsicher und sollte in Netzwerken mit sensiblen Daten oder unkontrolliertem Zugang nicht mehr verwendet werden.
 
==== WINS Support ====
 
 
{| style="border-spacing:0;width:6.364cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
||  wins support = no
  wins server = 192.168.1.1
|-
|}
Wichtig ist auch die Angabe, ob der Rechner als ''"WINS-Server"'' fungiert oder einen anderen Rechner als WINS-Server nutzen soll. [https://de.wikipedia.org/wiki/Windows_Internet_Naming_Service WINS] (Windows Internet Name Service) ist ein von Microsoft entwickeltes System zur dynamischen Auflösung von NetBIOS-Namen.
 
Standardmäßig ist die WINS-Unterstützung von Samba unter Ubuntu deaktiviert.
 
Um Samba als WINS-Server zu betreiben, genügt es <tt>wins support</tt> auf <tt>yes</tt> zu setzen. Soll Samba ein WINS-Client sein, müssen <tt>wins support</tt> auf <tt>no</tt> sowie <tt>wins server</tt> auf die IP vom WINS-Server gesetzt werden.
 
=== Hinweis: ===
 
Besitzt man einen Rechner mit einem Windows-Server-Betriebssystem (also z.B. Windows 2016 bzw. 2019 Server), so sollte man diesen als WINS-Server nutzen. Ist der Samba-Server jedoch der einzige Rechner im Netz, der permanent betrieben wird, so sollte man die Funktion als WINS-Server mit <tt>wins support = yes</tt> aktivieren.
 
Es ist dringend angeraten, in einem Netzwerk nur einen WINS-Server zu betreiben. Die Einstellung <tt>wins support = yes</tt> sollte daher nur auf einem einzigen Rechner gesetzt werden!
 
Mehr zum Thema Samba als WINS-Server findet sich in der [https://sourceforge.net/projects/gertranssmb3.berlios/files Dokumentation] 🇩🇪 .
 
Auch wenn im Netzwerk kein WINS-Server aktiv ist, versuchen Samba-Clients schrittweise auf verschiedenen Wegen, Netbios-Namen aufzulösen. Eventuell ist es nötig, auf den einzelnen Clients die Reihenfolge, in der dies geschieht, über die Option <tt>name resolve order</tt> anzupassen. Standardmäßig ist
 
 
{| style="border-spacing:0;width:10.386cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  name resolve order = lmhosts host wins bcast
|-
|}
eingestellt.
 
==== Benutzerauthentifizierung ====
 
Der Parameter <tt>security</tt> von Samba 3.xx wird in Samba 4 normalerweise nicht mehr von Hand verändert. Die Standard-Einstellung ist
 
security = auto
 
Damit wird <tt>security</tt> automatisch an die Einstellung von <tt>server role</tt> angepasst. Hier sind zwei Werte von Interesse:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| <tt>standalone server</tt>
|| Standard-Einstellung; entspricht dem bisherigen <tt>security = user</tt>
|- style="border:none;padding:0.049cm;"
|| <tt>member server</tt>
|| entspricht dem bisherigen <tt>security = domain</tt>
|-
|}
Verschlüsselte Passwörter sind durch <tt>encrypt passwords = true</tt> standardmäßig aktiviert.
 
Mit <tt>valid users</tt> bzw. <tt>invalid users</tt> kann man optional festlegen, welche Benutzer sich (nicht) anmelden dürfen.
 
=== Hinweis: ===
 
Mit Name und ggf. Passwort dürfen sich bei Samba nur Benutzer anmelden, für welche auch ein Samba-Account mittels <tt>smbpasswd</tt> eingerichtet wurde!
 
==== Gast-Zugang ====
 
Auf durch eine der folgenden Zeilen gekennzeichnete Freigaben kann auch ohne Anmeldung mit Benutzername und Passwort zugegriffen werden (Gast-Zugang):
 
 
{| style="border-spacing:0;width:4.036cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
||  public = yes
  guest ok = yes
|-
|}
Welchen Benutzern der Gast-Zugang erlaubt ist, legt die Option <tt>map to guest</tt> fest. Die Zeile
 
 
{| style="border-spacing:0;width:5.941cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  map to guest = bad user
|-
|}
bewirkt, dass jeder Benutzer, der auf dem Server einen System-Account, aber keinen eigenen Samba-Account hat, als Gast zugreifen darf. Die Zeile
 
 
{| style="border-spacing:0;width:5.729cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  guest account = nobody
|-
|}
legt fest, mit welcher Identität Gäste dann zugreifen. Der virtuelle Benutzer <tt>nobody</tt> ist auf jedem Ubuntu-System standardmäßig eingerichtet und wird auch von Windows verwendet.
 
=== Achtung! ===
 
Der Gast-Zugang stellt immer ein gewisses Sicherheitsrisiko dar und sollte ausschließlich in Netzwerken geschehen, bei denen man sicher ist, dass kein Missbrauch mit den freigegebenen Daten möglich ist.
 
Bei Rechnern, die abwechselnd mit verschiedenen Netzwerken verbunden werden (z.B. Laptops) wird dringend empfohlen, auf den Gast-Zugang zu verzichten.
 
==== cifs UNIX Extensions ====
 
 
{| style="border-spacing:0;width:5.517cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  unix extensions = yes
|-
|}
Dieser Parameter ermöglicht es, mittels [https://wiki.ubuntuusers.de/mount.cifs/ cifs-vfs] oder [https://wiki.ubuntuusers.de/Samba_Client_smbclient/ smbclient] auch auf dem Client die Original Dateirechte und Zeitstempel des Servers zu sehen, zu verwenden und ggf. auch zu verändern. Standardmäßig ist diese Option aktiviert; sie sollte nur bei Problemen mit diesen Extensions (z.B. verschiedene UID und GID für gleiche Benutzer auf Server und Client) deaktiviert werden.
 
Die Einstellung kann nur für den gesamten Server geändert werden; unterschiedliche Einstellungen für einzelne Freigaben sind vom Server aus nicht möglich.
 
Auch wenn sie aktiviert sind, bleiben die UNIX Extensions weitgehend unwirksam für Freigaben auf FAT-Partitionen, da diese keine UNIX-Dateirechte speichern können. Für Freigaben auf [https://wiki.ubuntuusers.de/NTFS/ NTFS]-Partitionen sind sie nur dann voll wirksam, wenn diese auf dem Server mit der Option <tt>permissions</tt> eingebunden sind. Von Windows-Clients werden die UNIX-Extensions ganz ignoriert.
 
=== Hinweis: ===
 
Die cifs UNIX Extensions haben Vorrang vor anderen Direktiven, die UNIX-Dateirechte festlegen. Deshalb funktionieren bei aktivierten UNIX Extensions z.B. die Direktiven <tt>force user</tt> und <tt>force group</tt> sowie <tt>force directory mode</tt> und <tt>force create mode</tt> nicht!
 
==== Windows-ACLs ====
 
Seit der Version 4.0 erlaubt es Samba nun auch, die Konfiguration von Freigaben größtenteils von einem Windows-Client aus vorzunehmen. Dies wird sogar empfohlen, denn es ist oft der einfachste Weg, die Zugriffsrechte für neu erstellte Dateien und Ordner gleich auf dem Windows-Client mittels [https://de.wikipedia.org/wiki/Access_Control_List Windows-ACLs] festzulegen. Diese werden dann mittels Samba auf dem Server in [https://wiki.ubuntuusers.de/ACL/ POSIX-ACLs] übertragen. Natürlich funktioniert dies nur dann, wenn das Dateisystem des Servers die POSIX-ACLs unterstützt (Mount-Option <tt>acl</tt>, seit [https://wiki.ubuntuusers.de/Precise/ Ubuntu 12.04] bei ext3 und ext4 Standard).
 
=== Experten-Info: ===
 
Da sich POSIX- und Windows-ACL nicht völlig deckungsgleich ineinander abbilden lassen, ist eine vollständige Berücksichtigung sämtlicher in Windows-ACL möglicher Angaben durch Samba nur dann möglich, wenn das Linux-Dateisystem mit der zusätzlichen Mount-Option <tt>user_xattr</tt> eingebunden ist und im Teil <tt>[global]</tt> von '''smb.conf''' die Zeilen <tt>vfs objects = acl_xattr</tt> und <tt>map acl inherit = Yes</tt> eingetragen sind.
 
Die auf diese Weise festgelegten ACLs können die über die Optionen <tt>directory mask</tt>, <tt>create mask</tt>, <tt>force directory mode</tt> und <tt>force create mode</tt> festgelegten UNIX-Dateirechte überdecken.
 
Alternativ lassen sich die Zugriffsrechte nach wie vor in klassischer Weise auf dem Server über POSIX-ACLs und mit smb.conf-Parametern festlegen.
 
==== Zeit-Synchronisation ====
 
 
{| style="border-spacing:0;width:4.671cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  time server = yes
|-
|}
Damit ist es möglich das Windows Clients ihre Zeit mit der vom Samba Server abgleichen. (Ähnlich dem [https://wiki.ubuntuusers.de/Systemzeit/#Zeitsynchronisation-NTP NTP Verfahren])
 
Testen kann man es unter Windows mit:
 
net time \\192.168.xxx.xxx /set /yes
 
(IP Adresse muss natürlich angepasst werden.)
 
==== Usershare-Vorgaben ====
 
Samba erlaubt es auch gewöhnlichen Benutzern, die der [https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/ Gruppe] sambashare angehören, über [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/ net usershare] ihre eigenen Dateien ohne Root-Rechte freizugeben.
 
Mit <tt>net usershare</tt> erstellte ''Persönliche Freigaben'' erscheinen nicht in der Datei '''smb.conf''' und werden dort auch nicht konfiguriert. Die allgemeinen Bedingungen für solche persönlichen Freigaben werden aber hier festgelegt:
 
 
{| style="border-spacing:0;width:16.947cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
3
4
5
6
7
8
|| <nowiki># Der Eigentümer darf auch Anderen den Zugriff auf seine Freigaben gestatten.</nowiki>
  usershare allow guests = Yes
<nowiki># Maximalzahl für persönliche Freigaben (100 = Default; 0 = gar keine).</nowiki>
  usershare max shares = 100
<nowiki># Der Benutzer darf nur Dateien freigeben, deren Eigentümer er ist.</nowiki>
  usershare owner only = Yes
<nowiki># In diesem Ordner werden persönliche Freigaben eingetragen.</nowiki>
  usershare path = /var/lib/samba/usershares
|-
|}
Mit folgenden Optionen können bestimmte Pfade für persönliche Freigaben zugelassen bzw. von diesen ausgeschlossen werden:
 
 
{| style="border-spacing:0;width:6.787cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
||  usershare prefix allow list
  usershare prefix deny list
|-
|}
Die Pfade müssen absolut angegeben werden. Durch die Angabe <tt>null</tt> als Pfad werden die Optionen deaktiviert (Default).
 
Da die möglichen Parameter beim Erstellen persönlicher Freigaben bei Weitem nicht alle in Samba möglichen Optionen abdecken, kann in der Datei '''smb.conf''' eine Muster-Freigabe für persönliche Freigaben festgelegt werden. Diese wird dann durch folgende Zeile als für alle persönlichen Freigaben sämtlicher Benutzer verbindliche Vorgabe festgelegt:
 
 
{| style="border-spacing:0;width:8.269cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  usershare template share = VORLAGE
|-
|}
<tt>VORLAGE</tt> kann entweder eine wirklich vorhandene, in '''smb.conf''' eingetragene Freigabe sein, oder eine mit der Option <tt>-valid = no</tt> deaktivierte "Schein-Freigabe". Ist für <tt>VORLAGE</tt> der Wert <tt>null</tt> eingetragen (Default), so wird keine Muster-Freigabe verwendet.
 
=== Druckerfreigaben ===
 
==== Automatische Druckerfreigabe ====
 
Neuere Windows-Versionen können über das IPP-Protokoll auf einen Linux-Drucker über [https://wiki.ubuntuusers.de/CUPS/ CUPS] zugreifen. Man kann aber mit Samba auch Drucker für Windows-Clients zur Verfügung stellen. Die nötigen Optionen sind im Abschnitt <tt>[printers]</tt> definiert:
 
 
{| style="border-spacing:0;width:5.941cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
3
4
5
6
7
8
|| [printers]
  comment = All Printers
  browseable = no
  path = /tmp
  printable = yes
  public = no
  writable = no
  create mode = 0700
|-
|}
Dieser Abschnitt ist nach der Installation des Servers automatisch aktiv. Möchte man keine Drucker freigeben, so sollte man den Eintrag auskommentieren. Ausführliche Dokumentationen zum Thema Samba und Druckerfreigaben finden sich wieder in der [https://sourceforge.net/projects/gertranssmb3.berlios/files Dokumentation] 🇩🇪 .
 
=== Hinweis: ===
 
Laut [https://forum.ubuntuusers.de/post/2151676/ diesem] Forenbeitrag kann es zu Problemen mit manchen Windowsprogrammen kommen, welche eine andere Zugriffsmethode auf den Drucker verwenden; insbesondere sei hier der Adobe Reader genannt. Als provisorische Lösung kann man den Parameter <tt>browseable</tt> auf <tt>yes</tt> setzen.
 
=== Dateifreigaben ===
 
Dateifreigaben, die durch einen Eintrag in '''fstab''' systemweit eingerichtet werden, nennt man im Gegensatz zu den mittels <tt>net usershare</tt> eingerichteten ''Persönlichen Freigaben'' auch ''Administrative Freigaben''.
 
==== Heimatverzeichnisse ====
 
Sind auf dem Server im Systemordner '''/home/''' Heimatverzeichnisse für die einzelnen Benutzer eingerichtet, so können alle diese durch einen einzigen Eintrag in der Sektion <tt>[homes]</tt> freigegeben werden. Die dafür nötigen Einstellungen sind schon vorbereitet. Um diese kollektive Freigabe aller Heimatverzeichnisse zu aktivieren, muss man nur alle Semikolons ''";"'' vor den Einträgen entfernen.
 
 
{| style="border-spacing:0;width:6.576cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
3
4
5
6
7
|| [homes]
  comment = Home Directories
  browseable = no
  valid users = %S
  writeable = yes
  create mode = 0600
  directory mode = 0700
|-
|}
Die Heimverzeichnisse werden unter dem Namen des jeweiligen Benutzers freigegeben, aber wegen <tt>browseable = no</tt> nicht im Netzwerk angezeigt. Wegen <tt>valid users = %S</tt> hat nur der Benutzer mit dem passenden Namen Zugriff; andere Benutzer können die Freigabe weder sehen, noch lesen, noch schreiben. Wegen <tt>create mode = 0600</tt> und <tt>directory mode = 0700</tt> hat bei neu angelegten Dateien und Ordnern auch auf dem Server selbst nur der betreffende Benutzer Zugriffsrechte.
 
Die Sektion <tt>[homes]</tt> stellt vor allem für Systeme mit vielen Benutzern gegenüber einzelnen Freigaben eine erhebliche Vereinfachung dar.
 
==== Einzelne Freigaben ====
 
Anschließend werden die einzelnen Freigaben eingetragen. Eine Freigabe setzt sich aus dem Freigabenamen in eckigen Klammern - also <tt>[Beispielfreigabe]</tt> - und den danach folgenden Optionen zusammen. Die graphischen Oberflächen zu Samba tragen hier ebenfalls die Freigaben ein.
 
=== Hinweis: ===
 
Oft wird vergessen, dass die Zugriffsrechte in der Freigabe und im lokalen Dateisystem stimmen müssen. Erlaubt man z.B. den Zugriff von Gästen auf ein Verzeichnis, so muss der Benutzer <tt>nobody</tt> bzw. die Gruppe <tt>nogroup</tt> auch die entsprechenden lokalen [https://wiki.ubuntuusers.de/Rechte/ Lese-/Schreibrechte] in dem Verzeichnis haben.
 
===== Beispiel 1 =====
 
Beispiel für eine Freigabe, auf die nur angemeldete Benutzer zugreifen dürfen, wobei diese nur lesen aber nicht schreiben können. Die mit <tt>(Default)</tt> gekennzeichneten Einträge entsprechen den Standard-Einstellungen. Sie dienen nur zur Erläuterung und dürfen auch weggelassen werden:
 
vergrößern
 
 
{| style="border-spacing:0;width:15.042cm;"
|- style="border:none;padding:0.049cm;"
||  1
2
3
4
5
6
7
8
9
10
11
12
13
|| [beispiel1]
<nowiki># Pfad zu Verzeichnis</nowiki>
  path = /pfad/zu/daten1
<nowiki># Kommentar zur Freigabe</nowiki>
  comment = Testfreigabe 1
<nowiki># Freigabe ist aktiv (Default)</nowiki>
  available = yes
<nowiki># Freigabe ist direkt sichtbar (Default)</nowiki>
  browseable = yes
<nowiki># Gäste dürfen nicht auf die Freigabe zugreifen (Default)</nowiki>
  guest ok = no
<nowiki># Angemeldete Benutzer dürfen lesen aber nicht schreiben (Default).</nowiki>
  writeable = no
 
 
|-
|}
===== Beispiel 2 =====
 
Beispiel für eine Freigabe, auf die jeder - auch Gäste - sowohl lesend als auch schreibend zugreifen können. Des Weiteren wird auf die Daten lokal mit den Benutzerrechten <tt>otto</tt> und den Gruppenrechten <tt>users</tt> zugegriffen:
 
vergrößern
 
 
{| style="border-spacing:0;width:16.947cm;"
|- style="border:none;padding:0.049cm;"
||  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|| [beispiel2]
<nowiki># Pfad zu Verzeichnis</nowiki>
  path = /pfad/zu/daten2
<nowiki># Auch Gäste dürfen auf die Freigabe zugreifen.</nowiki>
  guest ok = yes
<nowiki># Angemeldete Benutzer dürfen auch schreiben.</nowiki>
  writeable = yes
<nowiki># Freigabe ist direkt sichtbar (Default)</nowiki>
  browseable = yes
<nowiki># Rechte bei neuen Dateien/Verzeichnissen beschränken ("maskieren")</nowiki>
  create mask = 0664
  directory mask = 0775
<nowiki># Benutzer und Gruppenzugehörigkeit (nur wirksam bei "unix extensions = no")</nowiki>
<nowiki># Egal mit welchen Daten sich ein Benutzer am Server anmeldet,</nowiki>
<nowiki># die Daten werden lokal mit diesen Dateizugehörigkeiten abgelegt.</nowiki>
  force user = otto
  force group = users
 
 
|-
|}
===== Beispiel 3 =====
 
Beispiel für eine Freigabe, deren Werte von der Freigabe <tt>beispiel2</tt> kopiert werden, wobei alle weiteren Angaben von den folgenden Optionen überschrieben werden. Prinzipiell darf niemand schreiben, bis auf den Benutzer <tt>paul</tt> und die Mitglieder der Gruppe <tt>beispiel</tt>:
 
 
{| style="border-spacing:0;width:11.867cm;"
|- style="border:none;padding:0.049cm;"
|| 1
2
3
4
5
6
7
8
|| [beispiel3]
<nowiki># Die Einstellungen dieser Freigabe werden übernommen</nowiki>
  copy = beispiel2
  path = /pfad/zu/daten3
<nowiki># Keine Schreibrechte für alle (Default)</nowiki>
  writeable = no
<nowiki># Benutzer, Gruppen die trotzdem schreiben dürfen</nowiki>
  write list = paul,@beispiel
|-
|}
Mehr zu dem Thema "Zugriffskontrollen für Freigabedefinitionen" findet sich in der [https://sourceforge.net/projects/gertranssmb3.berlios/files Dokumentation] 🇩🇪 .
 
=== Hinweis: ===
 
Werden die Zugriffsrechte durch eine der Optionen <tt>valid users</tt> bzw. <tt>invalid users</tt> eingeschränkt, so sind ab Samba 4 für die Option <tt>force user</tt> nur noch zugriffsberechtigte Benutzer zulässig. Andernfalls wird der Zugriff verwehrt.
 
==== Netzwerk-Papierkorb ====
 
Das einfache Verschieben von Dateien in den Papierkorb des jeweiligen Desktop ist über Samba nicht möglich. Abhilfe kann jedoch der in Samba (ab Version 3) enthaltene Netzwerk-Papierkorb schaffen. Ist dieser eingerichtet, so werden beim Löschen von Dateien oder Ordnern diese nicht gleich endgültig gelöscht, sondern in einen (ggf. versteckten) Ordner verschoben, aus dem sie dann in einem zweiten Arbeitsgang endgültig gelöscht werden können. Diese wenig bekannte Möglichkeit benötigt zwar zusätzlichen Speicherplatz auf dem Server, erhöht aber die Datensicherheit nicht unerheblich.
 
Der Netzwerk-Papierkorb kann entweder im Abschnitt [global] generell für alle Freigaben, oder aber für jede Freigabe einzeln eingerichtet werden. Hierfür fügt man einfach die Zeile
 
 
{| style="border-spacing:0;width:5.306cm;"
|- style="border:none;padding:0.049cm;"
|| 1
||  vfs object = recycle
|-
|}
hinzu. Durch weitere Optionen kann man noch den Pfad zum Papierkorb-Ordner und dessen Eigenschaften festlegen:
 
 
{| style="border-spacing:0;width:16.736cm;"
|- style="border:none;padding:0.049cm;"
||  1
2
3
4
5
6
7
8
9
10
11
12
|| <nowiki># Ein Papierkorb wird eingerichtet:</nowiki>
  vfs object = recycle
<nowiki># Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist Default).</nowiki>
  recycle:repository = .recyclebin
<nowiki># Im Papierkorb bleiben Pfad-Angaben erhalten.</nowiki>
  recycle:keeptree = Yes
<nowiki># Beim Verschieben wird der Zeitstempel angepasst.</nowiki>
  recycle:touch = Yes
<nowiki># Gleichnamige Dateien werden nicht überschrieben.</nowiki>
  recycle:versions = Yes
<nowiki># Keine Begrenzung der Dateigröße.</nowiki>
  recycle:maxsize = 0
|-
|}
Der Ordner '''.recyclebin''' bzw. der mittels <tt>recycle:repository</tt> festgelegte Papierkorb-Ordner wird dann beim ersten Löschvorgang automatisch angelegt. Weitere Einzelheiten siehe [http://www.samba.org/samba/docs/man/manpages-3/vfs_recycle.8.html hier] 🇬🇧.
 
=== Problembehebung Kein Zugriff auf Windows 10 Freigaben in Ubuntu 16.04 ===
 
Sollten Windowsfreigaben nicht korrekt angezeigt werden bzw gibt es Zugriffsprobleme in Ubuntu 16.04 könnte möglicherweise die Festlegung des Protokolls helfen. Gleiches gilt für [http://freenas.org/ FreeNAS] ab Version 11.2 wie [https://forums.freenas.org/index.php?posts/475183/ hier] beschrieben .
 
Wer mit dem Befehl
 
smbclient -L windows-pc
 
Folgende Ausgabe erhält
 
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
 
Sollte folgenden Eintrag in die [global] Sektion der /etc/samba/smb.conf hinzufügen:
 
client min protocol = SMB2
client max protocol = SMB3
 
und den SAMBA-Dienst mit folgendem Befehl neu starten:
 
sudo service smbd restart
 
=== Problembehebung bei Ubuntu 20.04 mit samba 4.11.6-Ubuntu ===
 
Seit Samba Version 4.11 ([https://wiki.ubuntuusers.de/Focal/ Ubuntu 20.04 LTS]) ist das Protokoll SMBv1 (NT1) sowohl für Server als auch für Clients in der Grundeinstellung deaktiviert. Wenn deshalb im Heimnetz Probleme auftreten, kann man notfalls SMBv1 mit folgenden Einträgen in im Teil <tt>[global]</tt> von '''smb.conf''' wieder zulassen:
 
[global]
        client min protocol = NT1
        server min protocol = NT1
 
Die Verwendung des veralteten Protokolls SMBv1 beeinträchtigt jedoch die Performance und vor allem auch die Sicherheit des Netzwerks!
 
=== Syntax-Kontrolle ===
 
Nach jeder Veränderung der Datei '''smb.conf''' sollte in einem Terminal der Befehl <tt>testparm</tt> ausgeführt werden um sicherzustellen, dass die Einträge keine grundlegenden Syntax-Fehler enthalten. Wird der Befehl <tt>testparm</tt> ohne Parameter ausgeführt, so werden nur die durch Einträge in der Datei '''smb.conf''' veränderten Optionen angezeigt. Der Befehl <tt>testparm -v</tt> bewirkt, dass außerdem auch die Default-Einstellungen angezeigt werden.
 
== Links ==
 
=== Verwandte Seiten ===
 
* [https://wiki.ubuntuusers.de/Samba_Server/ Samba Server] - Grundsätzliches zum Einrichten eines Samba-Servers
** [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/ net usershare] - Mittels Kommandozeile persönliche Freigaben erstellen und administrieren
** [https://wiki.ubuntuusers.de/Samba_Server_GNOME/ Samba Server GNOME] - Die graphische Konfiguration von Freigaben mit GNOME oder Mate. Ist in Teilen auch für Xfce (Xubuntu) und Lxde (Lubuntu) gültig.
* [https://wiki.ubuntuusers.de/Samba_Winbind/ Samba Winbind] - Ubuntu an einer Windows Domäne anmelden und die Benutzer am "Active Directory" authentifizieren
 
 
 
=== Ergänzende und weiterführende Informationen ===
 
* [http://samba.org/ Projektseite] 🇬🇧
** [https://wiki.samba.org/index.php/Main_Page https://wiki.samba.org/index.php/Main_Page] – Das offizielle Samba-Wiki 🇬🇧
** [http://samba.org/samba/docs/man/manpages-3/smb.conf.5.html Manpage zu ][http://samba.org/samba/docs/man/manpages-3/smb.conf.5.html smb.conf][http://samba.org/samba/docs/man/manpages-3/smb.conf.5.html  in lesbarer Form] 🇬🇧
** [http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/ The Official Samba 3.5.x HOWTO and Reference Guide] 🇬🇧 (in Teilen veraltet)
** [http://www.unifix.de/tutorial/samba/DE-Samba-HOWTO-1.html Samba-Tutorial deutsch] 🇩🇪 (nicht mehr aktualisiert!)
* [http://www.loggn.de/linux-samba-geloschte-dateien-in-einen-papierkorb-verschieben/ Samba – gelöschte Dateien in einen Papierkorb verschieben] 🇩🇪
* [http://linuxwiki.de/Samba Viele weitere Tipps und Links in "linuxwiki.de"] 🇩🇪
* [http://www.oreilly.de/german/freebooks/samba2ger/ Open Book "Samba"] 🇩🇪 - 2. Auflage, O'Reilly-Verlag, 2003. Die letzte Auflage als "Open Book".
* [http://support.microsoft.com/kb/909264/de Namenskonventionen in Active Directory] 🇩🇪 – Diese müssen auch in Samba beachtet werden.
* [https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858 Stop Using SMB1] 🇬🇧 Ein Aufruf von Microsoft mit Erläuterungen
 
 
 
https://wiki.ubuntuusers.de/Samba_Server/smb.conf/
 
= net usershare  =
 
Mit dem Tool [http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/NetCommand.html net] 🇬🇧 stellt Samba [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-4 [4]] eine Sammlung von Befehlen zur Verfügung, mit denen Server in ähnlicher Weise wie mit dem gleichnamigen Windows-Tool administriert werden können.
 
Die meisten der net-Befehle haben professionellen Charakter und interessieren nur die Administratoren größerer Netzwerke. Ihre Beschreibung würde hier zu weit führen (siehe dazu die [https://wiki.ubuntuusers.de/Manpage/ Manpage] zu '''net'''). Anders ist es mit <tt>net usershare</tt>, das auch standardmäßig von den Dateimanagern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus], [https://wiki.ubuntuusers.de/Caja/ Caja], [https://wiki.ubuntuusers.de/Dolphin/ Dolphin] und [https://wiki.ubuntuusers.de/Konqueror/ Konqueror] zum Erstellen persönlicher Freigaben ohne Root-Rechte [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-3 [3]] verwendet wird.
 
== Installation ==
 
Das Tool <tt>net usershare</tt> ist im Metapaket '''samba''' enthalten [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-1 [1]]:* '''samba'''
 
 
 
Befehl zum Installieren der Pakete:
 
sudo apt-get install samba
 
Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://samba apt://samba]
 
Wenn <tt>net usershare</tt> mit dem Dateimanager Nautilus oder Caja verwendet werden soll, so ist eine Paketinstallation von Hand nicht nötig, da diese dann automatisch durchgeführt wird.
 
== Anwendung ==
 
=== Voraussetzungen ===
 
Damit gewöhnliche Benutzer ihre Dateien mit <tt>net usershare</tt> persönlich freigeben können, müssen sie der [https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/ Gruppe] <tt>sambashare</tt> angehören. Für den Erstbenutzer ist dies in Ubuntu automatisch der Fall; später neu angelegte Benutzer müssen ggf. noch zu dieser Gruppe hinzugefügt werden. Da persönliche Freigaben ohne Root-Rechte [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-3 [3]] erstellt werden, ist die Zugehörigkeit zu einer der Gruppen <tt>sudo</tt> oder <tt>admin</tt> nicht nötig.
 
Die Weiteren auf dem betreffenden Server gültigen Bedingungen für Samba-Freigaben allgemein und für <tt>net usershare</tt> im Besonderen werden in der Datei [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/ /etc/samba/smb.conf] festgelegt. Möchte man diese verändern, so muss man diese Datei mit Root-Rechten[https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-3 [3]] editieren. Standardmäßig gelten für <tt>net usershare</tt> folgende Einstellungen:* Der Benutzer darf nur Dateien freigeben, deren Eigentümer er ist.
* Der Eigentümer darf auch anderen den Zugriff auf eigene Freigaben gestatten.
* Die Maximalzahl für persönliche Freigaben ist 100.
* Persönliche Freigaben werden im Ordner '''/var/lib/samba/usershares''' eingetragen.
 
 
 
Die aktuell gültigen Einstellungen kann man in einem Terminal[https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-2 [2]] immer mit folgender Befehlszeile abrufen:
 
testparm -vs | grep usershare
 
Für jeden Benutzer, der nachher mit Username und ggf. Passwort auf eine Freigabe zugreifen soll, muss auf dem Server zusätzlich zum (vorhandenen) System-Account noch ein Samba-Account angelegt werden:
 
sudo smbpasswd -a BENUTZERNAME
 
Benutzer ohne Samba-Passort und auch ganz unbekannte Benutzer können als Gäste zugreifen, sofern diese Vorgabe für den Samba-Server nicht verändert wurde. Der Zugriff auf das Dateisystem des Servers erfolgt dann mit dem für die Gastrolle konfigurierten Benutzernamen (Vorgabe: <tt>nobody</tt>) und beliebigem nichtleeren Passwort.
 
=== Anwendung mit dem Dateimanager ===
 
Die Anwendung mit den Dateimanagern [https://wiki.ubuntuusers.de/Nautilus/ Nautilus] ([https://wiki.ubuntuusers.de/GNOME/ GNOME]) und [https://wiki.ubuntuusers.de/Caja/ Caja] ([https://wiki.ubuntuusers.de/MATE/ MATE]) ist im Artikel [https://wiki.ubuntuusers.de/Samba_Server_GNOME/ Samba Server GNOME] ausführlich beschrieben. Eine Alternative für [https://wiki.ubuntuusers.de/Nautilus/ Nautilus] ist das Skript [https://wiki.ubuntuusers.de/Nautilus/Skripte/SMBusershare/ SMBusershare].
 
Die Dateimanager [https://wiki.ubuntuusers.de/Thunar/ Thunar] (Xfce) und [https://wiki.ubuntuusers.de/PCManFM/ PCManFM] (LXDE) unterstützen bislang das interaktive Erstellen persönlicher Freigaben nicht (Stand: 05/2020), sodass hier auf die Kommandozeile zurückgegriffen werden muss. Bei Thunar können Kommandozeilen auch als ''Benutzerdefinierte Aktionen'' eingetragen und dann über Mausklicks wiederholt ausgeführt werden (siehe [https://wiki.ubuntuusers.de/Samba_Server_GNOME/ Samba Server GNOME])
 
Das auch für Thunar geeignete Nautilus-Skript [https://wiki.ubuntuusers.de/Nautilus/Skripte/SMBusershare/ SMBusershare] ermöglicht die bequeme Freigabe per GUI als Alternative zur Arbeit auf der Kommandozeile.
 
=== Kommandozeile ===
 
Auf Samba-Servern ohne graphische Oberfläche oder in Xubuntu und Lubuntu, wo <tt>net usershare</tt> standardmäßig nicht vom Dateimanager unterstützt wird, können persönliche Freigaben sehr einfach über Kommandozeilen in der Konsole bzw. in einem Terminal[https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#source-2 [2]] eingerichtet und verwaltet werden, ohne dass dafür eine Konfigurationsdatei editiert werden müsste.
 
==== Befehle ====
 
<tt>net usershare</tt> kennt folgende vier Kommandozeilen-Befehle:* Freigaben erstellen oder verändern: <br/>net usershare add SHARENAME PFAD [comment [acl] [guest_ok=[y|n]]]
* Freigaben aufheben: <br/>net usershare delete SHARENAME
* Vorhandene Freigaben auflisten: <br/>net usershare list [-l|--long] [SHARENAME]
* Informationen über eine oder mehrere Freigaben ausgeben: <br/>net usershare info [-l|--long] [SHARENAME]
 
 
 
Es gibt keinen besonderen Befehl, um vorhandene Freigaben zu verändern. Man überschreibt mit "<tt>net usershare add</tt>" einfach die bisherigen Eingaben mit den neuen.
 
==== Parameter ====
 
In eckigen Klammern <tt>[]</tt> angegebene Parameter sind optional. Stehen zwei oder mehr Alternativen zur Verfügung, so werden diese durch einen senkrechten Strich <tt>|</tt> getrennt angegeben. Groß- und Kleinbuchstaben werden nicht unterschieden. Im Einzelnen haben die Parameter folgende Bedeutungen:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| '''Parameter'''
|| '''Syntaxdefinition'''
|| '''Erklärung'''
|- style="border:none;padding:0.049cm;"
|| <tt>SHARENAME</tt>
||
|| Name der Freigabe. Besteht vorher schon eine allgemeine (in '''smb.conf''' eingetragene) Freigabe gleichen Namens, so wird diese "überdeckt". Bei den Befehlen <tt>net usershare info</tt> und <tt>net usershare list</tt> darf SHARENAME auch "Wildcards" enthalten (<tt><nowiki>*</nowiki></tt> für eine beliebige Zeichenkette, <tt>?</tt> für ein beliebiges Zeichen).
|- style="border:none;padding:0.049cm;"
|| <tt>PFAD</tt>
||
|| Vollständiger Pfad zur Freigabe auf dem Server. Zulässige bzw. verbotene Pfade können optional in der Datei '''smb.conf''' über die Optionen <tt>usershare owner only</tt>, <tt>usershare prefix allow list</tt> und <tt>usershare prefix deny list</tt> präzisiert werden.
|- style="border:none;padding:0.049cm;"
|| <tt>comment</tt>
||
|| Kommentar, der beim Browsen auf dem Client erscheint, Wenn nach PFAD weitere Parameter angegeben sind, wird der erste davon immer als Kommentar interpretiert. Kommentare, die Leerzeichen usw. enthalten, müssen in Anführungszeichen <tt>" "</tt> gesetzt werden.
|- style="border:none;padding:0.049cm;"
|| <tt>acl</tt>
|| <tt>USERNAME:F|R|D</tt>
|| Legt fest, wer zugreifen darf. <tt>F</tt> bedeutet "full" (lesen und schreiben), <tt>R</tt> "read" (nur lesen) und <tt>D</tt> "deny" (gar nicht). Es sind auch mehrere, durch Kommas getrennte Angaben für <tt>acl</tt> möglich. Standard: <tt>Everyone:R</tt>
|- style="border:none;padding:0.049cm;"
|| <tt>guest_ok</tt>
|| <tt>guest_ok=y|n</tt>
|| Gast-Zugriff erlauben oder verbieten. Ist nur wirksam, wenn in '''smb.conf''' die Option <tt>usershare allow guests = y</tt> eingetragen ist. Default: <tt>guest_ok=n</tt>
|- style="border:none;padding:0.049cm;"
|| <tt>-l|--long</tt>
||
|| Bei <tt>net usershare list</tt> und <tt>net usershare info</tt> werden ohne diesen Parameter nur die eigenen Freigaben, mit diesem Parameter aber die Freigaben aller Benutzer agezeigt.
 
 
|-
|}
=== Hinweis: ===
 
Er ist nicht möglich, bei <tt>net usershare add ...</tt> den Kommentar (<tt>comment</tt>) einfach zu überspringen. Möchte man auf einen Kommentar verzichten, aber weitere Parameter angeben, so müssen anstelle eines Kommentars zwei Anführungszeichen (<tt>""</tt>) eingesetzt werden.
 
==== Muster-Freigabe ====
 
Weitere Parameter können beim Erstellen von Freigaben mittels <tt>net usershare</tt> nicht angegeben werden. Jedoch lässt sich mit dem Eintrag "<tt>usershare template share = SHARENAME</tt>" im Teil <tt>[global]</tt> der Datei '''smb.conf''' eine bereits existierende Freigabe als Muster für ''alle'' mittels <tt>net usershare</tt> über die Kommandozeile oder über den Dateimanager eingerichteten Persönlichen Freigaben sämtlicher Benutzer festlegen. Von dieser Muster-Freigabe ("template share") werden dann alle übrigen Parameter übernommen. Anstelle einer bereits existierenden wirklichen Freigabe kann man auch eine besondere, "scheinbare" Muster-Freigabe einrichten, die man mit dem Parameter "<tt>-valid = no</tt>" unsichtbar und für direkte Zugriffe unerreichbar macht.
 
==== Beispiel ====
 
Eine Freigabe mit Gastzugriff, aber nur der Benutzer <tt>otto</tt> hat Schreibrechte:
 
net usershare add Urlaubsbilder /home/otto/Bilder/Urlaub Urlaubsbilder-2012 Everyone:R,otto:F guest_ok=y
 
Mit dem <tt>info</tt>-Befehl erhält der Benutzer <tt>otto</tt> dann folgende Ausgabe:
 
net usershare info *bilder
[Urlaubsbilder]
path=/home/otto/Bilder/Urlaub
comment=Urlaubsbilder-2012
usershare_acl=Everyone:R,DESKTOP-PC\otto:F,
guest_ok=y
 
==== Einträge im usershare-Ordner ====
 
Im Ordner '''/var/lib/samba/usershares''' findet man nach dem Erstellen dieser Freigabe eine dem Benutzer <tt>otto</tt> gehörende Textdatei '''urlaubsbilder''' mit folgendem Inhalt:
 
<nowiki>#VERSION 2</nowiki>
path=/home/otto/Bilder/Urlaub
comment=Urlaubsbilder-2012
usershare_acl=S-1-1-0:R,S-1-5-21-3836401370-419403397-2838479133-1000:F
guest_ok=y
sharename=Urlaubsbilder
 
Es wird davon abgeraten, Dateien in diesem Ordner zu editieren und zu verändern. Zum Bearbeiten persönlicher Freigaben sollte man nur die oben aufgeführten [https://wiki.ubuntuusers.de/Samba_Server/net_usershare/#Befehle Kommandozeilen-Befehle] verwenden.
 
== Links ==
 
=== Intern ===
 
* [https://wiki.ubuntuusers.de/Samba_Server/ Samba Server] - Grundsätzliches zum Einrichten eines Samba-Servers
** [https://wiki.ubuntuusers.de/Samba_Server/smb.conf/ Samba Server/smb.conf] - Die zentrale Konfigurations-Datei für Samba
** [https://wiki.ubuntuusers.de/Samba_Server_GNOME/ Samba Server GNOME] - Konfigurieren eines Samba-Servers mit [https://wiki.ubuntuusers.de/GNOME/ GNOME], [https://wiki.ubuntuusers.de/MATE/ MATE] oder [https://wiki.ubuntuusers.de/Unity/ Unity] (Ubuntu)
 
 
 
=== Extern ===
 
* [http://samba.org/ Projektseite] 🇬🇧
* [http://samba.sernet.de/ Die deutsche Homepage des Samba Projektes] 🇩🇪 (nicht aktuell)
 
 
 
https://wiki.ubuntuusers.de/Samba_Server/net_usershare/
 
= Samba4-Server als Active-Directory Domain-Controller  =
 
=== Archivierte Anleitung ===
 
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
 
=== Artikel für fortgeschrittene Anwender ===
 
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
 
=== Achtung! ===
 
Die Verwendung dieses Howto geschieht wie üblich auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
 
=== Hinweis: ===
 
Diese Howto-Anleitung wurde zuletzt von [https://ubuntuusers.de/user/luftpumpe/ luftpumpe] am 28.03.2015 unter Xubuntu 14.04 erfolgreich getestet.
 
=== Zum Verständnis dieses Artikels sind folgende Seiten hilfreich: ===
 
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-1 ⚓︎] [https://wiki.ubuntuusers.de/Pakete_installieren/ Installation von Programmen]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-2 ⚓︎] [https://wiki.ubuntuusers.de/Programme_starten/ Starten von Programmen]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-3 ⚓︎] [https://wiki.ubuntuusers.de/Terminal/ Ein Terminal öffnen]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-4 ⚓︎] [https://wiki.ubuntuusers.de/sudo/ Root-Rechte]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-5 ⚓︎] [https://wiki.ubuntuusers.de/Samba/ Samba] (Übersichtsartikel)
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-6 ⚓︎] [https://wiki.ubuntuusers.de/Samba_Server/ Samba Server]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-7 ⚓︎] [https://wiki.ubuntuusers.de/Archiv/Kerberos/ Archiv/Kerberos]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#source-8 ⚓︎] [https://wiki.ubuntuusers.de/Dnsmasq/ Dnsmasq]
 
 
 
Inhaltsverzeichnis# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Grundlagen Grundlagen ]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Voraussetzungen Voraussetzungen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Daten-des-Testkonfiguration Daten des Testkonfiguration ]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Administrationstools Administrationstools ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#samba-tool samba-tool ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#RSAT-fuer-Windows-Client RSAT für Windows-Client ]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Installation-des-1-DCs Installation des 1. DCs ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Feste-IP-Adresse-einstellen Feste IP-Adresse einstellen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#NTP-Dienst-einrichten NTP-Dienst einrichten ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Anpassung-in-der-fstab Anpassung in der fstab ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Samba-Version-ueberpruefen Samba-Version überprüfen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Samba-installieren Samba installieren ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#DNS-Service-konfigurieren DNS-Service konfigurieren ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Samba-Server-provisionieren Samba-Server provisionieren ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Kerberos-installieren Kerberos installieren ]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Funktionstests-des-Servers Funktionstests des Servers ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Netzwerkports-ueberpruefen Netzwerkports überprüfen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Samba-Konfiguration-ueberpruefen Samba-Konfiguration überprüfen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Alle-Shares-auflisten Alle Shares auflisten ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Authentifizierung-testen Authentifizierung testen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#DNS-testen DNS testen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Kerberos-testen Kerberos testen ]
# [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Installation-des-2-DCs Installation des 2. DCs ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Vorarbeiten-und-Tests Vorarbeiten und Tests ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Samba-Server-provisionieren-2 Samba-Server provisionieren ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Test-der-Samba-Konfiguration Test der Samba-Konfiguration ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Anpassen-der-DNS-Einstellung Anpassen der DNS-Einstellung ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#DNS-Eintraege-ueberpruefen DNS-Einträge überprüfen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#Directory-Replikation-ueberpruefen Directory Replikation überprüfen ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#manuelle-Replikationstests manuelle Replikationstests ]
## [https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/#SYSVOL-Replikation SYSVOL-Replikation ]
 
 
 
== Grundlagen ==
 
[[Image:Bild6.png|top|alt="Samba_Server/samba-logo.png"]]
 
Ab Samba Version 4.x kann man Samba im Microsoft-kompatiblen Modus "Active-Directory Domain-Controller" (kurz AD DC) laufen lassen. Dieser Artikel beschreibt die Grundinstallation von zwei Samba-Servern als DC für eine Windows Domäne. Zwei Server, um die Ausfallsicherheit der Domäne zu verbessern, und weil die Installation des zweiten (und weiterer) DCs anders verläuft als beim ersten DC. Natürlich funktioniert der Betrieb auch nur mit einem DC.
 
Die Installation basiert auf einem frisch installierten Xubuntu 14.04.02 LTS, benutzt nur offizielle Pakete aus dem Ubuntu-Repo und orientiert sich weitgehend am Artikel im offiziellen Samba-Wiki. Sie berücksichtigt aber die Besonderheiten bei Ubuntu.
 
Offizielles Samba-HowTo - [https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO] 🇬🇧
 
Sämtliche Eingaben setzen voraus, dass man derzeit im root-Modus ist. ("sudo -s")
 
=== Hinweis: ===
 
WICHTIGER HINWEIS: Dieser Artikel ist nur für den erfahrenen Ubuntu-Benutzer geeignet, der weiß was ein Domaincontroller ist.
 
== Voraussetzungen ==
 
* Ubuntu 14.04 LTS
* root-Rechte
* Dateisystem ext4
* feste IP-Adresse für die Server
* dnsmasq deaktivieren
* samba Version >= V4.1.6
* optionale zweite Maschine für die Einrichtung eines zweiten Servers
 
 
 
=== Daten des Testkonfiguration ===
 
technische Parameter auf die in dieser Beispielinstallation Bezug genommen wird:
 
vergrößern
 
Name der Domäne: test.dom
NETBIOS-Name der Domäne: TEST
Hostname: dc1
IP-Adresse: 192.168.1.199
Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet)
Name des ersten Domain-Controllers: DC1
Samba-Admin: administrator
 
Hostname: dc2
IP-Adresse: 192.168.1.198
Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet)
Name des ersten Domain-Controllers: DC2
Samba-Admin: administrator
 
== Administrationstools ==
 
=== samba-tool ===
 
Endlich gibt´s ein zentrales Boardmittel auf Kommandozeile um alle Funktionen eines Samba-Servers im Active-Directory-Modus zu administrieren.
 
Es wird bei der Installation von Samba mit installiert.
 
samba-tool --help
 
=== RSAT für Windows-Client ===
 
(falls vorhanden, und wenn von dort administriert werden soll)
 
Installiere RSAT (Remote Server Administration Tool) auf einem Windows-Client, siehe [https://wiki.samba.org/index.php/Installing_RSAT_on_Windows_for_AD_Management https://wiki.samba.org/index.php/Ins_AD_Management]
 
Für die Administration sollte der Windows-Client in die spätere Samba-Domäne als Mitglied aufgenommen werden, und auch deren DNS-Server benutzen. HINWEIS: Dieser Artikel erklärt nicht die Administration von einem Windows-Client aus.
 
== Installation des 1. DCs ==
 
Samba kann direkt aus den Quellen installiert werden. Es müssen keine fremden Quellen angezapft werden, es muss nichts compiliert werden.
 
=== Feste IP-Adresse einstellen ===
 
Es gibt wenig Sinn einen Domain-Controller mit einer dynamischen IP-Adresse zu betreiben. Deswegen muss man der Maschine erst eine feste manuelle Netzwerkkonfiguration geben. Dies kann über die graphische Oberfläche in den Netzwerkverbindungen angepasst werden. In unserem Beispiel sind es folgende Angaben:
 
Methode: manuell
IPV4-Adresse: 192.168.1.199
Netzmaske: 255.255.255.0
Gateway: 192.168.1.1
DNS-Server: 192.168.1.1  (ist nur temporär, wird später noch geändert)
Suchdomänen: bleibt erst mal leer
 
=== NTP-Dienst einrichten ===
 
Damit eine Domäne korrekt funktioniert, speziell Kerberos, wird auf allen Servern und Clients die gleiche "Zeit" benötigt. Deswegen wird mit der Installation eines NTP-Server auf dem späteren Domaincontroller begonnen.
 
siehe auch ntpd - [https://wiki.samba.org/index.php/Time_Synchronisation https://wiki.samba.org/index.php/Timynchronisation]
 
Installation von ntpd:
 
apt-get install ntp
 
(er wird dann auch automatisch gestartet)
 
ntp-Daemon testen: (jetzt muss der UDP-Port 123 offen sein; dies kann per "netstat -tulpn" gecheckt werden. Dort müssen Zeilen mit dem Text ":123" auftauchen.)
 
Eingabe zum überprüfen der ntp-Funktion:
 
ntpdate -q 127.0.0.1
 
korrekte Beispiel-Ausgabe:
 
server 127.0.0.1, stratum 3, offset 2.154217, delay 0.03343
 
Falls Probleme auftauchen, dann zur ersten Analyse folgendes mit einem öffentlichen NTP-Server testen:
 
ntpdate -u de.pool.ntp.org
ntpdate -u 0.ubuntu.pool.ntp.org
 
=== Anpassung in der fstab ===
 
Parameter für die Root-Partition in der Datei /etc/fstab anpassen damit ACLs funktionieren:
 
nano /etc/fstab
 
hier eine Beispiel für die erforderlichen Parameter, Text hinter "ext4":
 
UUID=951801e7-c4bc-464b-9071-6f5b6d065c92  /  ext4    user_xattr,acl,errors=remount-ro,barrier=1    0      1
 
=== Samba-Version überprüfen ===
 
Falls Samba schon installiert ist, kann mit folgenden Befehlen die Version überprüft werden:
 
samba -V
smbclient -V
 
=== Samba installieren ===
 
(falls es noch fehlt)
 
apt-get install samba smbclient
 
Hinweis: Der Samba Server wird direkt nach der Installation direkt im Standalone-Modus gestartet. Deswegen den Samba Server erst mal wieder beenden mit folgenden Befehlen:
 
service smbd stop
service nmbd stop
service samba status
 
Und dann die vorhandene smb.conf sichern oder löschen:
 
mv /etc/samba/smb.conf /etc/samba/smb.conf.vorher
 
HINWEIS: Wenn man das nicht macht, scheitert später die korrekte Einrichtung des Domain-Controllers.
 
=== DNS-Service konfigurieren ===
 
Überprüfen ob Port 53 (DNS) schon belegt ist, und bei frei räumen.
 
netstat -tlpn
 
Unter anderem taucht dort folgende Zeile auf:
 
tcp        0      0 127.0.1.1:53            0.0.0.0:*              LISTEN      1241/dnsmasq
 
Daran sieht man, dass TCP-Port 53 durch die Anwendung "dnsmasq" belegt ist. Dies verhindert, dass der später intallierte Samba-Server korrekt starten kann, weil er auch den Port 53 belegen will.
 
Lösung: Ubuntu nutzt den "network-manager" für seine Netzwerkverbindungen. Dieser nutzt wiederrum "dnsmasq" (welcher Port 53 belegt) für die DNS-Namensauflösung des Computers.
 
dnsmasq kann man in der Datei "/etc/NetworkManager/NetworkManager.conf" deaktivieren:
 
nano /etc/NetworkManager/NetworkManager.conf
 
deswegen in der Datei folgende Zeile auskommentieren:
 
<nowiki># dns=dnsmasq </nowiki>
 
Und danach den network manager neu starten und den alten dnsmasq killen, oder komplettes System neu booten:
 
/etc/init.d/networking restart
killall dnsmasq
 
HINWEIS: Wenn man diesen Arbeitsschritt vergisst, dann kommt beim Start von Sambe folgender Fehlertext. (gut zu sehen wenn man Samba im interaktiven Modus gestartet hat "samba -i")
 
Failed to bind to 0.0.0.0:53 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
 
WICHTIG: Sobald man dnsmasq deaktiviert hat, kann der PC keine DNS-Namen mehr auflösen, wenn man vergessen hat in den Netzwerkeinstellungen manuell einen DNS-Server (z.b. die IP seines Routers) einzurichten.
 
=== Samba-Server provisionieren ===
 
Jetzt kann mit der sogenannten Provisionierung des Domaincontrollers begonnen werden. Dies ist die Erstellung der Active-Directory Domäne. Bei Windows-Servern bekannt als "dcpromo".
 
samba-tool domain provision --use-rfc2307 --interactive --use-ntvfs
 
Hinweise:* Parameter "-use-rfc2307" für NIS-Servcie (yellowpages) inkl. Schemaerweiterung im AD. Wird nicht zwingend benötigt, aber später eventl. hilfreich für Linux-Clients. siehe auch: [https://wiki.samba.org/index.php/Using_RFC2307_on_a_Samba_DC#Administer_Unix_Attributes_in_Active_Directory https://wiki.samba.org/index.php/Usitive_Directory]
* Parameter "-use-ntvfs" für Ext4-Dateisysteme angeben, weil ohne Angabe des Parameters sonst ein Fehler kommt
 
 
 
Folgende Parameter werden dann im interaktiven Dialog abgefragt:* REALM: Der REALM ist der vollständige Domänenname, er wird auch auch als DNS-Domainname verwendet. Wie im Internet sind die einzelen Wörter durch einen Punkt getrennt. In unserem Beispiel lautet der REALM "test.dom"
 
* Domain: Ist quasi die Kurzform des Domänennamens ohne Punkte und wird für NetBIOS benötigt. Deswegen wird der Parameter auch NETBIOS-Name genannt. Dies ist sinnvollerweise der erste Teil des kompletten REALMs. In unserem Beispiel lautet der NETBIOS-Name "test"
 
* Server Role: Samba kann in ganz unterschiedlichen Modi laufen. In unserem Beispiel ist "dc" anzugeben.
 
* DNS backend: Wer soll die Namensauflösung für den Samba-Server machen. Samba4 beinhaltet auch einen eigenen DNS-Server. Für den bestmöglichen Betrieb der Samba-Domäne ist genau dieser zu verwenden! Somit hier "SAMBA_INTERNAL" bestätigen.
 
* DNS forwarder: Im späteren Betrieb sollten alle Clients der Domäne den/die Samba Server als DNS-Server verwenden. Sollen aber auch DNS-Namen außerhalb der Domäne aufgelöst werden (z.B. Internet DNS-Namen), so muss dem DNS-Server im Samba-Server gesagt werden, welchen anderen DNS-Server er verwenden soll, um diese Namen aufzulösen. Das ist der DNS-Forwarder. In unserem Beispiel wird der heimische Router = 192.168.1.1 angegeben. Er wiederum löst die DNS-Namen über den DNS-Server des Providers auf.
 
* Administrator passwort: Dies ist der mächtigste Account in der Windows-Domäne. Danmit kann man später die Domäne verwalten. HINWEIS: Das Passwort muss der Passwort-Policy entsprechen, 3 aus 4 Komponenten (Kleinschrift, Großschrift, Ziffern, Sonderzeichen)
 
 
 
Erfolgreiche Beispiel-Ausgabe:
 
vergrößern
 
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=dom
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=dom
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:          active directory domain controller
Hostname:              VM1
NetBIOS Domain:        TEST
DNS Domain:            test.dom
DOMAIN SID:            S-1-5-21-4250222487-2521097371-810615148
 
Tipp: Wenn irgendwas schief geht, dann kann man die /etc/samba/smb.conf löschen, und neu versuchen:
 
rm /etc/samba/smb.conf
 
Samba-Server versuchen interaktiv zu starten: (kann man mit Strg-c abbrechen)
 
samba -i
 
Dies sollte mit keiner besonderen Fehlermeldung abbrechen. Wenn die Routine nicht abbricht, ist dies ein gutes Zeichen. Dann manuell abbrechen.
 
=== Kerberos installieren ===
 
dazu fehlt noch ein Instalations-Paket, nachinstallieren:
 
apt-get install krb5-user
 
Erforderliche Parameter-Eingaben:
 
Kerberos-Realm: TEST.DOM
Kerberos-Server für Ihren Realm: localhost
Administrations-Server für IhrenKerberos-Realm: localhost
 
HINWEIS: Jetzt ist ein guter Zeitpunkt um den Server neu zu booten!
 
== Funktionstests des Servers ==
 
=== Netzwerkports überprüfen ===
 
Wenn Samba korrekt läuft, sollten etliche zusätzliche Netzwerkports belegt sein. "netstat -tlpen" sollte folgende Ausgabe bringen (im Beispiel ist IPV6 deaktiviert):
 
vergrößern
 
root@DC1:~# netstat -tlpen
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      User      Inode      PID/Program name
tcp        0      0 0.0.0.0:3268            0.0.0.0:*              LISTEN      0          28962      5394/samba     
tcp        0      0 0.0.0.0:3269            0.0.0.0:*              LISTEN      0          28963      5394/samba     
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      0          28960      5394/samba     
tcp        0      0 0.0.0.0:135            0.0.0.0:*              LISTEN      0          28932      5391/samba     
tcp        0      0 0.0.0.0:139            0.0.0.0:*              LISTEN      0          28936      5403/samba     
tcp        0      0 0.0.0.0:464            0.0.0.0:*              LISTEN      0          28919      5396/samba     
tcp        0      0 0.0.0.0:53              0.0.0.0:*              LISTEN      0          28947      5402/samba     
tcp        0      0 127.0.0.1:631          0.0.0.0:*              LISTEN      0          8369        463/cupsd     
tcp        0      0 0.0.0.0:88              0.0.0.0:*              LISTEN      0          28917      5396/samba     
tcp        0      0 0.0.0.0:636            0.0.0.0:*              LISTEN      0          28961      5394/samba     
tcp        0      0 0.0.0.0:445            0.0.0.0:*              LISTEN      0          28935      5403/samba     
tcp        0      0 0.0.0.0:1024            0.0.0.0:*              LISTEN      0          28926      5391/samba     
 
Aufgaben der Netzwerk-Ports, siehe auch [https://wiki.samba.org/index.php/Samba_port_usage https://wiki.samba.org/index.php/Samba_port_usage] * 53 - DNS
* 88 - Kerberos
* 135 - End Point Mapper (DCE/RPC Locator Service)
* 139 - NetBIOS Session
* 389 - LDAP
* 445 - SMB over TCP / CIFS
* 464 - Kerberos Passwort
* 636 - LDAPS (only if "tls enabled = yes")
* 1024-5000 dynamische RPC-Ports
* 3268 - globaler Katalog
* 3269 - globaler Katalog SSL
 
 
 
=== Samba-Konfiguration überprüfen ===
 
Ausgabe dieses Befehls überprüfen (ersetzt das klassische "testparm", bitte dieses nicht mehr benutzen)
 
samba-tool testparm
 
Beispielausgabe:
 
vergrößern
 
Press enter to see a dump of your service definitions  (Return drücken)
 
<nowiki># Global parameters</nowiki>
[global]
        workgroup = TEST
        realm = TEST.DOM
        netbios name = DC1
        server role = active directory domain controller
        dns forwarder = 192.168.1.1
        server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb
        dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
        idmap_ldb:use rfc2307 = yes
 
[netlogon]
        path = /var/lib/samba/sysvol/test.dom/scripts
        read only = No
 
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
 
WICHTIG: Die Zeile "dns forwarder" muss vorhanden sein, sonst scheitert die Namensauflösung für Internet-Domains, und man kann keine Pakete mehr installieren!
 
=== Alle Shares auflisten ===
 
smbclient -L localhost -U%
 
Jetzt sollten die drei Shares netlogon, sysvol und IPC$ angezeigt werden.
 
=== Authentifizierung testen ===
 
smbclient //localhost/netlogon -UAdministrator -c 'ls'
 
Hier muss man das Passwort des Domänen-Administrators eingeben. Die Ausgabe sollte keine Fehlermeldung enthalten.
 
=== DNS testen ===
 
Dazu muss man jetzt zuvor die DNS-Einstellung des Network-Managers in der graphischen Oberfläche des Rechners geändert werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:
 
nameserver 127.0.0.1
 
Wenn der DNS-Server richtig eingestellt ist, muss ein Ping auf den REALM funktionieren:
 
ping test.dom
 
Eingabe:
 
host -t SRV _ldap._tcp.test.dom
 
Ausgabe:
 
_ldap._tcp.test.dom has SRV record 0 100 389 dc1.test.dom.
 
Eingabe:
 
host -t SRV _kerberos._udp.test.dom
 
Ausgabe:
 
_kerberos._udp.test.dom has SRV record 0 100 88 dc1.test.dom.
 
Eingabe:
 
host -t A test.dom
 
Ausgabe:
 
test.dom has address 192.168.1.199
 
Eingabe:
 
host -t A dc1.test.dom
 
Ausgabe:
 
dc1.test.dom has address 192.168.1.199
 
Falls hier Fehler kommen, dann bitte das systemlog überprüfen.
 
=== Kerberos testen ===
 
Eingabe:
 
kinit administrator
 
erfolgreiche Ausgabe:
 
Password for administrator@TEST.DOM:
Warning: Your password will expire in 41 days on Fr 24 Apr 2015 20:31:30 CEST
 
Eingabe um eigene Kerberos-Tickets zu überprüfen:
 
klist
 
erfolgreiche Ausgabe:
 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.DOM
 
Valid starting      Expires              Service principal
14.03.2015 09:23:12  14.03.2015 19:23:12  krbtgt/TEST.DOM@TEST.DOM
        renew until 15.03.2015 09:23:08
 
Wenn all diese Tests erfolgreich ausgegangen sind, dann läuft der erste Domaincontroller korrekt.
 
== Installation des 2. DCs ==
 
Die Installation des zweiten DCs geht genauso wie beim ersten DC. Bis zum Punkt der Provisionierung des Samba-Servers - ab da wird anders, dies beschreibt dieser Abschnitt.
 
=== Vorarbeiten und Tests ===
 
WICHTIG: Für diesen Schritt muss der erste Domaincontroller laufen und netzwerktechnisch erreichbar sein.
 
DNS-Server anpassen:
 
Der zweite DC muss die Domäne namenstechnisch auflösen können. Deswegen muss zuerst der DNS-Server über die graphische Oberfläche via Network-Manager angepasst werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen: Man muss im Feld DNS-Server die DNS-IP-Adresse des ersten Samba-Servers eintragen. In unserem Beispiel:
 
192.168.1.199
 
DNS-Auflösung testen:
 
Die folgenden zwei Befehle dürfen keine Fehler ausgeben:
 
ping test.dom
ping dc1.test.dom
nslookup test.dom <ipadresse des ersten servers>
 
=== Samba-Server provisionieren ===
 
siehe auch [https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC https://wiki.samba.org/index.php/Samdomain_as_a_DC]
 
samba-tool domain join test.dom DC --username=administrator --use-ntvfs
 
Beispiel-Ausgabe:
 
vergrößern
 
Finding a writeable DC for domain 'test.dom'
Found DC dc1.test.dom
Password for [TEST\administrator]:  (Bemerkung: hier muss Passwort vom ersten DC eingetragen werden)
workgroup is TEST
realm is test.dom
checking sAMAccountName
Adding CN=DC2,OU=Domain Controllers,DC=test,DC=dom
Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom
Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom
Adding SPNs to CN=DC2,OU=Domain Controllers,DC=test,DC=dom
Setting account password for DC2$
Enabling account
Calling bare provision
No IPv6 address will be assigned
Provision OK for domain DN DC=test,DC=dom
Starting replication
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[402/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[804/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1206/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1550/1550] linked_values[0/0]
Analyze and apply schema objects
Partition[CN=Configuration,DC=test,DC=dom] objects[402/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[804/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1206/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1608/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1620/1620] linked_values[28/0]
Replicating critical objects from the base DN of the domain
Partition[DC=test,DC=dom] objects[97/97] linked_values[23/0]
Partition[DC=test,DC=dom] objects[365/268] linked_values[23/0]
Done with always replicated NC (base, config, schema)
Replicating DC=DomainDnsZones,DC=test,DC=dom
Partition[DC=DomainDnsZones,DC=test,DC=dom] objects[41/41] linked_values[0/0]
Replicating DC=ForestDnsZones,DC=test,DC=dom
Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[18/18] linked_values[0/0]
Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[36/18] linked_values[0/0]
Committing SAM database
Sending DsReplicateUpdateRefs for all the replicated partitions
Setting isSynchronized and dsServiceName
Setting up secrets database
Joined domain TEST (SID S-1-5-21-2617678509-903244012-2886946009) as a DC
 
Damit ist dann der zweite DC grundsätzlich der Domäne beigetreten.
 
=== Test der Samba-Konfiguration ===
 
Wenn die Provisionierung korrekt verlaufen ist, sollte man die Konfig testen. Im Prinzip stehen in der "/etc/samba/smb.conf" die gleichen Inhalte wie im ersten DC drin, bis auf die Zeile "netbios name" des Servers.
 
Eingabe zum überprüfen:
 
samba-tool testparm
 
WICHTIG: Vergleiche die Ausgabe beider DCs, oder vergleiche die Inhalte der jeweiligen "/etc/samba/smb.conf". Wenn hier was fehlt, dann läuft der zweite DC nicht korrekt!!!
 
=== Anpassen der DNS-Einstellung ===
 
Die beiden Domaincontroller sollten sich gegenseitig als primären DNS-Server eingetragen haben, und als sekundären Server sich selbst. Dazu muss man jetzt die DNS-Einstellung des Network-Managers in der graphischen Oberfläche beider Server ändern. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:
 
Desweiteren gibt es Sinn die Suchdomäne auf "test.dom" anzupassen. Denn damit muss man dann zur Erreichbarkeit anderer Maschinen in der Domäne nicht immer den vollqualifizierten Namen (Beispiel: client23.test.dom) angeben, sondern es langt der Hostname (Beispiel: client23) zur Namensauflösung. Dies sollte über die graphische Oberfläche beider DCs angepasst werden. Nach Reboot beider Server sollten in der "resolv.conf" folgende Inhalte drin stehen:
 
passende Einstellung für DC2:
 
nameserver 192.168.1.199      <nowiki># Bemerkung: IP des ersten DCs</nowiki>
nameserver 127.0.0.1
search test.dom
 
passende Einstellung für DC1:
 
 
nameserver 192.168.1.198      <nowiki># Bemerkung: IP des zweiten DCs</nowiki>
nameserver 127.0.0.1
search test.dom
 
=== DNS-Einträge überprüfen ===
 
Die IP und DNS-Konfiguration jedes DNS-Severs ist mit folgendem Befehl anzeigbar:
 
nm-tool
 
Beispielausgabe:
 
vergrößern
 
NetworkManager Tool
 
State: connected (global)
 
- Device: eth0  [Kabelnetzwerkverbindung 1] ------------------------------------
  Type:              Wired
  Driver:            r8169
  State:            connected
  Default:          yes
  HW Address:        70:81:AC:AD:53:00
 
  Capabilities:
    Carrier Detect:  yes
    Speed:          1000 Mb/s
 
  Wired Properties
    Carrier:        on
 
  IPv4 Settings:
    Address:        192.168.1.199
    Prefix:          24 (255.255.255.0)
    Gateway:        192.168.1.1
 
    DNS:            192.168.1.198, 127.0.0.1
 
Die einzelnen DC-Einträge kann man für die DNS-Server getrennt so überprüfen:
 
dig dc1 @192.168.1.199
dig dc1 @192.168.1.198
dig dc1.test.dom @192.168.1.199
dig dc1.test.dom @192.168.1.198
 
In der Beispielausgabe müssen unter anderem folgende Zeilen erscheinen, und auf jeden Fall hinter dem "A" die richtige IP-Adresse stehen:
 
<nowiki>;; ANSWER SECTION:</nowiki>
dc1.                    9      IN      A      192.168.1.199
oder
dc1.test.dom            900    IN      A      192.168.1.199
 
Das gleiche muss man auch für den "DC2"-Eintrag testen:
 
dig dc2 @192.168.1.199
dig dc2 @192.168.1.198
dig dc2.test.dom @192.168.1.199
dig dc2.test.dom @192.168.1.198
 
Auch dort sollten in den Ausgaben alle 4 Tests folgende Zeilen beinhalten, auf jeden Fall muss hinter dem "A" die richtige IP-Adresse stehen:
 
<nowiki>;; ANSWER SECTION:</nowiki>
dc2.                    9      IN      A      192.168.1.198
oder
dc2.test.dom            900    IN      A      192.168.1.198
 
Wenn die Namen nicht korrekt aufgelöst werden, kann es ein Fehler in der DNS-Config sein, oder es kann dieser Bug hier sein:
 
[https://wiki.samba.org/index.php/Check_and_fix_DNS_entries_on_DC_joins https://wiki.samba.org/index.php/Chees_on_DC_joins] 🇬🇧
 
Dann müssen die DNS-Einträge manuell im DNS angelegt werden.
 
=== Directory Replikation überprüfen ===
 
Die Directory-Replikation synchronisiert ständig alle Inhalte des Active Directory (User, Gruppen, Computerobjekte, sowie Passwortänderungen) zwischen den Domain-Controllern. Siehe auch [https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC#Directory_replication https://wiki.samba.org/index.php/Samry_replication]
 
Wenige Minuten nach Start des zweiten DCs beginnt die Directory Replikation automatisch. Geduldig sein!
 
Befehl zum Überrüfen der Replikation:
 
samba-tool drs showrepl
 
Hinweis zur Warnung: "Warning: No NC replicated for Connection!“ in der letzten Zeile. Diese Meldung kann ignoriert werden.
 
Ansonsten sollte kein Fehler ersichtlich sein.
 
Falls die Replikation auch nach Minuten noch nicht beginnt, so kann man sie auch manuell anwerfen:
 
samba-tool drs replicate DC1 DC2 dc=test,dc=dom
 
Ausgabe:
 
Replicate from DC2 to DC1 was successful.
 
Bemerkung:
 
Wenn die Replikation nicht klappt, ist es sehr wahrscheinlich ein DNS-Problem.
 
Dann kommt vermutlich dieser Fehler: "DsReplicaSync failed" (8440, 'WERR_DS_DRA_BAD_NC')
 
=== manuelle Replikationstests ===
 
Einfach ein User-Objekt auf dem einen DC anlegen, und danach schauen, ob es weniges Sekunden später auf dem anderen DC angekommen ist. Entweder mit dem samba-tool, oder mit der Windows Active-Directory User & Gruppen-Verwaltung (RSAT)
 
Beispieleingabe am ersten DC: (Passwort für User muss 3 aus 4 Komponenten enthalten)
 
samba-tool user add testuser555
 
Ausgabe:
 
User 'testuser555' created successfully
 
Überprüfen nach wenigen Sekunden am zweiten DC:
 
samba-tool user list
 
In der Ausgabe muss dann unter anderem der neue Useraccount angezeigt werden.
 
=== SYSVOL-Replikation ===
 
Dies geschieht derzeit noch nicht automatisch!
 
Wenn man eine Änderung in den Logonscripten oder den GPOs vorgenommen hat, so muss man SYSVOL manuell synchronisieren. Oder man muss sich eine rsync-Routine bauen, welche die Replikation ab nimmt.
 
Details hier: [https://wiki.samba.org/index.php/SysVol_Replication https://wiki.samba.org/index.php/Sysol_Replication] 🇬🇧
 
https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/
 
= Tipps  =
 
=== Hinweis: ===
 
Dieses Howto wurde von [https://ubuntuusers.de/user/Bournless/ 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 [https://wiki.ubuntuusers.de/HowTo/Samba-AD-Server_unter_Ubuntu_20.04_installieren/ 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 [https://wiki.ubuntuusers.de/systemd/timesyncd/#Konfiguration 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:
 
<nowiki># [org.gnome/login-screen]</nowiki>
<nowiki># disable-user-list=true</nowiki>
 
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/wiki/tags/Howto/ Liste aller Howtos]
 
 
 
https://wiki.ubuntuusers.de/Howto/Samba-AD-Server_unter_Ubuntu_20.04/Tipps/
 
= How To Configure Samba Share on Debian 11 / Debian 10 =
 
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''.{{anchor|ezoic-pub-ad-placeholder-165}} {{anchor|div-gpt-ad-computingforgeekscom-box-3-0}}
 
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.{{anchor|ezoic-pub-ad-placeholder-173}} {{anchor|div-gpt-ad-computingforgeekscom-medrectangle-3-0}}
 
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.{{anchor|ezoic-pub-ad-placeholder-167}} {{anchor|div-gpt-ad-computingforgeekscom-medrectangle-4-0}}
 
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
 
== Step 3 – Create Shared Samba Directory ==
 
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.{{anchor|ezoic-pub-ad-placeholder-169}} {{anchor|div-gpt-ad-computingforgeekscom-banner-1-0}}
 
[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
 
== Step 4 – Create Samba Share User and User Group ==
 
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
 
<nowiki># Global parameters</nowiki>
[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.
 
{{anchor|ez-clearholder-large-leaderboard-2}} {{anchor|div-gpt-ad-computingforgeekscom-large-leaderboard-2-0}} 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
 
== Step 6 – Access the Shares from the Client. ==
 
This guide demonstrates how to access the Share files using both Windows and Linux systems.
 
First, try accessing the share from your local machine.
 
{{anchor|ez-clearholder-leader-1}} {{anchor|div-gpt-ad-computingforgeekscom-leader-1-0}} $ 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.
 
{{anchor|ez-clearholder-large-mobile-banner-1}} {{anchor|div-gpt-ad-computingforgeekscom-large-mobile-banner-1-0}} Open a run box using '''Win+R''' and proceed as shown.
 
[[Image:Bild7.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 1"]]
 
The shared folders should appear as below.
 
[[Image:Bild8.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 1 1"]]
 
Open one of the folders and create a file.
 
{{anchor|ez-clearholder-large-mobile-banner-2}} {{anchor|div-gpt-ad-computingforgeekscom-large-mobile-banner-2-0}} [[Image:Bild9.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 6"]]
 
The file should be visible on the Samba server machine.
 
[[Image:Bild10.png|top|alt="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'''
 
[[Image:Bild11.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 2"]]
 
Provide the Path details as below.
 
{{anchor|ez-clearholder-leader-2}} {{anchor|div-gpt-ad-computingforgeekscom-leader-2-0}} [[Image:Bild12.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 3"]]
 
Enter the Samba user credentials.
 
[[Image:Bild13.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 4"]]
 
You will have the share available as shown.
 
[[Image:Bild14.png|top|alt="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:
 
[[Image:Bild15.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 8"]]
 
Enter the credentials for the samba user.
 
[[Image:Bild16.png|top|alt="How To Configure Samba Share on Debian 11 Debian 10 9"]]
 
That is it! You have your Samba share as below.
 
{{anchor|ez-clearholder-leader-3}} {{anchor|div-gpt-ad-computingforgeekscom-leader-3-0}} [[Image:Bild17.png|top|alt="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:* [https://computingforgeeks.com/how-to-share-your-linux-terminal-in-web-browser-with-gotty/ How To Share your Linux Terminal Session in Web Browser]
* [https://computingforgeeks.com/install-and-configure-samba-server-share-on-ubuntu/ Install and Configure Samba Share on Ubuntu]
 
 


https://computingforgeeks.com/how-to-configure-samba-share-on-debian/
[[Kategorie:Samba]]
</noinclude>

Aktuelle Version vom 11. September 2024, 11:06 Uhr

Samba-Server - Kurzbeschreibung

Beschreibung

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

Bestandteile

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.

Zugang zur Protokolldokumentation

In den frühen 1990er-Jahren hatten Microsoft und das Samba-Team eine produktive Beziehung, bei der Schnittstellendaten ausgetauscht wurden. 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.

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.
  • Im Mai 2017 wurde bekannt, dass ähnliche Sicherheitsprobleme wie bei Windows-Betriebssystemen, welche in Form von WannaCry ausgenutzt werden konnten, auch bei Samba bestanden. 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. 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.

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

Installation

Anwendung

Fehlerbehebung

Konfiguration

Dateien

Anhang

Siehe auch

Dokumentation

Samba-Server/Dokumentation

Links

Projekt
Weblinks

TMP

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-Kryptografie" 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

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

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