Files
mkdocs-etz/mkdocs/docs/basics/Windows_Freigaben_fuer_Linux-Einsteiger.md

466 lines
18 KiB
Markdown
Raw Normal View History

2025-12-07 13:56:14 +01:00
# 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).
2025-12-11 11:43:34 +01:00
- **Root-Zugriff** oder ````sudo````-Berechtigungen.
2025-12-07 13:56:14 +01:00
- Grundkenntnisse in der **Linux-Kommandozeile**.
---
## Installation von Samba
### 1. Paketdatenbank aktualisieren
```bash
sudo apt update && sudo apt upgrade -y
```
### 2. Samba installieren
````bash
sudo apt install samba
````
### 3. Dienststatus prüfen
````bash
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).
2025-12-07 14:53:45 +01:00
### Globale Einstellungen ````[global]````
2025-12-07 13:56:14 +01:00
Die globalen Einstellungen gelten für alle Freigaben, sofern sie nicht in einer Freigabe überschrieben werden.
Wichtige Optionen für einen Standalone-Server:
````ini
[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] :
````ini
# Protokolle und Kompatibilität
server min protocol = SMB2
smb encrypt = desired
````
### Freigaben definieren
2025-12-07 13:56:14 +01:00
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
2025-12-07 13:56:14 +01:00
Jeder Nutzer kann automatisch auf sein eigenes Home-Verzeichnis zugreifen:
````ini
[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
2025-12-07 13:56:14 +01:00
Samba kann Drucker für Windows-Clients freigeben:
````ini
[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:
````bash
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:
````bash
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:**
2025-12-07 13:56:14 +01:00
* ````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).
2025-12-07 13:56:14 +01:00
**Dateien in Freigaben:**
2025-12-07 13:56:14 +01:00
* ````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.
2025-12-07 13:56:14 +01:00
### Gruppenverwaltung
Gruppen ermöglichen die zentrale Steuerung von Zugriffsrechten für mehrere Nutzer.
#### 1. Nutzer und Gruppe erstellen:
2025-12-07 13:56:14 +01:00
````bash
sudo adduser felix
2025-12-07 13:56:14 +01:00
sudo addgroup mitarbeiter
````
#### 2. Nutzer einer Gruppe hinzufügen:
````bash
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:
````bash
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:
````ini
[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
2025-12-07 13:56:14 +01:00
Anwendungsfall: Medienfreigabe für alle Nutzer im Netzwerk (z. B. Musik, Filme).
**Schritt 1: Ordner erstellen und Rechte setzen**
````bash
2025-12-07 13:56:14 +01:00
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
2025-12-07 13:56:14 +01:00
[Medien]
comment = öffentliche Medienfreigabe
2025-12-07 13:56:14 +01:00
path = /srv/samba/medien
browseable = yes
read only = no
guest ok = yes
````
**Schritt 3: Samba neu starten**
````bash
2025-12-07 13:56:14 +01:00
sudo systemctl restart smbd
````
**Schritt 4: Von Windows aus testen**
> Im Explorer: ````\\<IP-des-Servers>\Medien```` eingeben.
2025-12-07 13:56:14 +01:00
### Beispiel 2: Eingeschränkte Freigabe
2025-12-07 13:56:14 +01:00
Anwendungsfall: Vertrauliche Dokumente für bestimmte Nutzer/Gruppen.
**Schritt 1: Gruppe und Nutzer anlegen**
````bash
sudo adduser felix
sudo adduser hans
2025-12-07 13:56:14 +01:00
sudo addgroup mitarbeiter
sudo addgroup teamleitung
sudo usermod -aG mitarbeiter felix
sudo usermod -aG mitarbeiter hans
2025-12-07 13:56:14 +01:00
sudo usermod -aG teamleitung felix
````
**Schritt 2: Ordner erstellen und Rechte setzen**
````bash
2025-12-07 13:56:14 +01:00
sudo mkdir -p /srv/samba/dokumente
sudo chown nobody:mitarbeiter /srv/samba/dokumente
2025-12-07 13:56:14 +01:00
sudo chmod 770 /srv/samba/dokumente
````
**Schritt 3: Freigabe in smb.conf definieren**
````ini
2025-12-07 13:56:14 +01:00
[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
2025-12-07 13:56:14 +01:00
sudo smbpasswd -a felix
sudo smbpasswd -a hans
````
**Schritt 5: Samba neu starten**
````bash
2025-12-07 13:56:14 +01:00
sudo systemctl restart smbd
````
2025-12-07 13:56:14 +01:00
## Schritt-für-Schritt: Neue Freigabe erstellen
2025-12-07 13:56:14 +01:00
**1. Ordner anlegen:**
````bash
2025-12-07 13:56:14 +01:00
sudo mkdir -p /srv/samba/neue_freigabe
````
2025-12-07 13:56:14 +01:00
**2. Besitzer und Gruppe setzen:**
````bash
2025-12-07 13:56:14 +01:00
sudo chown nobody\:mitarbeiter /srv/samba/neue_freigabe
````
2025-12-07 13:56:14 +01:00
**3. Rechte setzen:**
````bash
2025-12-07 13:56:14 +01:00
sudo chmod 770 /srv/samba/neue_freigabe
````
2025-12-07 13:56:14 +01:00
**4. Freigabe in /etc/samba/smb.conf definieren:**
````ini
2025-12-07 13:56:14 +01:00
[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:**
````bash
2025-12-07 13:56:14 +01:00
sudo samba-tool testparm
````
2025-12-07 13:56:14 +01:00
**6. Samba neu starten:**
````bash
2025-12-07 13:56:14 +01:00
sudo systemctl restart smbd
````
2025-12-07 13:56:14 +01:00
## 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. |
2025-12-07 13:56:14 +01:00
## 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). |
2025-12-07 13:56:14 +01:00
## Sicherheitshinweise
2025-12-07 13:56:14 +01:00
**Minimale Rechte vergeben:**
* Vermeiden Sie ````chmod 777````. Nutzen Sie stattdessen ````770```` oder ````750````.
2025-12-07 13:56:14 +01:00
**Keine Gastzugriffe für sensible Daten:**
2025-12-07 13:56:14 +01:00
* Setzen Sie ````guest ok = no```` für vertrauliche Freigaben.
2025-12-07 13:56:14 +01:00
**Regelmäßige Backups:**
2025-12-07 13:56:14 +01:00
* Sichern Sie die ````smb.conf```` und wichtige Freigabe-Ordner.
2025-12-07 13:56:14 +01:00
**Firewall konfigurieren:**
````bash
2025-12-07 13:56:14 +01:00
sudo ufw allow samba # Erlaubt Samba-Ports (139, 445).
````
2025-12-07 13:56:14 +01:00
Logs prüfen:
Fehler finden Sie in /var/log/samba/log.%m.
## Anhang: Spezialrechte (Sticky Bit, SUID, SGID)
2025-12-07 13:56:14 +01:00
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).|
2025-12-07 13:56:14 +01:00
**Beispiele:**
2025-12-07 13:56:14 +01:00
|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. |
2025-12-07 13:56:14 +01:00
**Samba-spezifische Nutzung:**
* **SGID** ist nützlich, um sicherzustellen, dass neue Dateien/Ordner in einer Freigabe automatisch der richtigen Gruppe gehören:
````bash
2025-12-07 13:56:14 +01:00
sudo chmod 2770 /srv/samba/dokumente # SGID + Besitzer/Gruppe: rwx
````
2025-12-07 13:56:14 +01:00
2025-12-11 06:41:15 +01:00
---
## Inhaltsverzeichnis
[TOC]