Nauauflage mit Zielgruppe Ahnungsloser
This commit is contained in:
@@ -27,7 +27,11 @@ Fügen Sie folgende Zeile hinzu:
|
||||
* * * * * /usr/bin/touch /tmp/heartbeat.txt
|
||||
```
|
||||
|
||||
Jetzt wird jede Minute die Datei /tmp/heartbeat.txt neu angelegt oder ihr Zeitstempel aktualisiert.
|
||||
Jetzt wird jede Minute die Datei /tmp/heartbeat.txt neu angelegt oder ihr Zeitstempel aktualisiert. Prüfen Sie das ergebnis, indem Sie sich den Zeitstempel der neuen Datei anschauen:
|
||||
|
||||
```bash
|
||||
ls -lah /tmp/heartbeat.txt
|
||||
```
|
||||
|
||||
\newpage
|
||||
|
||||
@@ -59,10 +63,10 @@ Jetzt wird jede Minute die Datei /tmp/heartbeat.txt neu angelegt oder ihr Zeit
|
||||
*  jeden Tag um Mitternacht
|
||||
|
||||
```
|
||||
1/5 * * * * /usr/bin/touch /tmp/every5min.txt
|
||||
*/5 * * * * /usr/bin/touch /tmp/every5min.txt
|
||||
```
|
||||
|
||||
* alle 5 Minuten beginnend 5 Minuten nach 1 also 6,11,16,...
|
||||
* alle 5 Minuten beginnend 5 Minuten
|
||||
|
||||
# systemd-Unit: Datei beim Systemstart aktualisieren
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ 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.
|
||||
|
||||
## smb.conf
|
||||
## /etc/samba/smb.conf
|
||||
|
||||
Hier soll der Aufbau der Datei mit ihren Default werten erkärt werden. Schauen Sie sich parallel ihre Datei auf ihrem System an.
|
||||
|
||||
```ini
|
||||
[global]
|
||||
@@ -39,21 +41,6 @@ server string = %h server (Samba, Ubuntu)
|
||||
Die Beschreibung des Servers (mouse-over) wobei für %h für der hostname
|
||||
des Servers eingesetzt wird.
|
||||
|
||||
```ini
|
||||
wins support = no
|
||||
wins server = w.x.y.z
|
||||
```
|
||||
|
||||
Kann geändert werden zu
|
||||
|
||||
```ini
|
||||
wins support = yes
|
||||
# wins server = w.x.y.z
|
||||
```
|
||||
|
||||
Damit übernimmt der Samba-Server die [WINS](https://de.wikipedia.org/wiki/Windows_Internet_Naming_Service)-Aufgaben.
|
||||
|
||||
**In einem Netzwerk sollte immer nur ein WINS-Server aktiv laufen.**
|
||||
|
||||
```ini
|
||||
dns proxy = no
|
||||
@@ -167,7 +154,7 @@ sudo adduser hwurst
|
||||
sudo adduser plustig
|
||||
sudo addgroup angebote_l
|
||||
sudo addgroup angebote_ae
|
||||
sudo addgrouo lieferscheine_l
|
||||
sudo addgroup lieferscheine_l
|
||||
sudo addgroup lieferscheine_ae
|
||||
sudo usermod -aG angebote_l hwurst
|
||||
sudo usermod -aG lieferscheine_ae hwurst
|
||||
@@ -186,13 +173,36 @@ Erstellen der Verzeichnisse:
|
||||
|
||||
```bash
|
||||
sudo mkdir /srv/samba/angebote
|
||||
sudo mkdir /srv/samba/lieferscheine
|
||||
sudo chown -R nobody:angebote_ae /srv/samba/angebote
|
||||
sudo chown -R nobody:lieferscheine_ae /srv/samba/lieferscheine
|
||||
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:
|
||||
```bash
|
||||
chown Rekursive USER:GRUPPE Pfad
|
||||
chmod Rekurisv OKTALMODE-RECHTE (Siehe Tabelle) Pfad
|
||||
```
|
||||
Die Zahlenfolge 0077 Steht für die Rechte im Ordner:
|
||||
* 0 Spezialrechte (Sticky bit damit Dateiersteller Dateieigentümer bleiben, für Samba besser auf 0)
|
||||
* 0 Eigentümer (vorher auf nobody gesetzt)
|
||||
* 7 Gruppe (vorher auf angebote_ae gesetzt)
|
||||
* 7 Andere (sonstige user im System ohne Samba)
|
||||
|
||||
| Oktal | Binär | Rechte (rwx) | Typische Nutzung |
|
||||
| ----- | ----- | ------------ | ------------------------------------------------- |
|
||||
| 0 | 000 | --- | Kein Zugriff |
|
||||
| 1 | 001 | --x | Nur Ausführen (z. B. Skripte) |
|
||||
| 2 | 010 | -w- | Nur Schreiben |
|
||||
| 3 | 011 | -wx | Schreiben + Ausführen |
|
||||
| 4 | 100 | r-- | Nur Lesen |
|
||||
| 5 | 101 | r-x | Lesen + Ausführen (Ordner/Dateien) |
|
||||
| 6 | 110 | rw- | Lesen + Schreiben |
|
||||
| 7 | 111 | rwx | Voller Zugriff (unsicher für Freigaben) |
|
||||
|
||||
In der Datei /etc/samba/smb.conf:
|
||||
|
||||
```ini
|
||||
[Angebote]
|
||||
|
||||
612
mkdocs/docs/basics/Windows_Freigaben_fuer_Linux-Einsteiger.md
Normal file
612
mkdocs/docs/basics/Windows_Freigaben_fuer_Linux-Einsteiger.md
Normal file
@@ -0,0 +1,612 @@
|
||||
# Samba-Konfiguration für Linux-Einsteiger
|
||||
*Ein vollständiger Leitfaden zur Einrichtung von Samba-Freigaben, Rechteverwaltung und Gruppen auf einem Standalone-Server*
|
||||
|
||||
---
|
||||
|
||||
## Inhaltsverzeichnis
|
||||
- [Samba-Konfiguration für Linux-Einsteiger](#samba-konfiguration-für-linux-einsteiger)
|
||||
- [Inhaltsverzeichnis](#inhaltsverzeichnis)
|
||||
- [Einführung in Samba](#einführung-in-samba)
|
||||
- [Wichtige Anwendungsfälle:](#wichtige-anwendungsfälle)
|
||||
- [Voraussetzungen:](#voraussetzungen)
|
||||
- [Installation von Samba](#installation-von-samba)
|
||||
- [1. Paketdatenbank aktualisieren](#1-paketdatenbank-aktualisieren)
|
||||
- [2. Samba installieren](#2-samba-installieren)
|
||||
- [3. Dienststatus prüfen](#3-dienststatus-prüfen)
|
||||
- [Die Konfigurationsdatei smb.conf](#die-konfigurationsdatei-smbconf)
|
||||
- [Globale Einstellungen \[global\]](#globale-einstellungen-global)
|
||||
- [Freigaben definieren](#freigaben-definieren)
|
||||
- [Sonderfälle: Home-Verzeichnisse und Drucker](#sonderfälle-home-verzeichnisse-und-drucker)
|
||||
- [1. Nutzer-Home-Verzeichnisse](#1-nutzer-home-verzeichnisse)
|
||||
- [2. Druckerfreigabe](#2-druckerfreigabe)
|
||||
- [Rechteverwaltung unter Linux](#rechteverwaltung-unter-linux)
|
||||
- [````chown````: Besitzer und Gruppe ändern](#chown-besitzer-und-gruppe-ändern)
|
||||
- [````chmod````: Zugriffsrechte setzen](#chmod-zugriffsrechte-setzen)
|
||||
- [Symbolische Darstellung:](#symbolische-darstellung)
|
||||
- [Oktal-Darstellung:](#oktal-darstellung)
|
||||
- [Beispiele:](#beispiele)
|
||||
- [Gruppenverwaltung](#gruppenverwaltung)
|
||||
- [1. Gruppe erstellen:](#1-gruppe-erstellen)
|
||||
- [2. Nutzer einer Gruppe hinzufügen:](#2-nutzer-einer-gruppe-hinzufügen)
|
||||
- [3. Gruppe einer Datei/Ordner zuweisen:](#3-gruppe-einer-dateiordner-zuweisen)
|
||||
- [4. Gruppe in Samba nutzen:](#4-gruppe-in-samba-nutzen)
|
||||
- [Samba-Freigaben in der Praxis](#samba-freigaben-in-der-praxis)
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
```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).
|
||||
### 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:
|
||||
````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.
|
||||
````
|
||||
|
||||
## 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:
|
||||
````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
|
||||
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:
|
||||
|
||||
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:
|
||||
````bash
|
||||
|
||||
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
|
||||
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 = <followup encodedFollowup="%7B%22id%22%3A%22785f61b2-bd51-4deb-b605-8d0320cd2644%22%2C%22snippet%22%3A%22%C3%96ffentliche%20Medienfreigabe%22%2C%22question%22%3A%22Welche%20Sicherheitsrisiken%20sind%20mit%20einer%20%C3%B6ffentlichen%20Freigabe%20verbunden%2C%20und%20wie%20kann%20man%20diese%20minimieren%3F%22%7D" />
|
||||
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: \\<IP-des-Servers>\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
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ nav:
|
||||
- Grundlagen:
|
||||
- Einstieg in Linux-Desktop: basics/Einstieg in Linux-Desktop.md
|
||||
- Grundlagen der Konsole: basics/Grundlagen der Konsole.md
|
||||
- Automatisierung mit cron und systemd: basics/Automatisierung mit cron und systemd.m
|
||||
- Windows-Freigabe mit Samba: basics/Windows-Freigabe mit Samba.md
|
||||
- Automatisierung mit cron und systemd: basics/Automatisierung mit cron und systemd.md
|
||||
- Linux im Unternehmen:
|
||||
- Ubuntu Servr als Active Directory Domain Controller: Linux_Unternehmen/ubuntu-ad-dc.md
|
||||
- Linux als Client in Active Directory: Linux_Unternehmen/linux-als-ad-client.md
|
||||
|
||||
57
mkdoks-complete.sh
Normal file
57
mkdoks-complete.sh
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
MKDOCS_DIR="mkdocs/docs"
|
||||
|
||||
find "$MKDOCS_DIR" -name "*.md" | while read -r md_file; do
|
||||
# Überspringe index.md
|
||||
if [[ "$(basename "$md_file")" == "index.md" ]]; then
|
||||
echo "Überspringe: $md_file"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Verarbeite: $md_file"
|
||||
|
||||
base_name=$(basename "$md_file" .md | tr ' ' '_')
|
||||
dir_name=$(dirname "$md_file")
|
||||
|
||||
pdf_path="${dir_name}/${base_name}.pdf"
|
||||
pdf_link="\n\n[PDF herunterladen](${base_name}.pdf){ .md-button }"
|
||||
|
||||
# PDF immer neu erzeugen
|
||||
rm -f "$pdf_path"
|
||||
|
||||
# Temp MD nur für MkDocs-Syntax bereinigen
|
||||
temp_md="${dir_name}/temp_${base_name}.md"
|
||||
sed 's/{[^}]*}//g; s/^[ \t]*{[^}]*}$//gm' "$md_file" > "$temp_md"
|
||||
|
||||
# **Working directory = Markdown-Verzeichnis** für korrekte Bildpfade!
|
||||
md_dir=$(dirname "$md_file")
|
||||
|
||||
docker run --rm \
|
||||
--volume "$(pwd)":/data \
|
||||
--user $(id -u):$(id -g) \
|
||||
--workdir "/data/$md_dir" \
|
||||
pandoc/extra \
|
||||
"./$(basename "$md_file")" \
|
||||
-o "./${base_name}.pdf" \
|
||||
--template /data/eisvogel.latex \
|
||||
--syntax-highlighting=idiomatic
|
||||
|
||||
# Temp Dateien löschen
|
||||
rm -f "$temp_md"
|
||||
|
||||
echo " → PDF erstellt: $pdf_path"
|
||||
|
||||
# PDF-Link nur einmal hinzufügen
|
||||
if ! tail -n 10 "$md_file" | grep -q "PDF herunterladen"; then
|
||||
echo -e "$pdf_link" >> "$md_file"
|
||||
echo " → PDF-Link hinzugefügt"
|
||||
else
|
||||
echo " → PDF-Link bereits vorhanden"
|
||||
fi
|
||||
done
|
||||
|
||||
# MkDocs neu bauen
|
||||
docker compose -f ./docker-compose.yml run --rm mkdocs build
|
||||
docker compose -f ./docker-compose.yml restart mkdocs
|
||||
echo "Fertig: mkdocs neu gebaut."
|
||||
76
rebuild-all.sh
Normal file
76
rebuild-all.sh
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/bin/bash
|
||||
|
||||
MKDOCS_DIR="mkdocs/docs"
|
||||
|
||||
# Funktion für die Verarbeitung (DRY-Prinzip)
|
||||
process_file() {
|
||||
local md_file="$1"
|
||||
echo "Verarbeite: $md_file"
|
||||
|
||||
local base_name=$(basename "$md_file" .md | tr ' ' '_')
|
||||
local dir_name=$(dirname "$md_file")
|
||||
local pdf_path="${dir_name}/${base_name}.pdf"
|
||||
local pdf_link="\n\n[PDF herunterladen](${base_name}.pdf){ .md-button }"
|
||||
|
||||
# PDF neu erzeugen
|
||||
rm -f "$pdf_path"
|
||||
|
||||
# Temp MD nur für MkDocs-Syntax bereinigen (LaTeX behalten)
|
||||
local temp_md="${dir_name}/temp_${base_name}.md"
|
||||
sed 's/{[^}]*}//g; s/^[ \t]*{[^}]*}$//gm' "$md_file" > "$temp_md"
|
||||
|
||||
local md_dir=$(dirname "$md_file")
|
||||
|
||||
docker run --rm \
|
||||
--volume "$(pwd)":/data \
|
||||
--user $(id -u):$(id -g) \
|
||||
--workdir "/data/$md_dir" \
|
||||
pandoc/extra \
|
||||
"./temp_${base_name}.md" \
|
||||
-o "./${base_name}.pdf" \
|
||||
--template /data/eisvogel.latex \
|
||||
--syntax-highlighting=idiomatic
|
||||
|
||||
# Temp Datei löschen
|
||||
rm -f "$temp_md"
|
||||
|
||||
echo " → PDF erstellt: $pdf_path"
|
||||
|
||||
# PDF-Link nur einmal hinzufügen (ändert Markdown!)
|
||||
if ! tail -n 10 "$md_file" | grep -q "PDF herunterladen"; then
|
||||
echo -e "$pdf_link" >> "$md_file"
|
||||
echo " → PDF-Link hinzugefügt"
|
||||
else
|
||||
echo " → PDF-Link bereits vorhanden"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Wenn keine Parameter → alle Dateien verarbeiten
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Keine Dateien angegeben → Verarbeite ALLE Markdown-Dateien"
|
||||
find "$MKDOCS_DIR" -name "*.md" | while read -r md_file; do
|
||||
# Überspringe index.md
|
||||
if [[ "$(basename "$md_file")" == "index.md" ]]; then
|
||||
echo "Überspringe: $md_file"
|
||||
continue
|
||||
fi
|
||||
process_file "$md_file"
|
||||
done
|
||||
else
|
||||
# Einzelne Dateien verarbeiten
|
||||
for param in "$@"; do
|
||||
md_file="$MKDOCS_DIR/$param"
|
||||
if [[ ! -f "$md_file" ]]; then
|
||||
echo "Fehler: $md_file nicht gefunden!"
|
||||
continue
|
||||
fi
|
||||
process_file "$md_file"
|
||||
done
|
||||
fi
|
||||
|
||||
# **IMMER MkDocs neu bauen** (Markdown + PDF-Links ändern sich)
|
||||
echo "MkDocs wird neu gebaut (wegen Markdown-Änderungen)..."
|
||||
docker compose -f ./docker-compose.yml run --rm mkdocs build
|
||||
docker compose -f ./docker-compose.yml restart mkdocs
|
||||
echo "Fertig: mkdocs neu gebaut."
|
||||
Reference in New Issue
Block a user