[[Vorlage(Getestet, focal, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] Dateimanager wie beispielsweise Nautilus bieten unter Netzwerke (auch: Netzwerk durchsuchen, Netzwerk-Server) das Durchsuchen des „Windows-Netzwerks“ (auch: „Netzwerkumgebung“) an. In der Praxis wird leider oft nur ein leerer Ordner angezeigt. Hier wird beschrieben, wie man seine Server und Clients konfigurieren muss, damit im Dateimanager der Ordner „Windows-Netzwerk“ und auch die neben diesem Ordner dargestellten Server-Symbole wie gewünscht funktionieren. Die Grundlagen aus den Artikeln [:Samba:] und [:Samba_Client_GNOME:] werden hier vorausgesetzt. = Benötigte Software = Das „Windows-Netzwerk“ zeigt Dateiserver, welche über das Netzwerkprotokoll SMB kommunizieren. Der zur Anzeige benötigte SMB-Client aus dem SAMBA-Projekt wird bei jeder normalen Installation eines Ubuntu-Systems installiert. Mit der Installation des Paketes [:Samba_Client_smbclient:'''smbclient'''] erhält man für die Kommandozeile[2] praktische Testwerkzeuge, die auch in diesem Artikel benutzt werden. Der graphische Dateimanager benötigt [:GVFS:GIO] für Anzeige und Einhängen der Freigaben. Auch diese Pakete werden bei einer normalen Installation bereits installiert. Das Paket [:mount.cifs:cifs-utils] bietet eine vom SAMBA-Projekt unabhängige Implementierung des Protokolls SMB und wird für die hier besprochene Thematik nicht benötigt. Zur Installation[1] der benötigten Pakete siehe: [:Samba_Client_GNOME:] = Grundlagen = Das Fenster „Windows-Netzwerk“ stellt Listen dar, welche von speziellen Servern im Netzwerk stammen. Diese "local master browser" (= LMB) müssen für jede Arbeitsgruppe im Netzwerk vorhanden sein und richtig funktionieren. Als "local master browser" kann man jeden Rechner verwenden, der über SMB Freigaben bereitstellt. Das können beispielsweise Windows-Arbeitsstationen, Windows-Server, Linux-Rechner mit SAMBA-Server oder eine Fritzbox (mit FritzOS vor 7.20) sein. Alle im Netzwerk verfügbaren SMB-Server einer Arbeitsgruppe erwählen automatisch einen von ihnen zum "local master browser". Pro Arbeitsgruppe und Netzwerk (im Sinne von Broadcast-Domäne) ist jeweils ein LMB erforderlich. Die LMB einer Arbeitsgruppe wählen noch einen von ihnen zum "domain master browser", der ihre Arbeit über alle Netzwerke koordiniert. Alle "local master browser" (und damit auch alle Arbeitsgruppen) im Netzwerk zeigt dieser Befehl[3] an: {{{#!vorlage Befehl nmblookup -STM -- - }}} = Generelle Einstellungen = Dieser Abschnitt betrifft Clients und Server gleichermaßen. Sofern man nicht wirklich mehrere Arbeitsgruppen haben möchte, sollte man auf jedem seiner Rechner stets dieselbe Arbeitsgruppe konfigurieren. Man kann durch Änderung der Vorgabe-Namen WORKGROUP und ARBEITSGRUPPE vermeiden, dass schlecht konfigurierte Rechner eine Wahl des "local master browser" erzwingen und damit die Funktion des Ordners „Windows-Netzwerk“ erheblich stören. Die Einstellung der Arbeitsgruppe erfolgt wie alle Konfiguration der SMB-Clients und -Server des SAMBA-Projektes in der Datei [:Samba_Server/smb.conf: '''/etc/samba/smb.conf''' ]. Diese kann man als Systemverwalter root mit einem Texteditor eigener Wahl bearbeiten[4]. (Die Datei '''/etc/samba/smb.conf''' kann noch weitere, in diesem Artikel nicht beschriebene Einstellungen enthalten.) {{{ [global] workgroup = FAMILIE }}} * `workgroup = FAMILIE`: Der Name der Arbeitsgruppe kann beliebig gewählt werden. Es muss jedoch ein [#SMB-Name SMB-Name] sein. = SAMBA-Server als LMB konfigurieren = Für den Betrieb eines Ubuntu-Rechners als LMB muss zuerst der SAMBA-Server installiert werden: [:Samba_Server_GNOME:] Die Funktionalität des LMB ist enthalten im Programm '''nmbd''', welches zusätzlich zum eigentlichen Dateiserver '''smbd''' gestartet werden muss (s.u). Die Kriterien für die Wahl zum LMB sind in der Datei '''/etc/samba/smb.conf''' jedes SAMBA-Servers einstellbar: {{{ [global] workgroup = FAMILIE server role = standalone server netbios name = SERVERNAME ; local master = Yes ; preferred master = Auto ; domain master = Auto ; os level = 20 # Server ist kein LMB-Kandidat local master = no preferred master = no # Server als LMB-Kandidat local master = yes preferred master = yes server min protocol = NT1 }}} * `workgroup = FAMILIE`: Dies ist dieselbe Einstellung wie oben. * `server role = standalone server`: Dies ist die Vorgabe. Wenn der SAMBA-Server in eine Domäne eingebunden werden soll, müssen weitere Aspekte berücksichtigt werden, die in diesem Artikel nicht behandelt werden können. * `netbios name`: Dies ist der Name des Servers in der NetBIOS/SMB-Welt. Normalerweise sollte man diese Einstellung nicht selber benutzen. Als Vorgabe wird für den NetBIOS-Namen des Servers der Hostname des Servers verwendet. Wenn der Hostname jedoch nicht die Voraussetzungen für einen [#SMB-Name SMB-Name] erfüllt, dann muss man hier eine andere Bezeichnung wählen. * `local master`: Mögliche Werte sind `yes` (= Vorgabe: dieser Rechner bewirbt sich um die Rolle des "local master browser") und `no` (= er macht es nicht). Ein SAMBA-Server mit `local master = yes` wird die Rolle des LMB übernehmen, sofern er gewählt wird, aber er wird nicht von sich aus den Wahlvorgang anstoßen. * `preferred master`: Mögliche Werte sind `Yes`, `Auto` (= Vorgabe) und `No`. Hiermit stellt man ein, ob der Server die Wahl zum LMB anstoßen soll oder nicht. Mit dem Wert `Yes` wird die Wahl beim Start des '''nmbd''' auf jeden Fall angestoßen; `Auto` bewirkt einen Aufruf zur Wahl des LNB sobald der Server bemerkt, dass kein LMB mehr aktiv ist. Die Auslösung des Wahlvorgangs garantiert nicht, dass dieser Server bereit ist, die Rolle des LMB zu übernehmen und auch nicht, dass er die Wahl gewinnt. * `domain master`: Mögliche Werte sind `Auto` (= Vorgabe) und `no`. Ein Rechner, welcher bereit ist als `"domain master"` zu arbeiten, gewinnt die Wahl vor allen dazu nicht bereiten Rechnern. Beachte: Diese Einstellung hat Nebeneffekte bei Servern, die nicht als `standalone server` arbeiten! (`domain` hat hier eine doppelte Bedeutung für `"domain master browser"` und Domain Controler (PDC/BDC).) * `os level`: Der Vorgabewert bei Samba-Servern ist `20`. Mögliche Werte sind `0 … 255`. Wenn mehrere Rechner gleichwertig für die Rolle des LMB sind, gewinnt der mit dem größten Wert. * `server min protocol = NT1`: Die Einstellung der SMB-Protokollversion ist der wichtigste und problematischste Parameter (s.u. Sicherheitsaspekte). Dies betrifft zwar eigentlich gar nicht den LMB, sondern nur den Zugriff auf die SMB-Freigaben. Man kann daher durchaus einen LMB betreiben, wenn man hier höhere Protokollversionen einstellt, aber solche LMB erfüllen ihre Aufgabe nicht. Ein SAMBA-Server, der als LMB arbeiten soll, benötigt zwingend die Einstellung `server min protocol = NT1`. Alle Kunst der richtigen Konfiguration des LMB hilft nichts, wenn der Start des '''nmbd''' beim Hochfahren des Rechners misslingt, was leider manchmal geschieht. Nach dem Start des Servers sollte man deshalb das den Status von nmbd und smbd kontrollieren und ggf. die DAEMONen neu starten: {{{#!vorlage Befehl systemctl status smbd.service nmbd.service sudo systemctl restart smbd.service nmbd.service }}} = Samba Client konfigurieren = Dies erfolgt ebenfalls über die Datei '''/etc/samba/smb.conf''': {{{ [global] workgroup = FAMILIE client min protocol = NT1 }}} * `workgroup = FAMILIE`: Dies ist dieselbe Einstellung wie oben. * `client min protocol = NT1`: Damit stellt man als älteste zugelassene SMB-Protokollversion SMBv1 ein. Bei den SAMBA-Versionen in den Ubuntu-Versionen vor 20.04 wird als Vorgabe für `client min protocol` die noch ältere Version CORE verwendet. Aus rein funktionalen Gründen muss man daran nichts ändern, jedoch sollte man zur Verbesserung der Sicherheit mindestens `NT1` einstellen. Ab Ubuntu 20.04 wird als Vorgabe die Protokollversion SMBv2 verwendet. Die mögliche Einstellung für `client min protocol` hängt ab von der eigenen Praxis zum Durchsuchen und Einhängen der Freigaben: 1. Nur per GUI: Die GUI-Dateimanager verwenden GIO und dieses besteht bei der Suche auf SMBv1. Man sollte also `client min protocol = NT1` einstellen. 1. Auf der Kommandozeile mit '''smbclient''': Dieses Programm handelt mit dem Server die höchste verfügbare SMB-Protokollversion aus und benutzt diese. Daher sollte jede Einstellung für `client min protocol` funktionieren. Man behält entweder die Voreinstellung oder verwendet SMBv2: `client min protocol = SMB2` 1. Mit einem per Skript ertüchtigten GUI-Dateimanager: Man kann dann über das Kontextmenü der gezeigten Netzwerkobjekte diese durchsuchen oder Dateisysteme einhängen. Ein solches [#Anhang-Skript-SMBsession Skript SMBsession] wird hier im Anhang vorgestellt. Alle Kunst der richtigen Konfiguration des Clients hilft nichts, wenn beim Start der Benutzer-Session diese sich nicht richtig mit der Netzwerk-Infrastruktur verbindet. Es ist möglich, dass bei mehreren am selben Rechner gleichzeitig angemeldeten Benutzern einer das Netzwerk problemlos durchsuchen kann, während ein anderer nur leere Ordner angezeigt bekommt! Nach der Anmeldung an der GUI landet man bzgl. des Fensters „Netzwerk“ bzw. „Netzwerk durchsuchen“ benutzerspezifisch in einem dieser Zustände: 1. Es funktioniert alles: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour und per NetBIOS angekündigt. Im „Windows-Netzwerk“ werden die Arbeitsgruppen angezeigt. 1. Halb kaputt: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour, aber nicht per NetBIOS angekündigt. Im „Windows-Netzwerk“ werden die Arbeitsgruppen angezeigt. 1. Ganz kaputt: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour, aber nicht per NetBIOS angekündigt. „Windows-Netzwerk“ verhöhnt einen mit einem leeren Fenster. Der Zustand 2 entsteht, wenn eine Einstellung des Gnome-Desktops inkonsistent zur Einstellung der `workgroup` in der Datei '''/etc/samba/smb.conf''' ist und kann durch diese Befehle geheilt werden: {{{ gsettings reset org.gnome.system.smb workgroup # Entweder löschen gsettings set org.gnome.system.smb workgroup FAMILIE # oder die anzuzeigende Arbeitsgruppe einstellen }}} Erläuterung: Wenn es mehrere Arbeitsgruppen im Netzwerk gibt, dann ist die hier eingestellte `workgroup` die einzige, deren per NetBIOS publizierte SMB-Server neben dem Symbol "Windows-Netzwerk" __nicht__ ausgeblendet werden. Somit ist sinnvoll, entweder nichts einzustellen oder hier die Einstellung aus '''/etc/samba/smb.conf''' zu wiederholen. Vom Zustand 3 kann man durch diese Befehle in den Zustand 2 wechseln: {{{#!vorlage Befehl gio mount network:/// gio mount network://smb-root gio mount smb:/// }}} Wenn man keine Arbeitsgruppen sieht, hilft manchmal dieser selbst zwar immer fehlschlagende merkwürdige Befehl als Nebeneffekt, dass sich die "local master browser" melden: {{{#!vorlage Befehl gio mount 'smb://-/' }}} Der Dateimanager Nautilus bemerkt diese Manipulationen manchmal erst nach erneutem Laden des Fensterinhalts. Manchmal ist sogar zusätzlich ein Neustart der Session durch Ab- und Anmelden erforderlich. Wenn man entgegen diesen Hinweisen immer noch nicht alle erwarteten Server neben dem Ordner „Windows-Netzwert“ sieht, kann es an den langen Verzugszeiten liegen. SMB-Server kündigen sich selbst nur alle 12 Minuten an. = Betrieb eines LMB = Die Kommunikation erfolgt über das CIFS-Browse-Protokoll (eine moderne Variante des NetBIOS-Browse-Protokolls), welches die UDP/IPv4-Ports 137 und 138 sowie TCP/IPv4- oder TCP/IPv6-Port 445 benutzt. Diese Ports dürfen im internen Netzwerk nicht blockiert werden. NetBios-über-TCP Port 139 kann man dagegen sperren. Der Router an der Übergabestelle zwischen internem zu externem Netzwerk sollte die NetBIOS- und SMB-Ports 135, 137, 138, 139 und 445 für ein- und ausgehende UDP- und TCP-Pakete sperren. Man kann in seinem Netzwerk beliebig vielen Rechnern erlauben, als LMB zu arbeiten. Empfohlen wird jedoch, dies nur bei dauerhaft im Netzwerk aktiven Rechnern zuzulassen. Ein nur zeitweise an das Netzwerk angeschlossener Rechner kann die Funktionalität der Netzwerksuche und damit das Fenster „Windows-Netzwerk“ stören, wenn er beim Beitritt zum Netzwerk eine Wahl des LMB erzwingt. Diese Unterbrechungen können mehrere Minuten dauern. Es gibt sowohl Betriebssysteme, bei denen per Voreinstellung der Betrieb als LMB zugelassen ist wie auch solche, die dies verbieten. Die Verwendung eines vom Vorgabewert WORKGROUP abweichenden Namens für die eigene Arbeitsgruppe verhindert, dass beim Anschluss eines fremden Rechners diese eine Wahl des LMB für die eigene Arbeitsgruppe auslöst und damit die Netzwerksuche stört. Wenn der aktive LMB aus dem Netzwerk entfernt wird, wählen die verbleibenden LMB-Kandidaten einen neuen. Dazu muss es aber noch mindestens einen Rechner im Netzwerk geben, der eine Wahl zum LMB anstoßen darf (`preferred master = yes` beim SAMBA-Server). Neue Server im Netzwerk werden manchmal erst mit Zeitverzug sichtbar. Ein Server erneuert alle 12 Minuten seine Meldung an den LMB. Bei der Entfernung eines Servers aus dem Netzwerk ohne ordentliche Abmeldung wird er noch bis zu 36 Minuten in der Serverliste geführt. = Sicherheitsaspekte = Die Protokoll-Version SMBv1 ist unsicher und sollte daher nach Möglichkeit vermieden werden. * Wer im Dateimanager das Fenster „Windows-Netzwerk“ benutzen möchte, benötigt im Netzwerk einen "local master browser". Dies kann ein Samba-Server sein, dann muss aber auf diesem die Protokoll-Version SMBv1 (geschrieben als NT1) verfügbar sein. Zur Begrenzung des Risikos kann man einen SAMBA-Server ohne explizite Freigaben als LMB konfigurieren. * Der zum Browsen im Dateimanager verwendete SMB-Client muss ebenfalls das Protokoll SMBv1 benutzen dürfen, da [:GVFS:gio mount] sonst keine Rechnerliste vom LMB erhält. Die Freigabeliste jedes SMB-Servers kann man aber auch mit den Protokoll-Versionen SMBv2+ abfragen, somit kann man auf diesen Servern das Protokoll SMBv1 sperren. In einem so konfiguriertem Netzwerk kann man mit dem Kommandozeilenwerkzeug '''smbclient''' browsen, jedoch nicht im Fenster „Windows-Netzwerk“. Dies ist eine zur Zeit (2020) bestehende funktionale Beschränkung der Dateimanager, welche mit dem Skript im Anhang umschifft werden kann. Das CIFS-Browse-Protokoll und damit der LMB selbst ist nicht von den Sicherheitsproblemen bei SMBv1 betroffen, jedoch erfordert die Verwendung von „Windows-Netzwerk“ zwingend den Betrieb mindestens eines SMB-Dateiservers in einem unsicheren Modus. Jeder IT-Verantwortliche muss daher abwägen, ob in seinem Verantwortungsbereich der Komfortgewinn das damit verbundene Risiko rechtfertigt. = Begriffserklärungen = == NetBIOS-Name == NetBIOS-Namen und SMB-Namen werden oft miteinander verwechselt, da sie eng miteinander verwandt sind. Ein NetBIOS-Name ist eine Folge von genau 16 Bytes. Solche Bezeichner erfüllten bei urtümlichen Netzwerk-Protokollen wie NetBIOS oder LanManager zwei wichtige Aufgaben: 1. Sie dienten auf der Netzwerkebene Layer-3 als Adressen analog zu den IPv4-Adressen für heutige IP-Netze. In dieser Funktions sind sie aber heute bedeutungslos. 1. Sie können auf Netzwerkebene Layer-5+ zur Bezeichnung von Services verwendet werden. In diesem Sinne sind sie auch für heutige SMB-Netzwerke nach wie vor in Gebrauch. Für die Netbios-Namen können grundsätzlich alle 8-Bit-Zeichen verwendet werden. Als einzige harte Einschränkung darf den Name nicht mit einem Leerzeichen beginnen, weil das Leerzeichen zum Auffüllen von kürzeren Namen auf genau 16 Byte verwendet wird. Es war aber von Anfang an die Konvention, dass man sich auf druckbare Zeichen beschränkt, weil man die Namen ja auch zur Bezeichnung der Services verwenden will. Eine weitere Konvention ist, dass zwar grundsätzlich große und kleine Buchstaben unterschiedliche Adressen bilden, jedoch lassen sich die Rechner unter allen denkbaren Kombinationen von Groß- und Kleinschreibung eines Namens in gleicher Weise ansprechen. Die Standardform verwendet durchgängig Großbuchstaben. Microsoft (welches NetBIOS nicht erfunden hat, aber intensiv nutzt) schränkt die zulässigen Byte weiter ein und verbietet alles, was MS-DOS Pein verursacht, insbesondere die Zeichen „`\/:*?"<|>`“. Der Punkt „`.`“ ist zulässig, jedoch nicht am Anfang. Alle 8-Bit-Zeichen über 127 sind problematisch, weil die gängigen Zeichensätze mit einem Byte wie ISO-8859 (verschiedene Varianten), CP437, CP 1252 usw. die Schriftzeichen hier unterschiedlich kodieren. Die betrifft insbesondere auch die deutschen Umlaute und spezielle Schriftzeichen für andere Sprachen. Bei Multi-Byte-Zeichenkodierung wie UTF-8 (gängig bei Linux) muss man beachten, dass hier ein Schriftzeichen mehrere Byte belegt. Ein NetBIOS-Namen ist daher immer 16 Byte, aber nicht immer 16 Schriftzeichen lang. Der vorsichtige Praktiker vermeidet diese Schriftzeichen in NetBIOS-Namen. Schließlich muss der Praktiker, der Wert darauf legt, dass seine Rechner unabhängig von der symbolischen Adresstechnik immer unter demselben Namen erreichbar sein sollen, auch noch die Beschränkungen der DNS-Namen beachten. Diese Namen dürfen nur „`A-Z`“ (bzw. „`a-z`“), „`0-9`“ sowie den Bindestrich „`-`“ und den Punkt „`.`“ enthalten. Für den Praktiker gilt daher: Ein NetBIOS-Name ist eine Folge von 16 Byte aus dem für DNS-Namen gültigen Zeichensatz. Man darf kürzere Folgen verwenden, da diese automatisch mit Leerzeichen auf 16 Byte ergänzt werden. Trotz syntaktischer Richtigkeit verhalten sich Namen oft problematisch, wenn sie Punkt oder Bindestrich enthalten. Wegen der vielen beschränkenden Einflüsse von anderen Seiten beschränkt man sich am besten auf alphanumerische ASCII-Zeichen. == SMB-Name == Ein SMB-Name ist ein [#NetBIOS-Name NetBIOS-Name ], der bei moderner SMB-Software für den zweiten Anwendungsfall eines NetBIOS-Namens benutzt wird. Damit gelten alle praktischen Beschränkungen bei den NetBIOS-Namen auch hier. Zusätzlich gilt: Man darf selbst nur die ersten 15 der 16 Byte festlegen, weil die Software das 16. Byte als Typenkennzeichen selbst verwaltet und hinzufügt. = Anhang Skript SMBsession = Dieses Skript ertüchtigt den Dateimanager [:Nautilus:], SMB-Netzwerke und -Rechner ohne Verwendung des Protokolls SMBv1 zu durchsuchen sowie sich zu den von den Servern angebotenen Freigaben zu verbinden. * [:Nautilus/Skripte/SMBsession: Erläuterungen und Verwendung des Skripts ] * [:Nautilus/Skripte/SMBsession/SMBsession-Gast: Download ] {dl} = Links = * [https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-brws CIFS-Browse-Protokoll ] in der OpenSpecs-Dokumentation von Microsoft {en} * [:Samba:] * [:Samba_Server_GNOME:] * [:Samba_Client_GNOME:] * [https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858 Stop using SMBv1 ] Ein Aufruf von Microsoft mit Erläuterungen {en} #tag: Netzwerk, Server, Desktop, Samba