# Geschäfts-Samba-Server: Eingeschränkte Freigaben für Abteilungen *Anleitung zur Einrichtung von Samba-Freigaben mit granularen Rechten für Hans Wurst (Produktion) und Peter Lustig (Verwaltung)* ## Inhaltsverzeichnis [TOC] ## 1. Zielbeschreibung Dieses Projekt zeigt eine saubere, praxisnahe Einrichtung von * eingeschränkten Freigaben mit Gruppenrechten, * Homeverzeichnissen, * einem Netzwerkpapierkorb.​ | | Lesen Angebote | Schreiben Angebote | Lesen Lieferscheine | Schreiben Lieferscheine | | ------------ | ------------------ | ---------------------- | ----------------------- | --------------------------- | | Hans Wurst | X | | | X | | Peter Lustig | | X | | X | --- ## 2. Benutzer und Gruppen anlegen ### 2.1 Benutzer erstellen ```bash # Benutzer für Produktion und Verwaltung anlegen sudo adduser hwurst # Hans Wurst (Produktion) sudo adduser plustig # Peter Lustig (Verwaltung) ``` ### 2.2 Gruppen für Rechteverwaltung erstellen ````bash # Gruppen für Lese-/Schreibrechte sudo addgroup angebote_l # Leserechte für Angebote sudo addgroup angebote_ae # Schreibrechte für Angebote sudo addgroup lieferscheine_l # Leserechte für Lieferscheine (hier nicht genutzt) sudo addgroup lieferscheine_ae # Schreibrechte für Lieferscheine ```` ### 2.3 Benutzer den Gruppen zuweisen ````bash # Hans Wurst: Darf Angebote lesen und Lieferscheine schreiben sudo usermod -aG angebote_l hwurst sudo usermod -aG lieferscheine_ae hwurst # Peter Lustig: Darf Angebote und Lieferscheine schreiben sudo usermod -aG angebote_ae plustig sudo usermod -aG lieferscheine_ae plustig ```` ### 2.4 Benutzer in Samba bekannt machen ````bash # Samba-Passwörter für beide Benutzer setzen sudo smbpasswd -a hwurst sudo smbpasswd -a plustig ```` > Passwort im Kurs: "passw0rd#" ## 3. Verzeichnisse erstellen und Rechte setzen ### 3.1 Ordner für Angebote und Lieferscheine anlegen ````bash sudo mkdir -p /srv/samba/{angebote,lieferscheine} ```` ### 3.2 Besitzer und Gruppe setzen ````bash # Angebote: Besitzer = nobody, Gruppe = angebote_ae (Schreibrechte) sudo chown -R nobody\:angebote_ae /srv/samba/angebote # Lieferscheine: Besitzer = nobody, Gruppe = lieferscheine_ae (Schreibrechte) sudo chown -R nobody\:lieferscheine_ae /srv/samba/lieferscheine ```` ### 3.3 Berechtigungen setzen ````bash sudo chmod -R 0077 /srv/samba/angebote sudo chmod -R 0077 /srv/samba/lieferscheine # - 0: Keine Spezialrechte (Sticky Bit/SUID/SGID) # - 0: Besitzer (nobody) hat keine Rechte (wird durch Samba überschrieben) # - 7: Gruppe hat Vollzugriff (rwx) # - 7: Andere haben Vollzugriff (wird durch Samba eingeschränkt) ```` > Hinweis: Die tatsächlichen Rechte werden später durch Samba (````force create mode, valid users````) gesteuert. ## 4. Samba-Freigaben konfigurieren ### 4.1 ````smb.conf```` bearbeiten ````bash sudo nano /etc/samba/smb.conf ```` ### 4.2 Freigaben für Angebote und Lieferscheine Fügen Sie folgende Abschnitte am Ende der Datei ein: ````ini [Angebote] comment = Angebote an Kunden path = /srv/samba/angebote guest ok = no browseable = yes read only = yes # Standardmäßig schreibgeschützt valid users = @angebote_l, @angebote_ae # Nur diese Gruppen dürfen zugreifen write list = @angebote_ae # Nur diese Gruppe darf schreiben force create mode = 0775 # Neue Dateien: rwxrwxr-x force directory mode = 0775 # Neue Ordner: rwxrwxr-x force group = angebote_ae # Neue Dateien gehören dieser Gruppe [Lieferscheine] copy = Angebote # Überträgt alle Einstellungen von Angebote, die nicht nachfolgend angepasst werden: comment = Lieferscheine von Lieferanten path = /srv/samba/lieferscheine valid users = @lieferscheine, @lieferscheine_ae # Nur diese Gruppe darf zugreifen write list = @lieferscheine_ae # Nur diese Gruppe darf schreiben force group = lieferscheine_ae ```` ## 5. Userverzeichnisse (Home-Freigaben) Jeder Benutzer kann auf sein eigenes Home-Verzeichnis zugreifen. Aktivieren Sie die [homes]-Freigabe in ````/etc/samba/smb.conf```` (entkommentieren): ````ini [homes] comment = Privates Verzeichnis browseable = no # Nur für den Benutzer selbst sichtbar read only = no # Benutzer darf schreiben create mask = 0700 # Neue Dateien: rwx------ directory mask = 0700 # Neue Ordner: rwx------ valid users = %S # %S = Name des aktuellen Benutzers ```` > Hinweis: %S wird automatisch durch den Benutzernamen ersetzt (z. B. hwurst). ## 6. Netzwerkpapierkorb Gelöschte Dateien auf Netzlaufwerken können mit dem **Samba Recycle Bin Modul** gesichert werden. ### 6.1 Konfiguration in ````smb.conf```` Fügen Sie folgende Optionen global (unter [global]) oder pro Freigabe ein: ````ini vfs objects = recycle # Virtuelles Dateisystem für Papierkorb recycle\:repository = .recyclebin # Ordner für gelöschte Dateien recycle\:keeptree = yes # Pfadstruktur im Papierkorb erhalten recycle\:versions = yes # Gleichnamige Dateien nicht überschreiben recycle\:maxsize = 0 # Keine Größenbegrenzung pro Datei recycle\:touch = yes # Zeitstempel anpassen ```` ### 6.2 Automatische Bereinigung mit Cron Fügen Sie einen [Cron-Job](../basics/Automatisierung_mit_cron_und_systemd.md) hinzu, um alte Dateien im Papierkorb zu löschen: ````bash sudo crontab -e ```` Fügen Sie folgende Zeile ein (löscht Dateien älter als 14 Tage): ````bash 0 12 * * * for path in $(grep "path =" /etc/samba/smb.conf | cut -d= -f2 | sed 's/ //g'); do find "${path}/.recyclebin" -mindepth 1 -mtime +14 -exec rm -rf {} \; 2>/dev/null; done ```` Erklärung: * ````0 12 * * *````: Täglich um 12:00 Uhr. * ````grep "path ="````: Sucht alle ````path````-Einträge in ````smb.conf````. * ````find ... -mtime +14````: Löscht Dateien älter als 14 Tage im .recyclebin-Ordner. ## 7 Häufige Fehler und Lösungen |Problem |Ursache |Lösung | |------------------------------|-----------------------------------|-------------------------------------------------------------| |Benutzer kann nicht zugreifen |Falsche Gruppe oder Passwort. |groups [benutzer] prüfen, smbpasswd -a [benutzer] neu setzen.| |Schreibrechte fehlgeschlagen |Benutzer nicht in write list. |valid users und write list in smb.conf prüfen. | |Papierkorb funktioniert nicht |vfs objects = recycle fehlt. |In smb.conf für die Freigabe oder global ergänzen. | |Rechte werden nicht übernommen|force group oder create mask fehlt.|In smb.conf ergänzen und Samba neu starten. | |Linux kann zugreifen, Windows nicht|Protokollversion zu Alt |In smb.conf ```` server min protocol = SMB2```` und ````smb encrypt = desired ```` nachtragen| --- ## Inhaltsverzeichnis [TOC]