Wie verwende ich chmod auf einem Mac, damit neue Dateien die Berechtigungen des übergeordneten Verzeichnisses erben?

Auf MacOS . Ich möchte es so machen, dass alle neuen Dateien/Ordner, die in einem bestimmten Ordner erstellt werden, dieselben Berechtigungen haben ( nicht group , das ist bereits erledigt) wie die des übergeordneten Verzeichnisses.

Unter Linux würde ich normalerweise verwenden setfacl, aber es sieht so chmodaus, als könnte MacOS in der Lage sein, das zu tun, wonach ich suche. Ich habe die manSeite für gelesen chmod, kann aber immer noch nicht herausfinden, wie ich den Befehl richtig formatieren muss, um das zu bekommen, was ich will.

Antworten (5)

Zuerst ein bisschen Hintergrundwissen, um zu erklären, was vor sich geht: Auf Dateien in OS X können zwei ganz unterschiedliche Arten von Berechtigungseinstellungen angewendet werden: POSIX und ACLs.

Auf Dateien werden immer (na ja, fast immer) POSIX-Berechtigungen angewendet, die aus einem Besitzer, einer Gruppe und anderen bestehen (mit einer Kombination aus Lesen, Schreiben und Ausführen für jeden von ihnen). Es gibt keine Möglichkeit, die Vererbung von POSIX-Berechtigungen zu steuern: Neue Elemente gehören immer dem Benutzer, der sie erstellt hat, die Gruppenzuweisung wird von dem Ordner geerbt, in dem sie sich befinden, und der Zugriff wird durch die umask bestimmt (was so ziemlich immer so ist: Eigentümer erhält vollen Zugriff, Gruppe und andere nur lesen + ausführen für Ordner). POSIX-Berechtigungen funktionieren also nicht für das, was Sie versuchen.

Auf Dateien kann auch eine Zugriffskontrollliste (ACL) angewendet werden. Dies ist eine Liste von Zugriffssteuerungseinträgen (ACEs), von denen jeder für einen Benutzer oder eine Gruppe gilt, die Zugriffsarten (in allen Einzelheiten) angibt, ob sie zugelassen oder verweigert werden und ob der ACE auch kopiert werden soll Elemente, die im Ordner erstellt wurden. Das letzte Bit ist der Teil, der dies für Sie nützlich macht; Sie müssen einen ACE für den Ordner erstellen, der die gewünschte Gruppe, die gewünschten Zugriffstypen und die vollständige Vererbung angibt.

chmodunter OS X können ACEs mit den Berechtigungsoptionen +a, -a, etc manipulieren. Wenn ich verstehe, was Sie wollen, würden Sie dies (mit Ihrem Gruppennamen und Ordnerpfad ersetzen) verwenden, um den ACE zu erstellen:

chmod +a "group:examplegroup allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /path/to/folder

Hinweis : Die Vererbung ist nicht "lebend", dh:

  • Es gilt nicht für Elemente, die erstellt wurden, bevor Sie den ACE zugewiesen haben
  • es gilt nicht für Elemente, die woanders erstellt und dann in den Ordner verschoben wurden.

Sie können es auf vorhandene Inhalte anwenden, indem Sie -R(dh: chmod -R +a ...) verwenden. Ich kenne keine Möglichkeit (außer den Server-Admin-Tools von Apple), die Vererbung von in den Ordner verschobenen Elementen zu erzwingen.

Danke für die tolle Erklärung. Ich habe es jedoch gerade ausprobiert und es hat immer noch eine neue Datei mit Benutzer-Lese- / Schreibberechtigung erstellt, alle anderen Leseberechtigungen. Der übergeordnete Ordner (im Freien) ist auf 775-Berechtigungen mit meinem Benutzer (jhicks) als Eigentümer und _www als Gruppe festgelegt. Ich habe mich der Gruppe _www hinzugefügt. drwxrwxr-x+ 13 jhicks _www 442B 16. November 09:47 draußen Ich habe Ihren Befehl wie folgt ausgeführt: chmod +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit, directory_inherit" im Freien
ls -lzeigt nur POSIX-Berechtigungen an (obwohl das "+" nach den Berechtigungen anzeigt, dass eine ACL vorhanden ist). Wird auch verwendet ls -le, um ACLs anzuzeigen.
Wenn der Gruppenname ein Leerzeichen enthält, können Sie : als Trennzeichen verwenden. Zum Beispiel „Gruppe:Meine Gruppe mit einem Leerzeichen:Erlauben“
chmod +a ...Dem Befehl gefolgt , dann habe ich eine abc.txt im Ordner erstellt. Wenn Sie zu einem anderen Benutzer wechseln und mit TextEdit bearbeiten, wird die Datei als gesperrt angezeigt und kann nicht bearbeitet werden.
Ich habe etwas damit gespielt, ich denke, dass Sie die Vererbung mit +ai erzwingen

Versuchen Sie -R, @gordons Befehl wie folgt hinzuzufügen:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" outdoors

Die -ROption wird (wie hier angemerkt ):

Rekursion: Ändern Sie den Modus von Dateihierarchien, die in den Dateien verwurzelt sind, anstatt nur in den Dateien selbst.

Das Ändern der Dateihierarchien scheint das zu sein, wonach Sie suchen (für neue Dateien, Verzeichnisse usw.).

Sie können sich auch diesen Apple.SE-Beitrag ansehen , der eine ähnliche Situation wie Ihre behandelt (außer in Bezug auf ein freigegebenes Verzeichnis), die ein sudoAnheften an der Vorderseite erforderte.

Dies (-R) ist nicht das, was die meisten Menschen anstreben; Meistens würden sie es vorziehen, die ACL im obersten Verzeichnis zu ändern und etwas Magisches zu tun, um alle enthaltenen Objekte zu zwingen, Flags gemäß der ACL zu erben, die sie im Stamm dieses Unterbaums angegeben haben. Dies ist viel eleganter, da die ACLs auf den Objekten diese geerbten ACEs gemäß der Richtlinie sortieren.

Und ja, ich musste dafür ein Python-Skript schreiben, ich habe auch nichts Passendes gefunden.

Möchten Sie etwas teilen (z. B. im Wesentlichen ? Wenn es Ihnen nichts ausmacht, ich denke, das war eine nette Geste.

Versuchen Sie es auf einem Mac mit PathFinder , es macht es einfach, ACL und POSIX einzustellen. Wenn Sie WordPress auf einem Mac-Server hosten, müssen Sie auch define('FS_METHOD', 'direct');die wp-config.php so einstellen, dass Sie beim Installieren von Plugins und Upgrades nicht nach FTP-Details gefragt werden.

Sie behalten also im Grunde die standardmäßigen POSIX-Berechtigungen bei und fügen den Benutzer _www (nicht die Gruppe) zur ACL hinzu und klicken dann im ACL-Fenster auf Berechtigung propagieren.

chmod +ai, i = ACL-Regeln erben