Zugriffsrechte in macOS
sind eher restriktiv gesetzt. Das ist grundsätzlich auch gut, aber bei geteilten Ordnern, auf die mehrere User:innen eines Macs Zugriff haben sollen, kann das schnell zu einem Problem werden. macOS legt nämlich alle neu angelegten Dateien und Ordner immer nur mit Schreib-/Leserechten für den jeweiligen User an. Alle anderen User:innen können nur lesend darauf zugreifen.
Nun könnte man immer nach jedem Neuanlegen und jeder Änderung, die Zugriffsrechte über den Informationen-Dialog so verändern, dass alle User Schreib-/Leserechte haben. Das ist auf Dauer aber recht umständlich. Daher hier nun zwei andere, mögliche Lösungswege.
Das sind zum einen die klassischen Unix-Rechte und zum anderen die ACL.
Unix-Rechte:
Das geht recht einfach, empfiehlt sich aber nur dann, wenn man wirklich _allen_ User:innen auf dem Mac auch Zugriff auf _alle_ neu angelegten Dateien und Ordner geben will. Die standardmäßig vorhandenen Ordner, wie Dokumente, Musik, usw. (wenn man nichts verändert hat) bleiben aber weiterhin nur für den jeweiligen User zugänglich.
Um nun allen User:innen Schreib-/Leserechte zu geben, ändern wir die sogenannte umask. Die umask entfernt quasi von den „vollen“ Rechten – bei Ordnern -rwxrwxrwx
(numerisch 0777), bei Dateien -rw-rw-rw
(numerisch 0666) – die jeweils angegebenen Rechte. Standardmäßig hat die umask bei macOS einen Wert von 0022, was dann zu den bekannten Rechten bei Ordner von -rwxr-xr-x
(numerisch 0755 = 0777 – 0022) und bei Dateien von -rw-r--
r- (numerisch 0644 = 0666 – 0022) führt.
Wir ändern die umask nun vom Admin-Account aus im Terminal wie folgt:
sudo launchctl config user umask 0002
Das ergibt dann für neu angelegte Ordner 0777 – 0002 = 0775 oder -rwxrwxr-x
und für neue Dateien 0666 – 0002 = 0664 oder -rw-rw-r--
, also Schreib-/Leserechte auch für die Gruppe. Da alle User:innen eines Macs auch in der Gruppe „staff“ sind, und diese Gruppe standardmäßig für neue Ordner und Dateien verwendet wird, haben auch alle User künftig Schreib-/Leserechte hierauf.
Nun könnt ihr im „Geteilt“-Ordner einen neuen Unterordner angelegen, der dann eben diese Rechte zugewiesen erhält. Darin werden dann künftig alle gemeinsam genutzten Dateien abgelegt. Der Ordner „Geteilt“ ist deswegen notwendig, da alle anderen Standard-Ordner (Dokumente, Musik, etc) keinerlei Gruppenrechte besitzen (wenn man nichts selbst verändert hat) und andere User:innen daurf überhaupt nicht zugreifen können.
ACL (Access Control List):
Dieser Weg ist zwar ein klein wenig aufwendiger, dafür könnt ihr aber viel detaillierter festlegen, wer Zugriff erhalten und auf welche Ordner (und darin neu angelegte Unterordner und Dateien) der Zugriff begrenzt bleiben soll.
Ich kann daher nur empfehlen, den Weg über die ACL zu gehen. Nach einiger Zeit hat man ganz leicht vergessen, dass man die umask geändert hat und hat so womöglich jeder neuen User:in des Macs Schreib-/Leserechte auf Dateien von anderen Usern gegeben.
Um nun ACL zu verwenden, erstellt ihr zuerst als Admin eine neue Gruppe über die Systemeinstellungen -> Benutzer & Gruppen. Dort öffnet ihr das Schloss und gebt euer Passwort ein. Ein Klick auf das + Symbol und ihr könnt im erscheinenden Dialog „Neuer Account“ auf „Gruppe“ stellen und einen Gruppennamen eingeben
(mit Kleinschreibung, also z.B. family)
Anschließend können die User ausgewählt werden, die in dieser Gruppe sein sollen.
Als nächstes erzeugt ihr einen Unterordner im „Geteilt“-Ordner (warum siehe oben) und klickt dann im Informationen-Dialog auf das + Symbol und fügt die soeben erstellte Gruppe hinzu und stellt für diese Gruppe „Lesen & Schreiben“ ein.
Nun ergänzen wir noch die ACL so, dass sich dieses „Lesen & Schreiben“ automatisch auf alle neu angelegten Unterordner und Dateien im gerade erstellten Ordner vererbt. Da kommt (leider) das Terminal zum Zuge.
Erst mal in den „Geteilt“-Ordner
cd /Users/Shared
dann lassen wir uns die ACL anzeigen, die wir gerade gesetzt haben
ls -le
Ich habe bei mir eine Gruppe „family“ erstellt und einen Ordner „gemeinsam“. Das sieht dann so aus:
Code:
drwxr-xr-x+ 5 simone wheel 160 30 Aug 10:31 gemeinsam
0: group:family allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity
Es fehlen nun nur noch die ACL für die Vererbung. Um die zu ergänzen müssen wir auch die bisherigen ACL erneut mit angeben. Das Ganze sieht dann so aus:
Wichtig sind die Anführungszeichen. Sollte euer Ordnername Leerzeichen enthalten, muss auch der in Anführungszeichen stehen.
chmod "=a#" 0 "group:family allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" gemeinsam
Fertig.
Nun werden alle in diesem Ordner neu angelegten Unterordner und Dateien immer für alle User:innen der Gruppe „family“ mit Schreib-/Leserechten versehen. Sollen weitere User:innen Zugriff erhalten, reicht es aus, diese in die Gruppe mit aufzunehmen.
Habt ihr bereits existierende Dateien und Unterordner, so könnt ihr über den Informationen-Dialog diese Rechte auf alle Unterobjekte anwenden.
8 Kommentare
Bernd Kusen · 11. Juni 2022 um 12:34
Ich bekomme bei dem Versuch die ACL wie oben beschrieben zu modifizieren immer den Fehler „Invalid ACL entry number: 0“
Funktioniert hat dann:
sudo chmod +a „group:yourgroupname allow readsecurity,readattr,readextattr,list,search,read,execute,writeattr,writeextattr,delete,add_file,add_subdirectory,delete_child,write,append,file_inherit,directory_inherit“ DirectoryNameToApplyACLTo
Simone · 11. Juni 2022 um 15:51
Hast du denn überhaupt vor der Änderung einer Gruppe 0? Das beschreibt mein Artikel. Mit deinem Befehl änderst du ja keine vorhandene ACL-Gruppe, sondern fügst eine neue hinzu.
Daniel · 1. März 2023 um 20:09
Vielen Dank für die Anleitung. Habe versucht die Variante via ACL zu erstellen, was soweit funktioniert hat. Nun ist es aber so, dass die Vererbung der Rechte für die Gruppe nur funktioniert, wenn eine Datei neu erstellt oder via copy&past hinzugefügt wird. Wenn ich eine Datei via drag&drop oder cut&past einfüge, übernimmt es die rechte jeweils nicht. Könnte man da noch einen anderen Code erfassen, dass die Rechte wirklich ganz simpel einfach für alle Dateien, welche dem Unterordner hinzugefügt werden (egal auf welche Art) einfach übernommen werden?
Vielen Dank für die Hilfe!
Simone · 2. März 2023 um 7:23
Bei ACL geht es nur mit neu anlegen oder copy&paste. Alles andere wird technisch als „verschieben“ realisiert und da werden ACL nicht verändert also nicht auf diejenigen des Zieles angepasst. Das ist nichts Mac-spezifisches, sondern Design von ACL.
deroth · 19. März 2023 um 8:31
Wie vererebe ich Ordner aus Paketinhalten? Konkret geht es um Minecraft. Bei mehreren Usern muss man die App im /Application suchen, rechtsklick Paketinhalt, und dann die Zugriffsrechte verteilen aus zB die ACL. Geht aber auch nie lange gut. Danach kann dann bis auf 1 User niemand Minecraft starten (Fehlermeldung Starten sei nicht möglich, falls man von dmg starten würde bitte neu installieren)
Simone · 19. März 2023 um 8:54
Ich kenne Minecraft und den Aufbau dessen Paktes nicht. Falls du mit „Paket“ das App-Bundle meinst, dann halte ich es für keine gute Idee, den Inhalt eines App-Bundles zu modifizieren. macOS erlaubt es daher auch nicht, über den Info-Dialog die Rechte auf alle Unterverzeichnise, also auf den Inhalt des App-Bundles, anzuwenden. Mehr kann ich dazu nicht sagen.
Thorsten · 28. November 2023 um 19:13
Hi und erstmal vielen Dank dafür, dass Du Dein Wissen mit uns teilst!
Ich möchte gerne eine Photos Bibliothek für alle Nutzer aufrufbar und änderbar machen.
Ich habe auch den Namen des neuen Unterordners „gemeinsam“ gewählt.
Leider sagt mir das Terminal unter OS 12.7.1 dann „Operation not permitted“
Was mache ich wohl falsch?
Simone · 28. November 2023 um 20:31
Da du nicht schreibst was du genau getan hast, kann man nur Vermutungen anstellen, das du „sudo“ vergessen hast.
Bitte halte dich _exakt_ an den Artikel. Er beschreibt zwei Möglichkeiten. Entscheide dich für eine davon. Das Ganze geht nicht für bereits bestehende Daten.
Und bitte habe Verständnis, dass ich über das Blog keinen individuellen Support geben kann.