Hallo,
ich möchte mir einen Samba Server in Ubuntu einrichten.
Ich steh dabei nur beim Einstellungen der Berechtigungen auf
dem Schlauch. Ich versteh das ganze mit den Gruppen nicht und
den Ordnerberechtigungen. Genauso was es mit dem chown
bezüglich auf das Benutzen des Ordners anderer Benutzer und
das erstellen von Unterordner aufsich hat.
meine Antwort bezieht sich jetzt auf das Erstellen der notwendigen Berechtigungen unter Linux (mit ACLs). Ich weiss, dass derartige ACLs (zumindest) teilweise von Samba beachtet werden, also auch auf den (wohl Windows-)Clients funktionieren.
Fuer Details zu Samba muss ich aber auf Leute verweisen, die das mehr als ich verwenden.
Ich habe insgesamt 5 Ordner und 3 Benutzer.
User:
Benutzer1(Admin); Benutzer2; Benutzer 3
Es sollen folgende Berechtigungen auf die Ordner erfolgen.
Setupdateien:
-Vollzugriff Benutzer1
-Lesezugriff Benutzer2;Benutzer3
Multimedia:
-Vollzugriff Benutzer1; Benutzer2; Benutzer3;
Privatordner Benutzer1:
-Vollzugriff Benutzer1
Privatordner Benutzer2:
-Vollzugriff Benutzer1; Benutzer2
Privatordner Benutzer3:
-Vollzugriff Benutzer1; Benutzer2
Wie kann ich das realisieren?
Das Rezept hierfuer heisst unter Linux ACLs:
man kann mit den Befehlen setfacl und getfacl Verzeichnissen und Dateien Rechte fuer individuelle User zuweisen. Am Einfachsten mal an einem Beispiel, den o.g. Setupdateien:
Angenommen, der Ordner ist erstellt. Dann sollten als erstes mal die Linux-Rechte auf ein Minimum beschraenkt werden, damit nicht darueber ggf. noch andere User Rechte erhalten:
chmod 700 ./Setupdateien
Danach sollte das bei einem ls -l so aussehen:
drwx------
Jetzt darf erst mal nur noch der Eigentuemer des Verzeichnissen rein. Jetzt beginnen wir, die ACLs zu setzen:
- erst mal festlegen, dass alle Operationen moeglich sind:
setfacl -m m::rwx ./Setupdateien
setfacl -m d:m:rwx ./Setupdateien
- Benutzer1 darf alles:
setfacl -m u:Benutzer1:rwx ./Setupdateien
setfacl -m d:u:Benutzer1:rwx ./Setupdateien
- Benutzer2 darf alles lesen, aber nix schreiben:
setfacl -m u:Benutzer2:rx ./Setupdateien
setfacl -m d:u:Benutzer2:rx ./Setupdateien
- Benutzer3 wir Benutzer2: dieselben Befehle, nur mit 3 statt 2
Hinweis: wenn bereits Dateien/Unterverzeichnisse exisitieren, muss bei jedem Befehl als erste Option noch ein -R fuer rekursiv mit uebergeben werden.
Ein getfacl ./Setupdateien sollte jetzt so aussehen:
file: Setupdateien/
owner: xxx
group: xxx
user::rwx
user:Benutzer1:rwx
user:Benutzer2:rx
user:Benutzer3:rx
group::—
mask::rwx
other::—
default:user::rwx
default:user:Benutzer1:rwx
default:user:Benutzer2:rx
default:user:Benutzer3:rx
default:group::—
default:mask::rwx
default:other::—
Die Default-Eintraege bedeuten, dass diese Rechte sich auch auf alles in diesem Verzeichnis weitervererben.
Achtung: ein ls -l zeigt jetzt:
drwxrwx—+
Das + bedeutet, dass ACLs gesetzt sind, die Bedeutung der Zeichen davor ist jetzt:
d: Directory
rwx: Userrechte
rwx: Maske
—: Other
Weitere Infos dazu gibt es in der Manpage zu setfacl.
Viele Gruesse,
Volker