Files
mkdocs-etz/mkdocs/docs/basics/Windows_Freigaben_fuer_Linux-Einsteiger.md
2025-12-07 13:56:14 +01:00

19 KiB
Raw Blame History

Samba-Konfiguration für Linux-Einsteiger

Ein vollständiger Leitfaden zur Einrichtung von Samba-Freigaben, Rechteverwaltung und Gruppen auf einem Standalone-Server


Inhaltsverzeichnis


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.

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------

2. 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 chown :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. Gruppe erstellen:


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 chown \: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 bash

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 ini

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

Schritt 3: Samba neu starten bash

sudo systemctl restart smbd

Schritt 4: Von Windows aus testen

Im Explorer: \\Medien eingeben.

Beispiel 2: Eingeschränkte Freigabe Anwendungsfall: Vertrauliche Dokumente für bestimmte Nutzer/Gruppen. Schritt 1: Gruppe und Nutzer anlegen bash

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

Schritt 2: Ordner erstellen und Rechte setzen bash

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 ini

[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 bash

sudo smbpasswd -a felix

Schritt 5: Samba neu starten bash

sudo systemctl restart smbd

Schritt-für-Schritt: Neue Freigabe erstellen

Ordner anlegen: bash

sudo mkdir -p /srv/samba/neue_freigabe

Besitzer und Gruppe setzen: bash

sudo chown nobody:mitarbeiter /srv/samba/neue_freigabe

Rechte setzen: bash

sudo chmod 770 /srv/samba/neue_freigabe

Freigabe in smb.conf definieren: ini

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

Konfiguration testen: bash

sudo testparm

Samba neu starten: bash

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 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 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: bash

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: bash

sudo chmod 2770 /srv/samba/dokumente # SGID + Besitzer/Gruppe: rwx