Files
mkdocs-etz/mkdocs/docs/basics/Windows_Freigaben_fuer_Linux-Einsteiger.md
2025-12-14 15:05:31 +01:00

18 KiB
Raw Blame History

Samba-Konfiguration für Linux-Einsteiger

Einführung in Samba

Samba ist eine Open-Source-Software, die es Linux-Systemen ermöglicht, Datei und Druckdienste* für Windows-, macOS* und andere Linux-Clients bereitzustellen. Samba implementiert das SMB/CIFS-Protokoll (Server Message Block / Common Internet File System), das in Windows-Netzwerken standardmäßig verwendet wird.

Wichtige Anwendungsfälle:

  • Dateifreigaben im lokalen Netzwerk (z. B. für Medien, Dokumente oder Backups).
  • Druckerfreigaben für Windows-Clients.
  • Zentraler Speicher für mehrere Nutzer (z. B. in kleinen Büros oder Heimnetzwerken).

Voraussetzungen:

  • Ein Linux-Server (z. B. Ubuntu, Debian, Raspberry Pi OS).
  • Root-Zugriff oder sudo-Berechtigungen.
  • Grundkenntnisse in der Linux-Kommandozeile.

Installation von Samba

1. Paketdatenbank aktualisieren

sudo apt update && sudo apt upgrade -y

2. Samba installieren

sudo apt install samba

3. Dienststatus prüfen

sudo systemctl status smbd

Erwarteter Output: active (running). Falls nicht aktiv: sudo systemctl start smbd und sudo systemctl enable smbd.

Zum verlassen q oder strg + c

Die Konfigurationsdatei smb.conf

Die zentrale Konfigurationsdatei /etc/samba/smb.conf steuert das Verhalten des Samba-Servers. Sie ist in zwei Hauptbereiche unterteilt:

[global]: Globale Einstellungen für den gesamten Server. [Freigabename]: Definition einzelner Freigaben (Ordner, Drucker).

Globale Einstellungen [global]

Die globalen Einstellungen gelten für alle Freigaben, sofern sie nicht in einer Freigabe überschrieben werden. Wichtige Optionen für einen Standalone-Server:


[global]
   # Netzwerk-Identifikation
   workgroup = WORKGROUP          # Name der Arbeitsgruppe (wie in Windows)
   server string = %h server (Samba, Ubuntu)  # Beschreibung des Servers (%h = Hostname)

   # Netzwerk-Interfaces
   interfaces = 127.0.0.0/8 eth0  # Auf welchen Interfaces soll Samba laufen?
   bind interfaces only = yes     # Nur auf den genannten Interfaces

   # Protokollierung
   log file = /var/log/samba/log.%m  # Log-Datei pro Client (%m = Client-Name)
   max log size = 1000               # Maximale Log-Größe in KB
   logging = file                    # Logs nur in Dateien (nicht syslog)

   # Sicherheit
   server role = standalone server   # Server arbeitet allein (keine Domain)
   map to guest = bad user          # Unbekannte Nutzer werden als "Gast" behandelt
   obey pam restrictions = yes        # Nutzer müssen Linux-PAM-Regeln einhalten
   unix password sync = yes         # Samba-Passwort ändert auch Linux-Passwort
   passwd program = /usr/bin/passwd %u  # Programm zum Ändern des Passworts
   pam password change = yes        # PAM für Passwort-Änderungen nutzen

   # Nutzerfreigaben
   usershare allow guests = yes    # Gäste dürfen auf Nutzerfreigaben zugreifen

Hinweise:

; oder #:
; = Deaktivierter Vorschlag (kann aktiviert werden).
# = Standardwert (wird auch ohne Angabe genutzt).

Platzhalter:

%h = Hostname des Servers.
%m = Name des Clients.
%S = Name der aktuellen Freigabe.

Anpassungen an Windows 11

Fügen sie unterhalb dieser Einstellungen im noch im Bereich [Global] :

    # Protokolle und Kompatibilität
    server min protocol = SMB2
    smb encrypt = desired 

Freigaben definieren

Freigaben werden in eigenen Abschnitten definiert, z. B. [Musik] oder [Dokumente]. Jede Freigabe hat einen Namen (erscheint im Netzwerk) und Optionen für Zugriffsrechte. Grundlegende Optionen:

Option Bedeutung Beispiel
comment Beschreibung der Freigabe (erscheint im Explorer). comment = Medienarchiv
path Pfad zum freigegebenen Ordner. path = /srv/samba/musik
browseable yes: Freigabe ist im Netzwerk sichtbar. no: Nur mit direktem Pfad. browseable = yes
read only yes: Nur Lesezugriff. no: Schreibzugriff erlaubt. read only = no
guest ok yes: Gäste (ohne Passwort) dürfen zugreifen. guest ok = yes
valid users Liste der Nutzer/Gruppen, die überhaupt zugreifen dürfen. valid users = @mitarbeiter
write list Liste der Nutzer/Gruppen, die schreiben dürfen (überschreibt read only). write list = @teamleitung
create mask Berechtigungen für neue Dateien (oktal). create mask = 0664
directory mask Berechtigungen für neue Ordner (oktal). directory mask = 0775
force group Neue Dateien/Ordner gehören automatisch zu dieser Gruppe. force group = mitarbeiter

Sonderfälle: Home-Verzeichnisse und Drucker

  1. Nutzer-Home-Verzeichnisse Jeder Nutzer kann automatisch auf sein eigenes Home-Verzeichnis zugreifen:

[homes]
   comment = Persönlicher Ordner
   browseable = no       # Nur der eigene Nutzer sieht die Freigabe
   read only = no        # Nutzer darf schreiben
   valid users = %S      # %S = aktueller Nutzer (z. B. "felix")
   create mask = 0700    # Neue Dateien: rwx------
   directory mask = 0700 # Neue Ordner: rwx------
  1. Druckerfreigabe Samba kann Drucker für Windows-Clients freigeben:

[printers]
   comment = Alle Drucker
   path = /var/spool/samba  # Spoolfolder für Druckaufträge
   browseable = no          # Drucker sind nicht im Explorer sichtbar
   printable = yes          # Erlaubt Druckaufträge
   guest ok = no            # Nur authentifizierte Nutzer dürfen drucken

[print\$]
   comment = Druckertreiber
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
   write list = root, @lpadmin  # Nur Admins dürfen Treiber hochladen

Rechteverwaltung unter Linux

Die korrekte Vergabe von Datei* und Ordnerrechten ist essenziell für die Sicherheit und Funktionalität von Samba-Freigaben.

chown: Besitzer und Gruppe ändern

Jede Datei/Ordner gehört einem Besitzer (User) und einer Gruppe (Group). Syntax:

sudo chown [BESITZER]:[GRUPPE] [DATEI/ORDNER]

Beispiele:

Befehl Wirkung
sudo chown felix:mitarbeiter /srv/samba Besitzer: felix, Gruppe: mitarbeiter.
sudo chgrp mitarbeiter /srv/samba Ändert nur die Gruppe auf mitarbeiter.
sudo chown -R nobody:mitarbeiter /srv/samba Rekursiv: Besitzer: nobody, Gruppe: mitarbeiter für alle Unterordner/Dateien.

Hinweise:

sudo ist erforderlich, wenn Sie nicht der Besitzer sind. -R (rekursiv): Wendet die Änderung auf alle Unterordner/Dateien an. Samba-Empfehlung: Für Freigaben oft nobody oder root als Besitzer und eine spezifische Gruppe (z. B. mitarbeiter) verwenden.

chmod: Zugriffsrechte setzen

Die Zugriffsrechte werden für drei Kategorien von Nutzern definiert:

Besitzer (User): Der Nutzer, dem die Datei/der Ordner gehört. Gruppe (Group): Die Gruppe, der die Datei/der Ordner zugeordnet ist. Andere (Others): Alle anderen Nutzer.

Jede Kategorie kann drei Rechte haben:

r (Read): Lesen. w (Write): Schreiben. x (Execute): Ausführen (bei Ordnern: Betreten).

Symbolische Darstellung:

rwx r-x r--
│   │   │
│   │   └─ Andere (Others): Lesen (r), kein Schreiben (), kein Ausführen ()
│   └───── Gruppe (Group): Lesen (r), kein Schreiben (), Ausführen (x)
└───────── Besitzer (User): Lesen (r), Schreiben (w), Ausführen (x)

Oktal-Darstellung:

Jedes Recht wird durch eine Zahl repräsentiert:

r = 4 w = 2 x = 1 Die Rechte für jede Kategorie werden addiert:

Rechte Oktal-Wert Bedeutung
--- 0 Keine Rechte
--x 1 Nur Ausführen
-w- 2 Nur Schreiben
-wx 3 Schreiben + Ausführen
r-- 4 Nur Lesen
r-x 5 Lesen + Ausführen
rw- 6 Lesen + Schreiben
rwx 7 Vollzugriff

Die Oktal-Modi für alle drei Kategorien werden kombiniert:

  • 755 = rwxr-xr-x (Besitzer: Vollzugriff, Gruppe/Andere: Lesen + Ausführen)
  • 644 = rw-r--r-- (Besitzer: Lesen + Schreiben, Gruppe/Andere: Nur Lesen)
  • 770 = rwxrwx--- (Besitzer/Gruppe: Vollzugriff, Andere: Keine Rechte)

Syntax von chmod:

sudo chmod [OPTIONEN] [RECHTE] [DATEI/ORDNER]
  • RECHTE: Symbolisch (z. B. u=rwx,g=rx,o=rx) oder oktal (z. B. 755).

  • OPTIONEN:

    • -R: Rekursiv (für alle Unterordner/Dateien).

Beispiele:

Befehl Wirkung
sudo chmod 755 /srv/samba Besitzer: rwx, Gruppe/Andere: r-x.
sudo chmod 644 datei.txt Besitzer: rw-, Gruppe/Andere: r--.
sudo chmod -R 770 /srv/samba Rekursiv: Besitzer/Gruppe: rwx, Andere: ---.
sudo chmod u+x skript.sh Fügt dem Besitzer das Ausführrecht (x) hinzu.
sudo chmod g-w /srv/samba Entfernt das Schreibrecht für die Gruppe.

Samba-spezifische Empfehlungen:

Freigabe-Ordner:

  • 775 (rwxrwxr-x): Besitzer und Gruppe haben Vollzugriff, Andere dürfen lesen und Ordner betreten.
  • 770 (rwxrwx---): Nur Besitzer und Gruppe haben Zugriff (empfohlen für sensible Daten).

Dateien in Freigaben:

  • 664 (rw-rw-r--): Besitzer und Gruppe dürfen lesen/schreiben, Andere nur lesen.
  • 660 (rw-rw----): Nur Besitzer und Gruppe dürfen lesen/schreiben.

Gruppenverwaltung

Gruppen ermöglichen die zentrale Steuerung von Zugriffsrechten für mehrere Nutzer.

1. Nutzer und Gruppe erstellen:

sudo adduser felix
sudo addgroup mitarbeiter

2. Nutzer einer Gruppe hinzufügen:


sudo usermod -aG mitarbeiter felix  # Fügt "felix" der Gruppe "mitarbeiter" hinzu.

-aG: -a (append) stellt sicher, dass der Nutzer nicht aus anderen Gruppen entfernt wird.

3. Gruppe einer Datei/Ordner zuweisen:


sudo chgrp mitarbeiter /srv/samba/dokumente  # Setzt die Gruppe auf "mitarbeiter".
sudo chmod 770 /srv/samba/dokumente           # Gruppe erhält Vollzugriff.

4. Gruppe in Samba nutzen:


[Dokumente]
   path = /srv/samba/dokumente
   valid users = @mitarbeiter      # Nur Nutzer der Gruppe "mitarbeiter" dürfen zugreifen.
   write list = @teamleitung       # Nur Gruppe "teamleitung" darf schreiben.
   force group = mitarbeiter       # Neue Dateien/Ordner gehören automatisch zur Gruppe "mitarbeiter".

Samba-Freigaben in der Praxis

Beispiel 1: Öffentliche Freigabe

Anwendungsfall: Medienfreigabe für alle Nutzer im Netzwerk (z. B. Musik, Filme). Schritt 1: Ordner erstellen und Rechte setzen

sudo mkdir -p /srv/samba/medien
sudo chown nobody:nogroup /srv/samba/medien  # Besitzer: "nobody", Gruppe: "nogroup"
sudo chmod 777 /srv/samba/medien              # Temporär volle Rechte (für Test)

Schritt 2: Freigabe in smb.conf definieren

[Medien]
   comment = öffentliche Medienfreigabe
   path = /srv/samba/medien
   browseable = yes
   read only = no
   guest ok = yes

Schritt 3: Samba neu starten

sudo systemctl restart smbd

Schritt 4: Von Windows aus testen

Im Explorer: \\<IP-des-Servers>\Medien eingeben.

Beispiel 2: Eingeschränkte Freigabe

Anwendungsfall: Vertrauliche Dokumente für bestimmte Nutzer/Gruppen. Schritt 1: Gruppe und Nutzer anlegen

sudo adduser felix
sudo adduser hans
sudo addgroup mitarbeiter
sudo addgroup teamleitung
sudo usermod -aG mitarbeiter felix
sudo usermod -aG mitarbeiter hans
sudo usermod -aG teamleitung felix

Schritt 2: Ordner erstellen und Rechte setzen

sudo mkdir -p /srv/samba/dokumente
sudo chown nobody:mitarbeiter /srv/samba/dokumente
sudo chmod 770 /srv/samba/dokumente

Schritt 3: Freigabe in smb.conf definieren

[Dokumente]
   comment = Vertrauliche Dokumente
   path = /srv/samba/dokumente
   browseable = yes
   read only = no
   guest ok = no
   valid users = @mitarbeiter      # Nur Gruppe "mitarbeiter" darf zugreifen
   write list = @teamleitung      # Nur Gruppe "teamleitung" darf schreiben
   force group = mitarbeiter      # Neue Dateien/Ordner gehören zur Gruppe "mitarbeiter"
   force create mode = 0660        # Neue Dateien: rw-rw----
   force directory mode = 0770     # Neue Ordner: rwxrwx---

Schritt 4: Nutzer zu Samba hinzufügen

sudo smbpasswd -a felix
sudo smbpasswd -a hans

Schritt 5: Samba neu starten

sudo systemctl restart smbd

Schritt-für-Schritt: Neue Freigabe erstellen

1. Ordner anlegen:

sudo mkdir -p /srv/samba/neue_freigabe

2. Besitzer und Gruppe setzen:

sudo chown nobody:mitarbeiter /srv/samba/neue_freigabe

3. Rechte setzen:


sudo chmod 770 /srv/samba/neue_freigabe

4. Freigabe in /etc/samba/smb.conf definieren:


[NeueFreigabe]
   comment = Beschreibung der Freigabe
   path = /srv/samba/neue_freigabe
   browseable = yes
   read only = no
   guest ok = no
   valid users = @mitarbeiter
   write list = @teamleitung

5. Konfiguration testen:


sudo samba-tool testparm

6. Samba neu starten:


sudo systemctl restart smbd

Häufige Fehler und Lösungen:

Problem Ursache Lösung
Freigabe nicht sichtbar browseable = no oder Firewall blockiert Samba. browseable = yes setzen oder Firewall prüfen (sudo ufw allow samba).
Zugriff verweigert Nutzer nicht in smbpasswd oder falsche Rechte. sudo smbpasswd -a nutzername ausführen. Rechte mit chmod/chown prüfen.
Dateien können nicht gelöscht werden Nutzer ist nicht Besitzer und hat keine Schreibrechte. chmod g+w oder chown anpassen.
Gruppe wird nicht übernommen force group fehlt in smb.conf. force group = gruppenname ergänzen.
Neue Dateien haben falsche Rechte force create mode/force directory mode fehlt. force create mode = 0660 und force directory mode = 0770 setzen.

Wichtige Befehle im Überblick

Befehl Beschreibung
sudo apt install samba Samba installieren.
sudo systemctl restart smbd Samba-Dienst neu starten.
sudo samba-tool testparm Konfiguration auf Fehler prüfen.
sudo smbpasswd -a nutzername Nutzer zu Samba hinzufügen.
sudo chown besitzer:gruppe pfad Besitzer und Gruppe einer Datei/eines Ordners ändern.
sudo chmod 755 pfad Rechte auf rwxr-xr-x setzen.
sudo chmod -R 770 pfad Rechte rekursiv auf rwxrwx--* setzen.
sudo adduser nutzername Benutzer erstellen.
sudo addgroup gruppenname Gruppe erstellen.
sudo usermod -aG gruppenname nutzername Nutzer einer Gruppe hinzufügen.
smbclient -L //localhost -U % Freigegebene Ordner/Drucker auflisten (lokal).

Sicherheitshinweise

Minimale Rechte vergeben:

  • Vermeiden Sie chmod 777. Nutzen Sie stattdessen 770 oder 750.

Keine Gastzugriffe für sensible Daten:

  • Setzen Sie guest ok = no für vertrauliche Freigaben.

Regelmäßige Backups:

  • Sichern Sie die smb.conf und wichtige Freigabe-Ordner.

Firewall konfigurieren:


sudo ufw allow samba  # Erlaubt Samba-Ports (139, 445).

Logs prüfen:

Fehler finden Sie in /var/log/samba/log.%m.

Anhang: Spezialrechte (Sticky Bit, SUID, SGID)

Für fortgeschrittene Anwendungsfälle können Spezialrechte gesetzt werden:

Recht Oktal Symbolisch Wirkung
Sticky Bit 1 t Nur der Besitzer darf Dateien in einem Ordner löschen (z. B. /tmp).
SUID 4 s Führt eine Datei mit den Rechten des Besitzers aus (z. B. passwd).
SGID 2 s Neue Dateien/Ordner erben die Gruppe des Elternordners (nützlich für Samba-Freigaben).

Beispiele:

Befehl Wirkung
sudo chmod 1777 /tmp Setzt das Sticky Bit (nur Besitzer darf Dateien löschen).
sudo chmod 2775 /srv/samba Setzt SGID: Neue Dateien/Ordner erben die Gruppe des Elternordners.
sudo chmod 4755 /usr/bin/programm Setzt SUID: Programm läuft mit Rechten des Besitzers.

Samba-spezifische Nutzung:

  • SGID ist nützlich, um sicherzustellen, dass neue Dateien/Ordner in einer Freigabe automatisch der richtigen Gruppe gehören:
sudo chmod 2770 /srv/samba/dokumente  # SGID + Besitzer/Gruppe: rwx