ubuntuusers.de

SMBsession

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Dieses Skript ertüchtigt den Dateimanager Nautilus, SMB-Netzwerke und -Rechner ohne Verwendung des unsicheren und veralteten Protokolls SMBv1 zu durchsuchen sowie sich zu den von den Servern angebotenen Freigaben zu verbinden. Dies funktioniert auch mit den per DNS-SD (Avahi) angekündigten Servern. Details zur Benutzung solcher Nautilus-Skripte siehe: Nautilus/Skripte

SMBv1 muss lediglich dann für den Client freigegeben werden, wenn man in seinem Netzwerk noch einen Server betreibt, welcher nur dieses alte Protokoll spricht. Zur Einstellung der SMB-Protokollversionen siehe: Samba Client/GNOME und Samba Client/Windows-Netzwerk

Dieses Skript wurde getestet mit Samba-Servern unter Ubuntu 16.04, 18.04, 20.04 und anderen SMB-Servern. Als Client funktioniert es aber nicht unter Ubuntu 16.04, welches noch eine veraltete GVfs-Syntax verwendet.

Voraussetzungen

Das Skript verwendet smbclient lediglich zum Durchsuchen der Server. Dieses Paket muss zusätzlich zur Standard-Installation [1] installiert werden.

Zum Einhängen der Netzwerk-Freigaben wird vom Skript das Programm gio mount verwendet, welches bei Ubuntu-Desktops ab 18.04 zu einer Standard-Installation gehört.

Die grafischen Dialoge mit dem Benutzer erfolgen über Zenity, welches zur Standard-Installation [1] gehört.

Installation

Das Skript SMBsession-Gast ⮷ herunterladen, im Nautilus-Skript-Ordner ~/.local/share/nautilus/scripts ablegen und als Programm ausführbar machen[3][4].

Der Dateiname kann frei gewählt werden, es wird aber ein Name wie SMBsession-Gast oder SMBsession Gast empfohlen. Das Programm verwendet nämlich das letzte Wort (hier: Gast) seines Namens als Vorgabe für den Benutzernamen.

Wer regelmäßig mit mehreren SMB-Servern arbeitet und unterschiedliche Benutzernamen verwendet, kann sich durch zusätzliche Verknüpfungen einige Bedienschritte einsparen.

Verwendung

Man navigiert in der Netzwerk-Darstellung von Nautilus zu dem Server zu dem die SMB-Session aufgebaut werden soll bzw. zu dessen Freigabe man sich verbinden will. Jedoch öffnet man jetzt diesen Server nicht per normaler Bedienung, weil dann die auf gio mount basierenden Dateimanager nur eine Fehlermeldung „Zugriff auf den Ort ist nicht möglich“ anzeigen würde. Statt dessen öffnet man (meist mit der rechten Maustaste) das Kontextmenü des dargestellten Servers und startet[2] unter dem Menüpunkt Skripte dieses Skript.

Es öffnet sich nach kurzer Zeit ein Dialog mit der Freigabeliste dieses Servers. Man wählt die gewünschte(n) Freigabe(n) und klickt auf „Weiter“ oder bricht ab.

Im nächsten Dialog wird nach dem Passwort des angezeigten Benutzers auf dem entfernten Rechner gefragt. Man kann in diesem Dialog auch den Benutzernamen ändern. Das Passwort wird nur verdeckt angedeutet.

  1. Anmeldung als Gast: Wenn man kein Passwort eingibt, wird für die Anmeldung beim SMB-Server der angezeigte Benutzer und eine nicht-leere Zeichenfolge als (falsches) Passwort verwendet. Dies führt dann, wenn der Server mitspielt, zur Anmeldung als Gast auf dem entfernten Rechner. Üblicherweise darf man dann nur Dateien lesen. Beachte: In der Gast-Rolle erhält man nicht unbedingt den Benutzernamen Gast oder guest und schon gar nicht den im Dialog eingestellten Benutzernamen, sondern den vom Server-Administrator für die Gast-Rolle vorgesehenen Namen; bei Samba-Servern ist dies üblicherweise nobody.

  2. Anmeldung als bekannter Benutzer: Wenn für den angezeigten Benutzer auf dem Server ein SMB-Passwort eingerichtet wurde, sollte man dieses Passwort richtig angeben. Man wird dann auf dem Server mit diesem Benutzernamen angemeldet und kann die Dateien in der Freigabe mit den effektiven Berechtigungen (eine Kombination aus Samba- und Unix-Rechten) bearbeiten.

Bei einem Anmeldeversuch mit einem dem Server bekannten Benutzernamen und falschem Passwort hängt das Ergebnis von der Konfiguration des Servers ab: Entweder wird man abgewiesen oder in der Gast-Rolle angemeldet.

Hinweis:

Der Name für die Gast-Rolle (bei Samba: nobody) ist ein dem SMB-Server bekannter Benutzername. Wenn man diesen zur Anmeldung angibt, verwendet man den o.g zweiten Modus und es wird dann vom Server das richtige Passwort des Benutzers nobody erwartet. Üblicherweise hat aber dieser Account gar kein Passwort und darf sich nicht anmelden.

Ein Zugriff auf die Freigaben per Null-Session, also ohne Benutzernamen und ohne Passwort („Ohne Passwort“ ist im SMB-Protokoll etwas anderes als „leeres Passwort“!), ist mit diesem Skript nicht vorgesehen.

Ein Anmeldeversuch mit Benutzernamen, aber ohne oder mit leerem Passwort misslingt im Protokoll immer. Deshalb wird vom Skript immer stillschweigend ein leeres Passwort beim Anmeldeversuch durch eine nicht-leere Zeichenfolge ersetzt.

Die Verwendung von veralteten Share-Level-Freigaben, die nur ein Passwort, aber keinen Benutzernamen benötigen, ist mit diesem Skript ebenfalls nicht vorgesehen. Deshalb wird ein leerer Benutzername beim Anmeldeversuch stillschweigend durch den Wert der Umgebungsvariablen USER ersetzt.

SMBsession-in-Aktion-1_800x450.png SMBsession-in-Aktion-2_800x450.png SMBsession-in-Aktion-3_800x450.png SMBsession-in-Aktion-4_800x450.png
1. Im Netzwerkfenster Server auswählen und Skript starten, 2. Freigabe(n) auswählen, 3. ggf. Passwort eingeben 4. und Freigaben benutzen.

Technische Hinweise

Die wichtigste Zeile im Skript betrifft die Abfrage der Freigabeliste vom SERVER mit:

smbclient -N -U '' -L //SERVER 

Für diese Aufgabe benutzten die GUI-Dateimanager die GIO-Bibliothek, welche ein veraltetes, nur bei SMBv1 verfügbares Verfahren benutzt und deshalb versagt, wenn diese veraltete Protokollversion auf Client- oder Server-Seite nicht verfügbar ist. Dies ist ab Ubuntu 20.04 Standard. smbclient beherrscht für diese Aufgabe jedoch die modernen Verfahren.

Im Skript wird smbclient sogar zunächst (über client min protocol) explizit die Benutzung von SMBv1 verboten, weil dann die Freigabelisten wesentlich schneller erhalten werden. Nur bei Servern, welche nur SMBv1 sprechen, wird nach Versagen der modernen Versionen auf die alte Technik zurückgegriffen.

Die restlichen ca. 100 Zeilen dienen nur zur Umformatierung und Aufbereitung der Zielangabe sowie zur Bedienerführung.

In der Zeile

readonly W0=3 dW=8 Wmax=1000 H0=5 dH=24 Hmax=600 

werden Konstanten definiert, mit denen die Größe der angezeigten Fenster an den Fensterinhalt angepasst wird. Im Normalfall sollte somit eine manuelle Anpassung der Fenster nicht erforderlich sein. Wenn das auf dem eigenen Rechner unbefriedigend funktioniert, kann man in dieser Zeile Anpassungen versuchen. W0 mit H0 beschreiben die Mindestgröße des Fensters in Zeichen, dW mit dH die Pixel für ein Zeichen und Wmax mit Hmax die gewünschte maximale Fenstergröße. zenity behandelt die ihm übergebene Fenstergröße aber als unverbindlich.

Probleme beheben

  • Wenn das Skript nicht von Nautilus im Kontextmenü angezeigt wird, fehlt dem Benutzer möglicherweise das Ausführungsrecht[4] für die Datei.

  • Wenn im Netzwerkfenster von Nautilus nicht alle erwarteten Server angezeigt werden, funktioniert möglicherweise die automatische Konfiguration des "local master browsers" für das Netzwerk nicht richtig. Siehe für weitere Hinweise: Samba Client/Windows-Netzwerk

Sicherheit

Die per Dialog an dieses Programm übermittelten Passworte werden vom Skript nicht in einer Datei gespeichert, sondern nur programmintern verwendet.

Man sollte aber beachten, dass sie zur Laufzeit des Programms irgendwo im Speicher herumliegen und nach dem Ende des Programmlaufs möglicherweise immer noch im Arbeitsspeicher herumliegen und somit auch in den Speicherbereich eines anderen Programms gelangen könnten. Als Inhalt eines Speicherblocks können solche benutzten Passworte auch in den Auslagerungsspeicher (SWAP) oder als uninitialisierter Speicher in irgendeine Datei gelangen und können so vielleicht nach langer Zeit jeden Ort im Universum erreichen.

Die Wahrscheinlichkeit, dass über diese Mechanismen Passworte kompromittiert werden, ist klein. Ob das Risiko vernachlässigbar ist, muss aber individuell geprüft werden.

Diese Revision wurde am 2. Juli 2020 10:27 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Samba, Desktop