Ich nutze in meinem Homelab mehrere Ubuntu-Rechner. Auf die Dateien greife ich gerne bequem von meinem Windows-Rechner aus zu. Dafür ist Samba die einfachste Lösung. Die Einrichtung ist schnell erledigt. Trotzdem hatte ich zuletzt einen hartnäckigen Fehler beim Verbinden. Die Ursache lag am Ende gar nicht auf dem Ubuntu-Rechner, sondern unter Windows. Diesen Artikel schreibe ich vor allem als Dokumentation für mich selbst. Vielleicht hilft er auch Ihnen.

Phase 1: Samba installieren

Den Samba-Server installieren Sie mit folgendem Befehl.

Befehl: sudo apt-get install samba -y

Phase 2: Freigabe in der smb.conf anlegen

Die Konfiguration liegt in der Datei smb.conf im Ordner /etc/samba. Öffnen Sie diese im Editor Nano.

Befehl: sudo nano /etc/samba/smb.conf

Ganz an das Ende der Datei fügen Sie die folgenden Zeilen ein. Damit geben Sie Ihr Home-Verzeichnis im Netzwerk frei.

[OptiPlex5040]
   comment = Dev Compute OptiPlex 5040
   path = /home/ingmar
   read only = no
   browsable = yes

Der Name in den eckigen Klammern ist der Freigabename. Unter genau diesem Namen sprechen Sie die Freigabe später von Windows aus an. Er ist nicht identisch mit dem Hostnamen des Rechners.

Tipp zum Pfad: Technisch funktioniert auch path = /. Dann ist aber das komplette Dateisystem sichtbar. Schreiben können Sie dort ohnehin fast nirgends, weil die meisten Ordner root gehören. Das eigene Home-Verzeichnis ist die sicherere Wahl.

Achtung beim Kopieren: Wer die Zeilen von einer Webseite kopiert, schleppt manchmal Backticks oder typografische Sonderzeichen mit in die Datei. Dann erkennt Samba die Freigabe nicht.

Phase 3: Samba-Passwort vergeben und User aktivieren

Samba verwendet nicht das Passwort des Linux-Users. Sie müssen für Ihren vorhandenen User ein eigenes Samba-Passwort hinterlegen.

Befehl: sudo smbpasswd -a <benutzername>

Zur Sicherheit aktivieren Sie den User anschließend explizit.

Befehl: sudo smbpasswd -e <benutzername>

Danach starten Sie den Samba-Dienst neu.

Befehl: sudo systemctl restart smbd

Phase 4: Konfiguration direkt am Ubuntu-Rechner testen

Das war für mich die wichtigste Erkenntnis. Bevor Sie unter Windows suchen, prüfen Sie zuerst, ob Samba selbst funktioniert. Dafür gibt es drei hilfreiche Werkzeuge.

Mit testparm prüfen Sie die smb.conf auf Fehler. Die Ausgabe zeigt alle erkannten Freigaben.

Befehl: testparm -s

Mit pdbedit sehen Sie, welche User in Samba angelegt sind.

Befehl: sudo pdbedit -L

Mit dem smbclient melden Sie sich lokal an der eigenen Freigabe an. Das ist der entscheidende Test.

Befehl: smbclient //localhost/OptiPlex5040 -U <benutzername>

Erscheint nach der Passworteingabe die Eingabeaufforderung smb: \>, läuft Samba korrekt. Mit exit verlassen Sie die Sitzung wieder. Klappt dieser Test, liegt ein Fehler nicht mehr an Samba, sondern an Firewall, Netzwerk oder Windows.

Ist die Firewall ufw aktiv, geben Sie Samba frei.

Befehl: sudo ufw status

Befehl: sudo ufw allow samba

Die IP-Adresse des Rechners für den Zugriff von Windows aus liefert dieser Befehl.

Befehl: hostname -I

Phase 5: Von Windows aus verbinden

Statt über den Explorer verbinde ich mich inzwischen lieber über die Eingabeaufforderung oder PowerShell. So sehe ich echte Fehlermeldungen. Wichtig ist der Parameter /user:. Sonst schickt Windows automatisch den Windows-Benutzer oder das Microsoft-Konto mit.

Befehl: net use * \\192.168.178.142\OptiPlex5040 /user:<benutzername>

Der Stern sorgt dafür, dass Windows selbst den nächsten freien Laufwerksbuchstaben wählt. Er trennt keine Verbindungen. Wer einen festen Buchstaben möchte, schreibt ihn statt des Sterns hin, zum Beispiel O:.

Damit Windows das Passwort dauerhaft speichert, hilft dieser Befehl.

Befehl: cmdkey /add:192.168.178.142 /user:<benutzername> /pass

Phase 6: Fehlersuche unter Windows

Hier lag mein eigentliches Problem. Samba lief die ganze Zeit korrekt. Windows hat die Verbindung trotzdem verweigert.

Systemfehler 85: Der lokale Gerätename wird bereits verwendet

Der gewählte Laufwerksbuchstabe ist schon belegt. Nehmen Sie einen anderen Buchstaben oder den Stern.

Systemfehler 1219: Mehrfache Verbindungen mit mehreren Benutzernamen

Windows erlaubt pro Server nur einen Benutzernamen gleichzeitig. Besteht bereits eine Verbindung zum selben Rechner mit einem anderen User, scheitert jede neue Anmeldung. Diese alte Verbindung kann auch eine längst vergessene Freigabe sein. Sie bleibt selbst dann aktiv, wenn sie im Status als „Getrennt“ erscheint.

Alle bestehenden Verbindungen zeigt dieser Befehl.

Befehl: net use

Bei mir stand dort ein altes Laufwerk O: mit der Freigabe Claude-code auf derselben IP-Adresse. Diese Freigabe existierte gar nicht mehr. Windows hielt aber trotzdem daran fest.

Löschen Sie gezielt nur die Verbindungen zu diesem einen Rechner.

Befehl: net use O: /delete

Befehl: net use \\192.168.178.142\IPC$ /delete

Auch gespeicherte Zugangsdaten können stören. Diese prüfen und entfernen Sie ebenfalls gezielt.

Befehl: cmdkey /list

Befehl: cmdkey /delete:192.168.178.142

Vorsicht: Der oft empfohlene Befehl net use * /delete trennt alle Netzlaufwerke. Wer wie ich viele Verbindungen hat, sollte ihn nicht verwenden.

Der Trick mit dem Hostnamen

Windows behandelt IP-Adresse und Hostname als zwei verschiedene Server. Wer eine alte Verbindung nicht löschen möchte, verbindet sich einfach über den Namen.

Befehl: net use * \\Dell5040\OptiPlex5040 /user:<benutzername>

Hintergrund: map to guest = Bad User

Ubuntu setzt diese Einstellung standardmäßig in der smb.conf. Meldet sich jemand mit einem unbekannten Benutzernamen an, macht Samba daraus einen Gast-Zugriff. Aktuelle Windows-Versionen blockieren Gast-Zugriffe aber. Schickt Windows also automatisch den falschen Benutzer, scheitert die Verbindung, obwohl am Server alles stimmt. Der Parameter /user: verhindert genau das.

Spickzettel

Zweck System Befehl
Konfiguration prüfen Ubuntu testparm -s
Samba-User anzeigen Ubuntu sudo pdbedit -L
Freigabe lokal testen Ubuntu smbclient //localhost/FREIGABE -U user
Dienst neu starten Ubuntu sudo systemctl restart smbd
Firewall freigeben Ubuntu sudo ufw allow samba
Verbindungen anzeigen Windows net use
Einzelnes Laufwerk trennen Windows net use O: /delete
Verbinden mit User Windows net use * \\IP\FREIGABE /user:user
Gespeicherte Zugangsdaten Windows cmdkey /list

Fazit

Die Samba-Einrichtung selbst war wie immer schnell erledigt. Die Fehlersuche hat mich deutlich länger