So ändern Sie die Freigabe / Berechtigung eines Ordners unter Mac OS X rekursiv

53

Gibt es Tools oder Skripte für Mac OS X, mit denen ich die Freigabe- / Berechtigungseigenschaften von Dateien und Unterordnern in einem Ordner rekursiv ändern kann? Zum Beispiel, damit jeder oder ein bestimmter Benutzer lesen und schreiben, nur lesen oder nur schreiben kann.

puri
quelle

Antworten:

73

Probieren Sie den Befehl chmod aus. Wenn Sie beispielsweise einen Verzeichnisnamen mydir haben, wird mit dem folgenden Befehl das Lesen / Schreiben für dieses mydir rekursiv aktiviert.

$ chmod -R +rw mydir

Für mehr Informationen:

$ man chmod
Hai Vu
quelle
18
Gute Antwort, schlechtes Beispiel. Wenn Sie Lese- und / oder Schreibzugriff auf Ordner hinzufügen, müssen Sie auch Ausführungszugriff ("x", auch als Suchzugriff bezeichnet) hinzufügen, da sonst die Schreib- / Lesezugriffsrechte unbrauchbar werden. Auf der anderen Seite möchten Sie im Allgemeinen keine Ausführungsdateien hinzufügen. Bei einer rekursiven Änderung bearbeiten Sie eine Mischung aus Dateien und Ordnern. Die Antwort ist die Verwendung von chmods "Smart Execute" -Funktion (Großbuchstabe X): chmod -R +rwX mydirFügt Execute nur hinzu, wenn es sinnvoll ist.
Gordon Davisson
Gordon: Großartige Beobachtung. In einem Verzeichnis ist jedoch normalerweise das x aktiviert, es sei denn, der Benutzer unternimmt etwas Unkonventionelles, um es zu deaktivieren.
Hai Vu
1
Hängt von den anfänglichen Berechtigungen ab. Wenn Sie sich beispielsweise einen Mac-Basisordner mit Standardkonfiguration ansehen, werden Sie feststellen, dass der Eigentümer für die meisten Ordner (Desktop, Dokumente, Bibliothek usw.) uneingeschränkten (rwx) Zugriff auf alles außer auf Gruppen und andere hat haben keinen Zugriff (kein Lesen, Schreiben oder Ausführen). Wenn Sie einem dieser Ordner Lese- oder Schreibzugriff für Gruppen oder andere hinzufügen, müssen Sie auch Ausführen hinzufügen.
Gordon Davisson
1
Funktioniert bei mir nicht, gilt nur für den Hauptordner, nicht für die Unterordner.
Delphirules
29

Wählen Sie den Stammordner aus, mit dem Sie arbeiten möchten, und öffnen Sie den Inspektor (CMD-i oder klicken Sie mit der rechten Maustaste und wählen Sie "Informationen anzeigen"). Im unteren Bereich können Sie Berechtigungen verwalten.

Fügen Sie der Liste dort Berechtigungen hinzu und entfernen Sie sie. Um die gleichen Berechtigungen rekursiv auf jeden Unterordner anzuwenden, klicken Sie auf das Zahnrad und wählen Sie "Auf eingeschlossene Elemente anwenden ...".

Hinweis: Ich habe festgestellt, dass die Option "Auf eingeschlossene Elemente anwenden ..." ausgegraut ist, wenn das kleine Schlosssymbol unten rechts im Fenster gesperrt ist. Wenn dies der Fall ist, klicken Sie einfach auf das Schloss, um es zu entsperren, und geben Sie Ihre Anmeldeinformationen ein. Versuchen Sie es dann erneut mit "Auf eingeschlossene Elemente anwenden ...".

gregsabo
quelle
Obwohl es allgemein nützlich ist, wird es nicht das erreichen, wonach es verlangt wird. Es ersetzt Berechtigungen in Unterverzeichnissen, anstatt z. B. einen Benutzer zu allen hinzuzufügen, unabhängig von den vorherigen Berechtigungen.
Daniel Beck
@ DanielBeck Sie sind falsch, es gilt alle Elemente der Berechtigungen, Chmod und Chown Dies ist die richtige "Mac" -Methode, um es zu tun
Rob
Ich habe gerade versucht, diese Antwort (in einem Testordner) und es hat nicht richtig funktioniert: Da ein Ordner in der Regel "ausführbar" ist, wurde dieses Bit auch auf alle beigefügten Dateien gesetzt, was falsch ist. Ich wollte nur Benutzer und Gruppe ändern.
Fluss
12

Sie möchten die Befehle chmodund verwenden chown.

Wenn ich mich richtig erinnere, können Sie die Berechtigungen folgendermaßen ändern:

chmod -R +a "joshhunt allow read" /some/file/or/folder/
chmod -R +a "Guest deny read" /some/other/folder/
chmod -R +a "Guest deny write" /some/other/folder/

Weitere Informationen zu diesen Befehlen finden Sie auf den entsprechenden Manpages in Terminal:

man chmod
man chown
Josh Hunt
quelle
1
Der beste Weg, um Genehmigungen für einen bestimmten Benutzer
festzulegen