Cookie Consent by Privacy Policies website
Wir haben für Sie geöffnet:
Montag - Freitag
09.30 Uhr - 13.00 Uhr und 14.00 Uhr - 17.30 Uhr
Telefon: 0371-4013110 oder 0371-91197337
eMail:
Kunden-Modul pcvisit Support 15.0 starten

Beispiele für Samba-Konfigurationen

Gemeinsame Shares      Samba Papierkorb einrichten

  1. Gemeinsame Shares

    Oft besteht die Forderung, dass mehrere User in einem Share vollkommen freien Schreib- und Lesezugriff besitzen sollen, während andere User lediglich Leserecht oder überhaupt keinen Zugriff haben sollen. Außerdem sollten diese Rechte möglichst einfach, übersichtlich und transparent vergeben werden können. Mit den UNIX-Rechten allein ist das nicht zu schaffen, denn in diesem Punkt ist das Rechtesystem nicht flexibel genug. Problematisch ist es, wenn man erreichen will, das mehrere User zugleich in einem Verzeichnis auch die Dateien anderer User verändern oder löschen dürfen sollen, während andere nur lesen dürfen, ohne other mit Leserechten einzubeziehen. Deshalb habe ich eine Mischung aus UNIX- und Samba-Rechten benutzt, um eine praktikable Lösung zu realisieren.
    Ich habe dieses Problem über eine Steuerung durch Gruppen für solche Shares geregelt und möchte das Verfahren kurz am Beispiel eines Shares "Daten" darstellen.
    Das Share "Daten" soll das Verzeichnis /daten/test freigeben. Die User fred, rolf und karl sollen vollen Schreib- und Lesezugriff erhalten. Die User sekretaer und bodyguard nur Lesezugriff und die User putze und praktikant keinen Zugriff, auch wenn sie das Share einbinden können sollten. Ich gehe hier davon aus, dass diese User bereits existieren, ein Sambapasswort besitzen und mit dem Eintrag
    username map = /etc/passwd
    in der Globals-Sektion der smb.conf auf die UNIX-User gemapt werden.

    Der Lösungsansatz besteht nun darin, dass alle Schreibzugriffe auf einen gemeinsamen User gemapt werden und die Zugriffsrechte über UNIX-Gruppen geregelt werden. Dazu erzeuge ich zunächst einen Scheinuser udaten, der Besitzer des Verzeichnisses /daten/test sein wird.
    useradd udaten
    Weiterhin werden noch drei Gruppen zu dem Share angelegt, die dann das Schreib-, Lese- und Zugriffsrecht regeln.
    groupadd wdaten
    groupadd rdaten
    groupadd ndaten

    Alle User der UNIX-Gruppe wdaten werden auf dem Share vollen Schreib- und Lesezugriff erhalten. Die User der UNIX-Gruppe rdaten werden nur Leserecht bekommen und alle USER der UNIX-Gruppe ndaten werden explizit ausgeschlossen. Einen solchen Scheinuser und diese drei Gruppen erzeuge ich für jedes Share auf dem die Rechte so geregelt werden sollen. Die Namen der User und Gruppen habe ich deshalb immer möglichst naheliegend gewählt, also udaten (user von daten) für den User dem das Share Daten gehört und die Gruppen zu diesem Share deshalb wdaten (write auf daten), rdaten (read auf daten) und ndaten (nix auf daten). Für ein Share "Video" sind die Namen dann also uvideo, wvideo, rvideo und nvideo. Ich denke das System ist klar ;-)
    So, als nächstes wird das Verzeichnis vorbereitet. Mit
    chown udaten.rdaten /daten/test
    wird der User udaten zum Besitzer des Verzeichnisses und die Gruppe wird auf rdaten festgelegt. Nun können die Rechte an dem Verzeichnis vergeben werden. Mit
    chmod 750 /daten/test
    erhält der Besitzer Vollzugriff und die Gruppe rdaten darf lesen und das Verzeichnis öffnen, alle anderen User erhalten keinerlei Rechte am Verzeichnis.
    Jetzt wird der Share-Eintrag in dem Samba-Konfigurationsfile smb.conf entsprechend vorbereitet. Für das Share wird folgender Eintrag vorgenommen:

    [Daten]
            comment = Daten-Verzeichnis
            browseable = yes
            writeable = yes 
            path = /daten/test
            invalid users = @ndaten
            valid users = @wdaten, @rdaten
            read list = @rdaten
            write list = @wdaten
            force user = udaten 
            force group = rdaten
            read only = No
            create mask = 0640
            force create mode = 0640
            directory mask = 0750   
      

    Die Festlegung, welcher User nun welchen Zugriff erhält, wird nun nur noch in der Gruppendatei /etc/group geregelt, indem man die entsprechenden Usernamen dort bei den entsprechenden Gruppen einträgt. Sollten später die Rechte im laufenden Betrieb umgestellt werden müssen (z.B. weil praktikant nun doch lesen darf) so muss nur die /etc/group bearbeitet werden, die Samba-Konfigurationsdatei smb.conf bleibt immer unverändert. Auml;nderungen in der /etc/group wirken sich auch sofort auf die Arbeit von Samba aus ohne dass der Prozess neu gestartet werden muss oder auf das nachladen einer neuen Konfiguration gewartet werden muss. Für das oben genannte Szenario sieht der Auszug aus der group-Datei dann so aus:
    wdaten:x:108:fred,rolf,karl
    rdaten:x:109:sekretaer,bodyguard
    ndaten:x:110:putze,praktikant
      
    Alle Dateien und Verzeichnisse in /daten/test gehören in jedem Fall dem User udaten und der Gruppe rdaten. Das Verzeichnis /daten/test, sowie alle Unterverzeichnisse werden das Recht 750 besitzen und die Dateien 640. Sollten Daten auf einem anderen Weg als über das Samba-Share in das Verzeichnis gelangen, so ist auf jeden Fall sicher zu stellen, dass die Besitzer und Zugriffsrechte entsprechend eingestellt werden.

  2. Zum Anfang

  3. Für Samba-Freigaben einen Papierkorb einrichten

    Werden in einer Samba-Netzwerkfreigabe Dateien gelöscht sind diese unwiderruflich gelöscht und verloren. Schlecht wenn man diese Datei nun doch wieder benötigt oder sie nur versehentlich gelöscht hat.
    Sinnvoll wäre da wie im localem System ein Papierkorb-Ordner.
    Einige zusätzliche Einträge in der smb.conf stellen so einen Netzwerkpapierkorb bereit.
    Einfach in der [global] - Section der smb.conf folgende Einträge hinzufügen:

    [global]
    	workgroup = Heimnetzgruppe
    	.....
    	.....
    	vfs object = recycle
    	recycle:repository = .recycle
    	recycle:keeptree = yes
    	recycle:exclude = *.tmp, *~, *.bak
    	recycle:versions = yes
    	recycle:touch = Yes
    	recycle:touch_mtime = Yes
    	
    	
    Durch die Eingabe unter "global" wird der ".recycle" Ordner relativ in alle freigegebene Verzeichnisse gesetzt sobald dort eine Datei gelöscht wird.
    Nun passiert es das irgendwann der Netzwerkpapierkorb "voll" wird und geleert werden sollte
    Ist der Papierkorb für alle Freigaben aktiviert, kann man folgendes Script in die Crontab eintragen und es werden alle Dateien welche vor mehr als 30 Tagen gelöscht wurden dann endgültig gelöscht.
    
    	#!/bin/sh
    	for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e 's/ //' -e 's/\%S/*/'); 
    	do if [ -d ${path}/.recycle ]; 
    	then find ${path}/.recycle -mindepth 1 -mtime +30 -exec rm -rf {} \;; 
    	fi; 
    	done
    	
    	

  4. Zum Anfang