Pregunta ¿Cómo copio las ACL en Mac OS X?


La mayoría de los derivados de Unix pueden copiar las ACL de un archivo a otro con:

getfacl filename1 | setfacl -f - filename2

Desafortunadamente, Mac OS X no tiene los comandos getfacl y setfacl, ya que han incorporado el manejo de ACL en chmod. chmod -E acepta una lista de ACL en stdin, pero no he encontrado un comando que pueda escupir las ACL en un formato adecuado en stdout. Lo mejor que he encontrado es:

ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2

¿Hay una solución más robusta?

Pregunta extra: ¿hay una buena forma de hacerlo en Python, sin usar ningún módulo que no se envíe con 10.6?


9
2017-09-17 13:48


origen




Respuestas:


ls -e  Imprima la Lista de control de acceso (ACL) asociada con el archivo, si está presente, en la salida larga (-l).

Esto da un resultado tal como ...

drwxr-xr-x@ 19 localadmin   646B Aug  4 00:21  APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
                       ⇧                      ⇶                                     

Personalmente, tengo "exportaciones" en mi ~/.bash_profile 

export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"

que hacen tal chmod posible...

sudo chmod + a "allow localadmin $ DIR_ALL" / APPBUNDLE

Desde el chmod página de manual, hay un poco de información ... que sugiere que de hecho puede ser posible hacer algo como lo describe ...

"Las ACL se manipulan utilizando extensiones a la gramática del modo simbólico. Cada archivo tiene una ACL, que contiene una lista ordenada de entradas. Cada entrada se refiere a un usuario o grupo, y otorga o niega un conjunto de permisos. En los casos en que un usuario y un El grupo existe con el mismo nombre, el nombre de usuario / grupo se puede prefijar con "usuario:" o "grupo:" para especificar el tipo de nombre ".

chmod -E      Lee la información de ACL de stdin, como una lista secuencial de ACE, separadas por nuevas líneas. Si la información se analiza correctamente, se reemplaza la información existente.

Además, voy a dar un grito a BatchMod, un oldie, pero un goodie para ACL, así como TinkerToolSystem.


4
2017-08-22 11:39





Deberías poder conseguir stat Para formatear su salida de una manera adecuada.


1
2017-09-17 17:20



stat no lista las ACLs. - MagerValp


Tal vez echar un vistazo a https://github.com/jvscode/getfacl.


1
2017-07-21 19:04