315 lines
11 KiB
Markdown
315 lines
11 KiB
Markdown
# 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.
|
||
|
||
## 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
|
||
|
||
```bash
|
||
sudo apt update && sudo apt-get upgrade -y
|
||
```
|
||
|
||
Installation des Samba-Dienstes
|
||
|
||
```bash
|
||
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
|
||
|
||
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]
|
||
workgroup = WORKGROUP
|
||
```
|
||
|
||
Hier wird die Arbeitsgruppe bzw. die Domäne, in der der Samba-Server
|
||
betrieben werden soll definiert.
|
||
|
||
```ini
|
||
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
|
||
dns proxy = no
|
||
```
|
||
|
||
Bei der Grundkonfiguration no wird kein DNS-Server für die Namensauflösung genutzt sondern nur die lokalen host Dateien, WINS-Server und Broadcasts. Wenn ein funktionierender DNS-Server im Netzwerk vorhanden ist kann dieser durch den Einsatz von yes ebenfalls genutzt werden.
|
||
|
||
```ini
|
||
interfaces = 127.0.0.0/8 eth0
|
||
bind interfaces only = yes
|
||
```
|
||
|
||
Hier kann konfiguriert werden ob der Samba-Server auf einer, mehreren oder allen Netzwerkkarten und IP-Adressen verfügbar ist. Wenn Sie hier nichts verändern ist der Server Grundsätzlich auf allen Netzwerkkarten und Subnetzen erreichbar.
|
||
|
||
```ini
|
||
server role =
|
||
```
|
||
|
||
standalone server: Die einfachste Variante, nur User die per smbpasswd hinzugefügt wurden können auf den Samba-Server zugreifen.
|
||
|
||
member server: Der Server ist Mitglied einer Domäne und hat ein Maschinenkonto auf dem ADDC an welchen auch die Benutzeranfragen weitergegegeben werden.
|
||
|
||
classic primary domain controller: Samba agiert als NT4 PDC
|
||
|
||
classic backup domain controller : Samba ist ein sekundärer NT4 DC
|
||
|
||
active directory domain controller: Samba agiert als ADDC und übernimmt die gesamte Benutzerauthentifizierung. Diese Einstellung sollte nicht von Hand genutzt werden da hierfür ein Provisionierungsscript genutzt wird.
|
||
|
||
```
|
||
map to guest = bad user
|
||
```
|
||
|
||
Was passiert mit unbekannten Nutzern.
|
||
|
||
## Freigaben
|
||
|
||
Freigaben werden je nach Funktionalität unterschiedlich beschrieben wobei es auch besondere Freigaben gibt, welche z.B. Drucker, Clientspezifisch oder Userspezifische Freigaben betreffen.
|
||
|
||
## Beispiel einer freien Freigabe z.B. Medienfreigabe im Privatbereich
|
||
|
||
```ini
|
||
[Musik]
|
||
comment = Musikfreigabe
|
||
path = /srv/samba/musik
|
||
read only = no
|
||
browseable = yes
|
||
```
|
||
|
||
Nach dem Speichern überprüfen Sie ob alle Funktionen, die sie definiert
|
||
haben korrekt übernommen werden konnten:
|
||
|
||
```bash
|
||
sudo samba-tool testparm
|
||
```
|
||
|
||
Sie werden feststellen, dass die Option browseable nicht angezeigt wird. Dies liegt daran, dass diese Kombination browseable = yes ein defaultwert ist und somit nicht angezeigt wird.
|
||
|
||
Damit diese Freigabe auch funktioniert, muss Sie auch auf dem System vorhanden sein, sowie die korrekte Rechtevergabe erfolgt sein.
|
||
|
||
```bash
|
||
sudo mkdir /srv/samba
|
||
sudo mkdir /srv/samba/musik
|
||
sudo chmod -R a+rw /srv/samba/musik
|
||
```
|
||
|
||
nach Abschluss dieser Aktion muss der Samba-Dienst und der NetBIOS-Nameserver neu gestartet werden.
|
||
|
||
```bash
|
||
sudo systemctl restart smbd.service nmbd.service
|
||
```
|
||
|
||
Alle vor der Installation von Samba vorhandenen User sind nicht in der Samba-Datenbank hinterlegt und müssen nachgepflegt werden. Hierbei geben sie ihren Usernamen und ihr Passwort erneut ein. Spätere Änderungen werden synchronisiert.
|
||
|
||
```bash
|
||
sudo smbpasswd -a USERNAME
|
||
```
|
||
|
||
Nun können Sie von einem beliebigen Client auf diese Freigabe zugreifen:
|
||
|
||
Windows:
|
||
|
||
Explorer öffnen und in der Adresszeile:
|
||
|
||
```
|
||
\\IP des Servers\Musik
|
||
```
|
||
|
||
eingeben oder direkt ein Netzlaufwerk verbinden
|
||
|
||
Linux und OSX:
|
||
|
||
Im Dateimanager in die Adresszeile:
|
||
|
||
```
|
||
smb://IP des Servers/Musik
|
||
```
|
||
|
||
## 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 |
|
||
|
||
```bash
|
||
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:
|
||
|
||
```bash
|
||
sudo smbpasswd -a hwurst
|
||
sudo smbpasswd -a plustig
|
||
```
|
||
|
||
Erstellen der Verzeichnisse:
|
||
|
||
```bash
|
||
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:
|
||
```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]
|
||
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.
|
||
|
||
```ini
|
||
[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.
|
||
|
||
```ini
|
||
[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.
|
||
|
||
```ini
|
||
[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.
|
||
|
||
```ini
|
||
# 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.
|
||
|
||
```bash
|
||
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.
|
||
|
||
|
||
[PDF herunterladen](Windows-Freigabe_mit_Samba.pdf){ .md-button }
|