En MacOS . Quiero hacer que cualquier archivo/carpeta nueva que se cree dentro de una carpeta específica tenga los mismos permisos ( no de grupo , eso ya se solucionó) que los del directorio principal.
En Linux , normalmente usaría setfacl
, pero parece que chmod
en MacOS podría hacer lo que estoy buscando. He leído la man
página chmod
pero todavía no puedo entender cómo formatear correctamente el comando para obtener lo que quiero.
Primero, un poco de historia para explicar lo que está pasando: los archivos en OS X pueden tener dos tipos muy diferentes de configuración de permisos aplicados a ellos: POSIX y ACL.
Los archivos siempre (bueno, casi siempre) tienen permisos POSIX aplicados, que consisten en un propietario, un 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 del usuario que los creó, la asignación de grupo se hereda de la carpeta en la que se encuentran y el acceso está determinado por el umask (que casi siempre es: el propietario obtiene acceso completo, grupo y otros solo lectura + ejecución para carpetas). Entonces, los permisos POSIX no funcionarán para lo que está tratando de 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 tipos de acceso (con gran detalle), si se permiten o deniegan, y si el ACE también se debe copiar a elementos creados dentro de la carpeta. Esa última parte es la parte que hace que esto sea útil para ti; debe crear un ACE en la carpeta que especifique el grupo que desea, los tipos de acceso que desea y la herencia completa.
chmod
en OS X puede manipular 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
Nota : la herencia no es "en vivo", es decir:
Puede aplicarlo a contenidos existentes utilizando -R
(es decir: chmod -R +a ...
). No conozco una forma (excepto las herramientas de administración del servidor de Apple) para forzar la herencia de los elementos que se mueven a la carpeta.
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 -R
opción será (como se indica aquí ):
Recurse: cambie el modo de las jerarquías de archivos enraizados en los archivos en lugar de solo los archivos en sí.
Cambiar las jerarquías de archivos parece ser lo que está buscando (para nuevos archivos, directorios, etc.).
También puede consultar esta publicación de Apple.SE , que cubre una situación algo similar a la suya (excepto en relación con un directorio compartido), que requirió una sudo
tachuela en el frente.
Esto (-R) no es lo que la mayoría de la gente busca 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 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.
En una Mac, intente usar PathFinder , facilita la configuración de ACL y POSIX. Si está alojando WordPress en un servidor Mac, también deberá configurar define('FS_METHOD', 'direct');
wp-config.php para que la instalación de complementos y la actualización no le soliciten detalles de FTP.
Básicamente, mantiene los permisos POSIX predeterminados y agrega el usuario _www (no el grupo) a ACL, luego hace clic en Propagar permiso en la ventana de ACL.
chmod +ai, i = heredar reglas ACL
Jeremy Hicks
gordon davisson
ls -l
solo muestra permisos POSIX (aunque el "+" después de los permisos indica que hay una ACL presente). Úselols -le
para mostrar también las ACL.doug richardson
Oh ho
chmod +a ...
comando, luego creé un abc.txt en la carpeta. Cambiado a otro usuario y editado con TextEdit, el archivo se indica como Bloqueado y no es editable.Robin