¿Cómo uso chmod en una Mac para hacer que los archivos nuevos hereden los permisos del directorio principal?

21

Estoy en Mac. Quiero hacerlo para que cualquier nuevo archivo / carpeta que se cree dentro de una carpeta específica tenga los mismos permisos (no de grupo, eso ya se ha hecho cargo) que los del directorio principal. En Linux, normalmente usaría setfacl, pero parece que chmod en Mac podría hacer lo que estoy buscando. He leído la página del manual de chmod, pero todavía no puedo averiguar cómo formatear correctamente el comando para obtener lo que quiero.

    
pregunta Jeremy Hicks 16.11.2011 - 15:39

5 respuestas

31

Primero, un poco de fondo para explicar lo que está sucediendo: los archivos en OS X pueden tener aplicados dos tipos de configuraciones de permisos muy diferentes: POSIX y ACL.

Los archivos siempre (bueno, casi siempre) tienen permisos POSIX aplicados, que consisten en un propietario, grupo y otros (con alguna combinación de lectura, escritura y ejecución para cada uno de ellos). No hay forma de controlar la herencia de los permisos POSIX: los elementos nuevos siempre son propiedad de cualquier usuario que los haya creado, la asignación de grupo se hereda de la carpeta en la que están y el acceso está determinado por umask (que es casi siempre: el propietario obtiene acceso completo, grupo y otros solo lectura + ejecución para carpetas). Por lo tanto, los permisos POSIX no funcionarán para lo que intentas hacer.

Los archivos también pueden tener una lista de control de acceso (ACL) aplicada. Esta es una lista de entradas de control de acceso (ACE), cada una de las cuales se aplica a un usuario o grupo, especifica los tipos de acceso (con gran detalle), si se permiten o deniegan, y si el ACE también debe copiarse a Elementos creados dentro de la carpeta. Ese último bit es la parte que lo hace útil para ti; debe crear una ACE en la carpeta que especifica el grupo que desea, los tipos de acceso que desea y la herencia completa.

chmod en OS X puede manipular las ACE con las opciones de permisos + a, -a, etc. Si entiendo lo que quiere, usaría esto (con el nombre de su grupo y la ruta de la carpeta sustituida) para crear el ACE:

chmod +a "group:examplegroup allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /path/to/folder

Tenga en cuenta que la herencia no es "en vivo", es decir, no se aplica a los elementos creados antes de asignar el ACE, y no se aplica a los elementos creados en otro lugar y luego se trasladó a la carpeta. Puede aplicarlo a los contenidos existentes usando -R ( chmod -R +a ... ). No conozco una forma (excepto las herramientas de administración del servidor de Apple) para forzar la herencia de los elementos movidos a la carpeta.

    
respondido por el Gordon Davisson 16.11.2011 - 17:32
4

Intente agregar -R al comando de @gordon, así:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" outdoors

La opción -R aparecerá (como se señala aquí ):

  

Recurse: cambia el modo de las jerarquías de archivos enraizadas en los archivos   en lugar de solo los propios archivos.

El cambio de jerarquías de archivos parece ser lo que estás buscando (para nuevos archivos, directorios, etc.).

También puede consultar esta publicación de Apple.SE , que cubre una situación similar a la suya (excepto en relación con un directorio compartido), que requería un sudo pegado en la parte frontal.

    
respondido por el JW8 16.11.2011 - 18:22
4

Esto (-R) no es lo que la mayoría de las personas buscan hacer; la mayoría de las veces preferirían cambiar la ACL en el directorio superior y hacer algo mágico para obligar a todos los objetos contenidos a heredar las banderas de acuerdo con la ACL que especificaron en la raíz de ese subárbol. Esto es mucho más elegante, ya que las ACL en los objetos ordenarán estas ACE heredadas de acuerdo con la política.

Y sí, tuve que escribir un script en Python para hacer esto, tampoco encontré nada apropiado.

    
respondido por el noses 17.10.2012 - 17:51
1

chmod + ai, i = heredar reglas de acl

    
respondido por el zaonline 14.07.2017 - 13:24
0

En una Mac, intente utilizar PathFinder , facilita la configuración de ACL y POSIX. Si está alojando WordPress en un servidor Mac, también deberá establecer define('FS_METHOD', 'direct'); en wp-config.php para que la instalación de complementos y la actualización no le pidan detalles de FTP.

Básicamente, mantiene los permisos POSIX predeterminados y agrega el usuario _www (no grupo) a ACL, luego hace clic en Propagar permiso en la ventana de ACL.

    
respondido por el Max 04.10.2016 - 18:08

Lea otras preguntas en las etiquetas