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 chmod
aus, als könnte MacOS in der Lage sein, das zu tun, wonach ich suche. Ich habe die man
Seite für gelesen chmod
, kann aber immer noch nicht herausfinden, wie ich den Befehl richtig formatieren muss, um das zu bekommen, was ich will.
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.
chmod
unter 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:
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.
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 -R
Option 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 sudo
Anheften 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.
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
Jeremy Hicks
Gordon Davisson
ls -l
zeigt nur POSIX-Berechtigungen an (obwohl das "+" nach den Berechtigungen anzeigt, dass eine ACL vorhanden ist). Wird auch verwendetls -le
, um ACLs anzuzeigen.Doug Richardson
Oh ho
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.Robin