La plupart des dérivés Unix peuvent copier des ACL d'un fichier à un autre avec:
getfacl filename1 | setfacl -f - filename2
Malheureusement, Mac OS X n'a pas les commandes getfacl et setfacl, car elles ont intégré la gestion des ACL dans chmod. chmod -E accepte une liste d'ACL sur stdin, mais je n'ai pas trouvé de commande qui crachera des ACL dans un format approprié sur stdout. Le meilleur que j'ai trouvé est:
ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2
Existe-t-il une solution plus robuste?
Question bonus: existe-t-il une bonne façon de le faire en Python, sans utiliser de modules qui ne sont pas livrés avec 10.6?
mac-osx
access-control-list
chmod
MagerValp
la source
la source
getfacl
/setfacl
. Assez remarquable. github.com/jvscode/getfacl a 10 ans je n'ai pas pu le faire fonctionner. serverfault.com/a/303752/104173 semble compliqué, et je ne sais pas s'il tente de remplacer laget/setfacl
fonctionnalité. Je comprends que macOS n'est pas une plate-forme de serveur, mais il peut toujours subir des intrusions de sécurité. Vaut-il la peine de relancer cette conversation sur apple.stackexchange.com ?Réponses:
ls -e
Imprimez la liste de contrôle d'accès (ACL) associée au fichier, le cas échéant, en sortie longue (-l).cela donne un résultat tel que ...
Personnellement, j’ai des «exportations» dans mon
~/.bash_profile
qui rendent un tel
chmod
possible ...sudo chmod + a "allow localadmin $ DIR_ALL" / APPBUNDLE
À partir de la
chmod
page de manuel, il y a ce morceau d'informations ... qui laisse entendre qu'il peut en effet être possible de faire quelque chose comme vous décrivez .."Les ACL sont manipulées à l'aide d'extensions de la grammaire du mode symbolique. Chaque fichier possède un ACL, contenant une liste ordonnée d'entrées. Chaque entrée fait référence à un utilisateur ou à un groupe et accorde ou refuse un ensemble d'autorisations. Dans les cas où un utilisateur et un groupe existe sous le même nom, le nom de l'utilisateur / groupe peut être préfixé par "utilisateur:" ou "groupe:" afin de spécifier le type de nom. "
Aussi, je vais donner un coup de pouce à BatchMod , un ancien, mais un goodie pour les ACL, ainsi que TinkerToolSystem .
la source
sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE
(changer le nom d'utilisateur et leallow
)Vous devriez pouvoir
stat
formater sa sortie de manière appropriée.la source
Jetez peut-être un œil à https://github.com/jvscode/getfacl .
la source
setfacl
(seulementgetfacl
), et lagetfacl
fonctionnalité semble être assez limitée. Je n'ai malheureusement pas trouvé de meilleure solution.