Je suis sur Mac. Je veux que tous les nouveaux fichiers / dossiers créés dans un dossier spécifique aient les mêmes autorisations (pas de groupe, c'est déjà pris en charge) que celles du répertoire parent. Sous Linux, j'utiliserais normalement setfacl, mais il semble que chmod sur Mac puisse faire ce que je recherche. J'ai lu la page de manuel de chmod mais je n'arrive toujours pas à comprendre comment formater correctement la commande pour obtenir ce que je veux.
23
Réponses:
Tout d'abord, un peu de contexte pour expliquer ce qui se passe: les fichiers sous OS X peuvent avoir deux types de paramètres d'autorisation très différents: POSIX et ACL.
Les fichiers ont toujours (enfin, presque toujours) des autorisations POSIX appliquées, comprenant un propriétaire, un groupe et d'autres (avec une combinaison de lecture, d'écriture et d'exécution pour chacun d'entre eux). Il n'y a aucun moyen de contrôler l'héritage des autorisations POSIX: les nouveaux éléments appartiennent toujours à l'utilisateur qui les a créés, l'affectation de groupe est héritée du dossier dans lequel ils se trouvent et l'accès est déterminé par l'umask (qui est à peu près toujours: propriétaire obtient un accès complet, groupe et autres en lecture seule + exécution pour les dossiers). Les autorisations POSIX ne fonctionneront donc pas pour ce que vous essayez de faire.
Les fichiers peuvent également avoir une liste de contrôle d'accès (ACL) appliquée. Il s'agit d'une liste d'entrées de contrôle d'accès (ACE), dont chacune s'applique à un utilisateur ou à un groupe, spécifie les types d'accès (en détail), s'ils sont autorisés ou refusés, et si l'ACE doit également être copié dans les éléments créés dans le dossier. Ce dernier morceau est la partie qui rend cela utile pour vous; vous devez créer un ACE sur le dossier qui spécifie le groupe souhaité, les types d'accès souhaités et l'héritage complet.
chmod sur OS X peut manipuler les ACE avec les options d'autorisations + a, -a, etc. Si je comprends ce que vous voulez, vous utiliseriez ceci (avec le nom de votre groupe et le chemin de dossier substitué) pour créer l'ACE:
Notez que l'héritage n'est pas "actif", c'est-à-dire qu'il ne s'applique pas aux éléments créés avant que vous n'assigniez l'ACE, et qu'il ne s'applique pas aux éléments créés ailleurs et ensuite déplacés dans le dossier. Vous pouvez l'appliquer au contenu existant en utilisant -R (
chmod -R +a ...
). Je ne connais aucun moyen (sauf les outils d'administration du serveur d'Apple) de forcer l'héritage aux éléments déplacés dans le dossier.la source
ls -l
affiche uniquement les autorisations POSIX (bien que le "+" après les autorisations indique la présence d'une ACL). Utilisez égalementls -le
pour afficher les ACL.chmod +a ...
J'ai suivi la commande, puis j'ai créé un abc.txt dans le dossier. Basculé vers un autre utilisateur et édité avec TextEdit, le fichier est indiqué comme verrouillé et n'est pas modifiable.Essayez d'ajouter
-R
à la commande de @ gordon, comme ceci:L'
-R
option (comme indiqué ici ):La modification des hiérarchies de fichiers semble être ce que vous recherchez (pour les nouveaux fichiers, répertoires, etc.).
Vous pouvez également consulter cet article Apple.SE , qui couvre une situation quelque peu similaire à la vôtre (sauf en ce qui concerne un répertoire partagé), qui nécessitait un
sudo
clou sur le devant.la source
Ce (-R) n'est pas ce que la plupart des gens cherchent à faire; la plupart du temps, ils préféreraient changer l'ACL sur le répertoire le plus haut et faire quelque chose de magique pour forcer tous les objets contenus à hériter des drapeaux selon l'ACL qu'ils ont spécifié à la racine de cette sous-arborescence. Ceci est beaucoup plus élégant car les ACL sur les objets trieront ces ACE hérités selon la stratégie.
Et oui, j'ai dû écrire un script python pour ce faire, je n'ai rien trouvé non plus.
la source
chmod + ai, i = hérite des règles acl
la source
Sur un Mac, essayez d'utiliser PathFinder , il est facile de définir ACL et POSIX. Si vous hébergez WordPress sur un serveur Mac, vous devrez également définir
define('FS_METHOD', 'direct');
le fichier wp-config.php afin que l'installation des plugins et la mise à niveau ne vous demandent pas de détails FTP.Donc, fondamentalement, vous conservez les autorisations POSIX par défaut et ajoutez l'utilisateur _www (pas le groupe) à ACL, puis cliquez sur Propager l'autorisation dans la fenêtre ACL.
la source