Initialer Upload MkDocs ETZ Dokumentation
This commit is contained in:
304
mkdocs/docs/basics/Windows-Freigabe mit Samba.md
Normal file
304
mkdocs/docs/basics/Windows-Freigabe mit Samba.md
Normal file
@@ -0,0 +1,304 @@
|
||||
# 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.
|
||||
|
||||
## smb.conf
|
||||
|
||||
```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
|
||||
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
|
||||
```
|
||||
|
||||
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 addgrouo 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 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 chmod -R 0077 /srv/samba/lieferscheine
|
||||
sudo nano /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 }
|
||||
Reference in New Issue
Block a user