Comment changer de manière récursive le partage / l'autorisation d'un dossier sous Mac OS X

55

Existe-t-il des outils ou des scripts Mac OS X qui me permettent de modifier de manière récursive les propriétés de partage / autorisation des fichiers et des sous-dossiers d'un dossier? Par exemple, laisser tout le monde ou un utilisateur spécifique capable de lire et d'écrire, de lire seulement ou d'écrire seulement.

puri
la source

Réponses:

75

Essayez la commande chmod. Par exemple, si vous avez un nom de répertoire mydir, la commande suivante activera en lecture / écriture ce mydir de manière récursive.

$ chmod -R +rw mydir

Pour plus d'informations:

$ man chmod
Hai Vu
la source
19
Bonne réponse, mauvais exemple. Lorsque vous ajoutez un accès en lecture et / ou en écriture aux dossiers, vous devez également ajouter un accès en mode exécution ("x", recherche), sinon les commandes r / w sont un peu inutiles. Par contre, vous ne voulez généralement pas ajouter d’exécution à des fichiers. Lorsque vous effectuez une modification récursive, vous utilisez un mélange de fichiers et de dossiers. La solution consiste à utiliser la fonctionnalité "exécution intelligente" de chmod (majuscule X): chmod -R +rwX mydirajoutera l'exécution uniquement lorsque cela aura du sens.
Gordon Davisson
Gordon: Excellente observation. Cependant, un répertoire a normalement le x activé, à moins que l'utilisateur ne fasse quelque chose de fun pour le désactiver.
Hai Vu
1
Dépend des autorisations initiales. Si vous examinez un dossier de base Mac par défaut, par exemple, vous verrez que, pour la plupart des dossiers (Bureau, Documents, Bibliothèque, etc.), le propriétaire dispose d'un accès complet (rwx) à tout, sauf aux groupes et autres. n'ont pas d'accès (pas de lecture, écriture ou exécution). Si vous ajoutez des lectures ou des écritures pour un groupe ou d'autres personnes à l'un de ces dossiers, vous devez également ajouter exécuter.
Gordon Davisson
1
Ne fonctionne pas pour moi, s'applique uniquement au dossier principal, pas aux sous-dossiers.
delphirules
29

Sélectionnez le dossier racine que vous souhaitez utiliser et ouvrez l'inspecteur (CMD-i ou cliquez avec le bouton droit de la souris et "Afficher les informations"). Le panneau inférieur est l'endroit où vous pouvez gérer les autorisations.

Ajoutez et supprimez des autorisations à la liste. Pour appliquer les mêmes autorisations de manière récursive à chaque sous-dossier, cliquez sur le rouage, puis sélectionnez "Appliquer aux éléments inclus ...".

Remarque: j'ai remarqué que "Appliquer aux éléments inclus ..." est estompé lorsque la petite icône représentant un verrou en bas à droite de la fenêtre est verrouillée. Si tel est le cas, cliquez simplement sur le verrou pour le déverrouiller en entrant vos informations d'identification, puis réessayez avec "Appliquer aux éléments inclus ...".

Gregsabo
la source
Bien que généralement utile, il n'accomplira pas ce qui est demandé. Il remplace les autorisations dans les sous-répertoires, au lieu d'ajouter par exemple un utilisateur à tous, peu importe ce que les autorisations étaient avant.
Daniel Beck
@DanielBeck vous vous trompez, il applique tous les éléments d'autorisations, chmod et chown c'est la bonne façon de procéder
Rob
Je viens d'essayer cette réponse (sur un dossier de test) et cela ne fonctionnait pas correctement: puisqu'un dossier est généralement «exécutable», ce bit était également défini sur tous les fichiers joints, ce qui est faux. Je voulais juste changer d'utilisateur et de groupe.
flux
12

Vous voulez utiliser les commandes chmodet chown.

Si je me souviens bien, vous pouvez modifier les autorisations de la manière suivante:

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/

Pour plus de détails sur ces commandes, recherchez leurs pages de manuel respectives dans Terminal:

man chmod
man chown
Josh Hunt
la source
1
Meilleur moyen d'essayer de spécifier des autorisations pour un utilisateur particulier
megalucio