Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Samba Server unter Ubuntu 22.04 einrichten
Diese Anleitung beschreibt die Installation und Einrichtung eines Samba-Servers unter Ubuntu 22.04.
Samba ermöglicht die Freigabe von Verzeichnissen im Netzwerk, sodass Linux- und Windows-Clients darauf zugreifen können.
1. Samba installieren
Auf dem Server:
\\ sudo apt update\\ sudo apt install samba samba-common-bin smbclient cifs-utils\\
Dienst prüfen:
\\ systemctl status smbd\\
Falls der Dienst nicht aktiv ist:
\\ sudo systemctl enable smbd\\ sudo systemctl start smbd\\
2. Freigabe-Verzeichnis erstellen
Beispiel Server 1:
\\ sudo mkdir -p /media/daten/samba/sambashare\\
Beispiel Server 2:
\\ sudo mkdir -p /home/samba/publicshare\\
3. Rechte setzen
Beispiel mit dem Benutzer someuser.
Server 1:
\\ sudo chown -R someuser:someuser /media/daten/samba/sambashare\\ sudo chmod -R 770 /media/daten/samba/sambashare\\
Server 2:
\\ sudo chown -R someuser:someuser /home/samba/publicshare\\ sudo chmod -R 770 /home/samba/publicshare\\
Die Rechte der übergeordneten Verzeichnisse können mit folgendem Befehl geprüft werden:
\\ namei -l /home/samba/publicshare\\
Wichtig ist, dass die notwendigen Verzeichnisse betreten werden können. Dafür ist das x-Recht auf den Verzeichnissen erforderlich.
4. Samba-Benutzer einrichten
Ein Samba-Benutzer muss auch als Linux-Benutzer existieren.
Falls der Benutzer noch nicht existiert:
\\
sudo adduser someuser\\
Samba-Passwort setzen:
\\ sudo smbpasswd -a someuser\\
Samba-Benutzer aktivieren:
\\ sudo smbpasswd -e someuser\\
Samba-Benutzer anzeigen:
\\
sudo pdbedit -L\\
5. Samba-Freigabe konfigurieren
Die Samba-Konfiguration bearbeiten:
\\ sudo nano /etc/samba/smb.conf\\
Am Ende der Datei wird die Freigabe eingetragen.
Beispiel für Server 1:
\\ [sharing]\\ path = /media/daten/samba/sambashare\\ comment = Samba share directory\\ browseable = yes\\ read only = no\\ guest ok = no\\ valid users = someuser\\ create mask = 0660\\ directory mask = 0770\\
Beispiel für Server 2:
\\ [sharing]\\ path = /home/samba/publicshare\\ comment = Samba share directory\\ browseable = yes\\ read only = no\\ guest ok = no\\ valid users = someuser\\ create mask = 0660\\ directory mask = 0770\\
Wichtig:
Der Freigabename ist der Name in den eckigen Klammern.
In diesem Beispiel lautet der Freigabename:
\\ sharing\\
Der Zugriff erfolgt daher nicht über den Linux-Pfad, sondern über den Freigabenamen.
Richtig:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\
Falsch:
\\ smbclient //SERVER-IP/home/samba/publicshare -U someuser\\
6. Konfiguration prüfen
Nach jeder Änderung an der Datei smb.conf sollte die Konfiguration geprüft werden:
\\ testparm\\
Oder kurz zusammengefasst:
\\ testparm -s\\
Gezielt prüfen, ob die Freigabe vorhanden ist:
\\ testparm -s | grep -A20 '^\[sharing\]'\\
7. Samba neu starten
Nach erfolgreicher Prüfung Samba neu starten:
\\
sudo systemctl restart smbd\\
Status prüfen:
\\ systemctl status smbd\\
8. Lokalen Zugriff testen
Auf dem Samba-Server selbst:
\\ smbclient -L //localhost -U someuser -m SMB3\\
Beispielausgabe:
\\ Sharename Type Comment\\ --------- ---- -------\\ print$ Disk Printer Drivers\\ sharing Disk Samba share directory\\ IPC$ IPC IPC Service\\ SMB1 disabled -- no workgroup available\\
Die Meldung
\\ SMB1 disabled -- no workgroup available\\
ist kein Fehler. Sie bedeutet nur, dass die alte SMB1-Arbeitsgruppen-Suche deaktiviert ist. SMB1 sollte aus Sicherheitsgründen nicht wieder aktiviert werden.
Direkt mit der Freigabe verbinden:
\\ smbclient //localhost/sharing -U someuser -m SMB3\\
Wenn die Verbindung funktioniert, erscheint die Samba-Konsole.
Befehle innerhalb der Samba-Konsole:
\\ ls\\ put test.txt\\ get test.txt\\ exit\\
9. Zugriff von einem anderen Linux-Client
Zuerst die IP-Adresse des Samba-Servers ermitteln:
\\
hostname -I\\
Vom Client aus die Freigaben anzeigen:
\\ smbclient -L //SERVER-IP -U someuser -m SMB3\\
Direkt verbinden:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\
Beispiel:
\\ smbclient //192.168.1.42/sharing -U someuser -m SMB3\\
10. Firewall freigeben
Falls UFW aktiv ist:
\\
sudo ufw allow samba\\
Oder eingeschränkt auf das lokale Netz, zum Beispiel 192.168.1.0/24:
\\ sudo ufw allow from 192.168.1.0/24 to any app Samba\\
Status prüfen:
\\
sudo ufw status\\
11. Häufige Fehler
Fehler: SMB1 disabled -- no workgroup available
Diese Meldung ist normalerweise unkritisch.
Ursache:
Die alte Arbeitsgruppen-Suche über SMB1 ist deaktiviert.
Lösung:
Freigabe direkt über IP-Adresse oder Hostname aufrufen:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\
SMB1 sollte nicht aktiviert werden.
Fehler: NT_STATUS_BAD_NETWORK_NAME
Beispiel:
\\ tree connect failed: NT_STATUS_BAD_NETWORK_NAME\\
Ursache:
Der angegebene Freigabename existiert nicht.
Beispiel:
Wenn die Freigabe in smb.conf so heißt:
\\ [sharing]\\ path = /home/samba/publicshare\\
dann muss der Zugriff so erfolgen:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\
Nicht so:
\\ smbclient //SERVER-IP/publicshare -U someuser -m SMB3\\
Der Freigabename ist immer der Name in den eckigen Klammern.
Fehler: NT_STATUS_NOT_FOUND
Ursache:
Meist wurde ein Platzhalter oder falscher Servername verwendet.
Falsch:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\
Richtig mit echter IP-Adresse:
\\ smbclient //192.168.1.42/sharing -U someuser -m SMB3\\
Oder lokal auf dem Server:
\\ smbclient //localhost/sharing -U someuser -m SMB3\\
12. Wichtige Prüfkommandos
Samba-Dienst prüfen:
\\ systemctl status smbd\\
Samba-Konfiguration prüfen:
\\ testparm\\
Aktive Freigaben anzeigen:
\\ smbclient -L //localhost -U someuser -m SMB3\\
Samba-Benutzer anzeigen:
\\
sudo pdbedit -L\\
Logdatei prüfen:
\\ sudo tail -n 100 /var/log/samba/log.smbd\\
Systemd-Log prüfen:
\\ sudo journalctl -u smbd -n 100 --no-pager\\
Verzeichnisrechte prüfen:
\\ namei -l /home/samba/publicshare\\
13. Zusammenfassung
Für die Samba-Freigabe sind drei Punkte entscheidend:
* Das Linux-Verzeichnis muss existieren.
* Der Samba-Benutzer muss eingerichtet sein.
* Der Zugriff erfolgt über den Freigabenamen aus smb.conf, nicht über den Linux-Pfad.
Beispiel:
\\ [sharing]\\ path = /home/samba/publicshare\\
Zugriff:
\\ smbclient //SERVER-IP/sharing -U someuser -m SMB3\\