Estoy en Mac Quiero hacerlo para que cualquier archivo / carpeta nuevo que se cree dentro de una carpeta específica tenga los mismos permisos (no grupales, que ya se han solucionado) 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 de manual de chmod, pero todavía no puedo entender cómo formatear correctamente el comando para obtener lo que quiero.
23
Respuestas:
Primero, un poco de antecedentes para explicar lo que está sucediendo: los archivos en OS X pueden tener dos tipos diferentes de configuraciones de permisos aplicados: 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 de cualquier usuario que los haya creado, la asignación de grupo se hereda de la carpeta en la que se encuentran y el acceso está determinado por la 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 (en gran detalle), si están permitidos o denegados, y si el ACE también debe copiarse en elementos creados dentro de la carpeta. Esa última parte es la parte que lo hace útil para usted; 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 quieres, usarías esto (con el nombre del grupo y la ruta de la carpeta sustituidos) para crear el ACE:
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 contenidos existentes utilizando -R (
chmod -R +a ...
). No conozco una forma (excepto las herramientas de administración del servidor de Apple) para forzar la herencia a los elementos movidos a la carpeta.fuente
ls -l
solo muestra los permisos POSIX (aunque el "+" después de los permisos indica que hay una ACL presente). Usels -le
para mostrar ACL también.chmod +a ...
comando, luego creé un abc.txt en la carpeta. Cambió a otro usuario y editó con TextEdit, el archivo se indica como Bloqueado y no es editable.Intente agregar
-R
al comando @ gordon, así:La
-R
opción (como se indica aquí ):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 requería una
sudo
tachuela en el frente.fuente
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 de Python para hacer esto, tampoco encontré nada apropiado.
fuente
chmod + ai, i = heredar reglas acl
fuente
En una Mac intente usar PathFinder , facilita la configuración de ACL y POSIX. Si aloja WordPress en un servidor Mac, también deberá configurarlo
define('FS_METHOD', 'direct');
en 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 grupo) a ACL, luego haga clic en Propagar permiso en la ventana de ACL.
fuente