Files
mkdocs-etz/mkdocs/docs/basics/Windows-Freigabe_mit_Samba.md
Florian Hensel f9473a3578 Anpassung aller Samba-Dokumente als Projekt
ADDC als Bonus
2025-12-10 12:41:50 +01:00

13 KiB
Raw Blame History

Windows-Freigabe mit Samba

Samba ist die Linux-Variante um SMB-Verbindungen zu Windows, Linux und OS X (macOS) herzustellen. Hierfür wird ein Serverdienst installiert und über eine übersichtliche Konfigurationsdatei entsprechend den Anforderungen eingestellt. Es existieren zwar auch Möglichkeiten diese Freigaben über GUI-Programme oder Webinterfaces zu konfigurieren allerdings sind deren Funktionsumfang meist auf Basis-Funktionen beschränkt. Samba bietet eine Überprüfungsmöglichkeit der Konfigurationsdatei, um Schreibfehler und deren Konsequenzen übersichtlich darzustellen.

Inhaltsverzeichnis

[toc]

Installation

Für die Installation empfiehlt sich die Shell da hierüber sinnvoll beobachtet werden kann welche weiteren Abhängigkeiten installiert werden.

Shell-Installation

Update der Paketdatenbank und der installierten Pakete

sudo apt update && sudo apt-get upgrade -y

Installation des Samba-Dienstes

sudo apt install samba

Nach der Installation des Dienstes kann dieser über die Konfigurationsdatei /etc/samba/smb.conf bearbeitet werden. Die von Ubuntu vorkonfigurierte Version ist nahezu vollständig selbsterklärend und mit entsprechenden Beispielen versehen.

/etc/samba/smb.conf

Samba-Konfiguration (smb.conf) einfach erklärt

Die Datei /etc/samba/smb.conf steuert, wie dein Linux-Server Dateien und Drucker für Windows-, macOS- oder andere Linux-Geräte freigibt. Sie ist in zwei Hauptbereiche unterteilt:

  1. Globale Einstellungen ([global]): Grundlegende Server-Konfiguration.
  2. Freigaben ([Freigabename]): Definition einzelner freigegebener Ordner/Drucker.

1. Globale Einstellungen [global]

Diese Einstellungen gelten für den gesamten Samba-Server. Hier ein Auszug der wichtigsten Optionen für einen Standalone-Server (ohne Domain):

[global]
   # Name der Arbeitsgruppe (wie in Windows-Netzwerken)
   workgroup = WORKGROUP

   # Beschreibung des Servers (erscheint z.B. in Windows-Explorer)
   server string = %h server (Samba, Ubuntu)

   # Netzwerk-Interfaces: Auf welchen IP-Adressen/Netzwerkkarten soll Samba laufen?
   ; interfaces = 127.0.0.0/8 eth0      # Standard: Alle verfügbaren Interfaces
   ; bind interfaces only = yes         # Nur auf den oben genannten Interfaces

   # Protokollierung: Wo und wie werden Logs geschrieben?
   log file = /var/log/samba/log.%m     # %m = Name des Clients (z. B. "log.PC1")
   max log size = 1000                  # Maximale Log-Größe in KB
   logging = file                       # Logs nur in Dateien (nicht syslog)

   # Sicherheit: Wie authentifizieren sich Nutzer?
   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 sich an Linux-PAM-Regeln halten
   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            # Nutze PAM für Passwort-Änderungen

   # Nutzerfreigaben: Erlaube Nutzern, eigene Freigaben zu erstellen
   usershare allow guests = yes         # Gäste dürfen auf Nutzerfreigaben zugreifen

Wichtige Hinweise:

  • ; oder #:
  • Zeilen mit ; sind deaktivierte Vorschläge (können aktiviert werden).
  • Zeilen mit # sind Standardwerte (werden auch ohne Angabe genutzt).
  • %h: Platzhalter für den Hostnamen des Servers.
  • standalone server: Der Server arbeitet ohne Domain Nutzer müssen lokal auf dem Linux-System existieren.

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 

Erst dadurch kann Windows 11 konsitant darauf zugreifen.

2. Freigaben definieren

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

[Musik]
   comment = Musikfreigabe für alle  # Beschreibung (erscheint im Explorer)
   path = /srv/samba/musik          # Pfad zum freigegebenen Ordner
   browseable = yes                 # Freigabe ist im Netzwerk sichtbar
   read only = no                   # Nutzer dürfen Dateien schreiben
   guest ok = yes                   # Gäste (ohne Passwort) dürfen zugreifen

Beispiel 2: Eingeschränkte Freigabe (nur für bestimmte Nutzer)

[Dokumente]
   comment = Vertrauliche Dokumente
   path = /srv/samba/dokumente
   browseable = yes
   read only = no
   guest ok = no                    # Kein Gastzugriff
   valid users = @mitarbeiter       # Nur Nutzer der Gruppe "mitarbeiter" dürfen zugreifen
   write list = @teamleitung        # Nur Gruppe "teamleitung" darf schreiben

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

3. Sonderfälle

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. "plustig")

Druckerfreigabe

Samba 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

4. Einstellungen prüfen und übernehmen

Nach Änderungen in der smb.conf immer prüfen:

sudo samba-tool testparm

Hierbei werden alle Einstellungen angezeigt. Manche bleiben ausgeblendet, wenn sie per defaqult aktiv sind wie z.B. browseable = yes Wenn keine Fehler auftauchen können alle EInstellungen übernommen werden:

sudo systemctl restart smbd nmbd

Samba-Projekt 1 einfache Freigaben für Medienplayer KODI:

Vorraussetzungen:

  • Samba installiert und in der [Konfiguration für Windows 11](#-Anpassungen an Windows 11) angepasst

Beispiel eingeschränkte Freigabe z.B. Unterlagen für bestimmten Personenkreis.

Im Vorfeld solcher Freigaben müssen die betreffenden Benutzer zum einen auf dem System vorhanden sein und auch noch ergänzend in Samba bekannt gemacht werden. Dazu legen wir nun 2 neue Nutzer an, um später nachvollziehen zu können wer was darf. Dazu als Beispiel Hans Wurst aus der Produktion und Peter Lustig aus der Verwaltung.

Im folgenden werden Zugriffsgruppen definiert welche es ermöglichen die Lese- und Schreibrechte sauber Granuliert darzustellen:

Lesen Angebote Schreiben Angebote Lesen Lieferscheine Schreiben Lieferscheine
Hans Wurst X X
Peter Lustig X X
sudo adduser hwurst 
sudo adduser plustig
sudo addgroup angebote_l
sudo addgroup angebote_ae
sudo addgroup lieferscheine_l
sudo addgroup lieferscheine_ae
sudo usermod -aG angebote_l hwurst
sudo usermod -aG lieferscheine_ae hwurst
sudo usermod -aG angebote_ae plustig
sudo usermod -aG lieferscheine_ae plustig

Bekanntgabe an Samba:

sudo smbpasswd -a hwurst
sudo smbpasswd -a plustig

Erstellen der Verzeichnisse:

sudo mkdir /srv/samba/angebote
sudo chown -R nobody:angebote_ae /srv/samba/angebote
sudo chmod -R 0077 /srv/samba/angebote
sudo mkdir /srv/samba/lieferscheine
sudo chown -R nobody:lieferscheine_ae /srv/samba/lieferscheine
sudo chmod -R 0077 /srv/samba/lieferscheine
sudo nano /etc/samba/smb.conf

Erklärung:

chown Rekursive USER:GRUPPE Pfad
chmod Rekurisv OKTALMODE-RECHTE (Siehe Tabelle) Pfad

In der Datei /etc/samba/smb.conf:

[Angebote]
comment = Angebote an Kunden
path = /srv/samba/angebote
guest ok = no
browseable = yes
readonly = yes
valid users = @angebote_l, @angebote_ae
write list = @angebote_ae
force create mode = 0775
force directory mask = 0775
force group = angebote_ae

[Lieferscheine]
copy = Angebote
comment = Lieferscheine von Lieferanten
path = /srv/samba/lieferscheine
valid users = @lieferscheine_l, @lieferscheine_ae
write list = @lieferscheine_ae
force group = lieferscheine_ae

Userverzeichnis

Jeder User der Zugriffsrechte auf Samba selbst hat kann durch eine spezielle Freigabe automatisch Zugriff auf sein eigenes Home-Verzeichnis erhalten. Diese ist in der Beispielkonfiguration der smb.conf bereits auskommentiert vorhanden und kann schlicht wieder ein kommentiert werden.

[homes]
comment = Privates Verzeichnis
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S

„homes" ist hier nur ein Platzhalter dieser wird automatisch durch den jeweiligen Usernamen ersetzt und auch der Zugriff ist dann nur für diesen User verfügbar.

Sonderfall Drucker

Für Drucker ist standartmäßig eine Freigabe aktiviert ähnlich wie dies auch Windows in einem Heimnetzwerk tut. Die Konfiguration können Sie der Beispielkonfiguration der smb.conf entnehmen es sind 2 Freigaben notwendig, um ALLE Drucker freizugeben.

[printers]
comment = Alle Drucker
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700

Damit werden Alle Drucker, die am System eingerichtet sind mit jeweils einem eigenen Eintrag freigegeben.

[print$]
comment = Drucker Treiber
path /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

Hier sucht Windows nach Druckertreibern. Die Treiber müssen entweder über andere Wege in dieses Verzeichnis gelegt werden oder es kann auch ein write list Eintrag hinzugefügt werden.

Netzwerkpapierkorb

Auf einem Netzlaufwerk gelöschte Dateien können schnell mal verloren gehen, dafür lässt sich ein Netzwerkpapierkorb einsetzen. Entweder unter global für alle Freigaben oder pro Freigabe einmal einsetzen.

# Virtuelles File System "recycle" wird angelegt
vfs object = recycle
# Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist
Default).
recycle:repository = .recyclebin
# Im Papierkorb bleiben Pfad-Angaben erhalten.
recycle:keeptree = Yes
# Beim Verschieben wird der Zeitstempel angepasst.
recycle:touch = Yes
# Gleichnamige Dateien werden nicht überschrieben.
recycle:versions = Yes
# Keine Begrenzung der Dateigröße pro gelöschter Datei.
recycle:maxsize = 0

Und wer leert den? Durch Cron wird jeden Tag der Papierkorb durchsucht und alles, was älter als 14 Tage ist gelöscht.

sudo crontab -e

In einer Zeile:

0 12 * * * for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e 's/ //' -e 's/\%S/*/'); do if  ; then find ${path}/.recycle -mindepth 1 -mtime +14 -exec rm -rf {} \;; fi; done

Was steht da nun drin:

Jeden Tag um 0:12 soll in der smb.conf nach Pfad-Angaben gesucht werden und innerhalb dieser die Pfade „.recycle" nach Dateien durchsucht werden die älter als 14 Tage sind. Diese werden gelöscht.

Jetzt in die

PDF herunterladen{ .md-button }