4 votos

¿Cómo almacena MacOS los permisos de los archivos Unix en los archivos ZIP?

Estoy tratando de extraer un archivo ZIP en Java que fue creado en un Mac utilizando la funcionalidad de archivo incorporada en el Finder. Como el archivo ZIP contiene un paquete de aplicaciones, es importante conservar los permisos de archivo de Unix, especialmente la bandera de ejecutable.

Al extraer el archivo ZIP con el Finder, se conservan los permisos. Así que sé que están almacenados en alguna parte.

Ahora mi pregunta es: ¿cómo almacena MacOS los permisos de los archivos Unix en los archivos ZIP? Lamentablemente no he podido encontrar ninguna información al respecto en la red.

4voto

Jose Chavez Puntos 645

Los permisos se almacenan de la misma manera que en otros sistemas Unixoid, como por ejemplo Linux.

Si observa la cabecera del directorio central del archivo zip, tiene para cada archivo almacenado en el archivo zip un campo llamado "atributos externos del archivo". El campo se encuentra en el byte 36 de la cabecera y tiene una longitud de 4 bytes.

Los dos últimos bytes de ese campo contienen los permisos de archivo en MacOS - para ser precisos son los últimos 9 bits (los 9 bits menos significativos). Su significado es el mismo que el de los permisos de archivo tradicionales de Unix.

0 votos

@bmike Con respecto a su edición: No es obligatorio guardar los permisos en los archivos ZIP - Finder no proporciona una interfaz de usuario para esto, pero otras utilidades lo hacen opcional. La codificación de los permisos no está en el estándar original de Zip. También las ACLs no se almacenan en los archivos ZIP (tampoco en Linux), por lo que no son relevantes para los archivos ZIP.

0 votos

Tienes razón, el campo de atributos extendidos contiene los permisos. Gracias por la pista.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X