2012-05-24 18 views
24

Estoy empaquetando y distribuyendo un programa que hice para Windows, Linux y Mac. Planeo poner los archivos y las carpetas en archivos zip.Mantener los permisos de archivos y carpetas dentro de los archivos

Si configuro la carpeta correcta y los permisos de archivo y luego los comprime en zip y los redistribuyo, ¿se mantendrán esos permisos cuando el usuario los extraiga en sistemas Linux o Mac? ¿O tienen que establecer los permisos ellos mismos?

+0

No hay manera de permisos de almacén en archivo ZIP en forma de plataforma cruzada. –

+0

¿Hay algún otro tipo de archivo como tar, rar, etc. que pueda almacenar permisos? – ajaybc

+0

Dado que los permisos no son portátiles, es difícil entender cómo planea establecerlos simplemente desempaquetando el mismo archivo en múltiples plataformas. El instalador (script o aplicación) sería más útil para su objetivo. –

Respuesta

8

zip no almacena los permisos de archivos en el archivo.

tar Los archivos conservarán los permisos de archivos en Linux y OS X. No tengo idea de lo que sucede en Windows. Si puede probar cosas en Windows y funciona, esta es probablemente su mejor opción. Probablemente depende de qué herramienta use la gente para descomprimir los archivos.

Otra opción sería crear un instalador, aunque hay pocas opciones no comerciales para crear instaladores multiplataforma. Wikipedia tiene a list.

+5

No del todo cierto: http://stackoverflow.com/questions/13185364/how-to-assign-execute-permission-to-a-sh-file-in-windows-to-be-executed-in-linu – itsbruce

+2

También https: // stackoverflow.com/questions/434641/how-do-i-set-permissions-attributes-on-a-file-in-a-zip-file-using-pythons-zip/434689 # 434689 – offby1

+11

Zip puede almacenar permisos de archivos Unix mediante el uso de el campo "atributos externos" dentro del encabezado ZIP. Si no está comprimido con la herramienta adecuada en un sistema Unix, los archivos conservarán los permisos. Si está upacked en Windows, los archivos perderán los permisos. Me pregunto cómo esta respuesta podría haber sido seleccionada como la correcta y obtuve más de 10 puntos. –

3

Un instalador es su mejor opción aquí. Permiteme explicar un poco mejor por qué.

Windows tiene estos permisos:

Modify 
Read & Execute 
Read 
Write 

que se asignan a grupos o nombres de usuario,

sistemas basados ​​en Unix tienen:

Read 
Write 
Execute 

que se pueden asignar al propietario, grupo y otros .

Como puede ver, es difícil mapear permisos de un sistema a otro, ya que los sistemas de archivos manejan los permisos de manera diferente.

Sin embargo, algunas utilidades zip como Info-Zip son compatibles con las características del sistema de archivos basado en Unix, como ID de usuario y grupo, permisos de archivos y soporte para enlaces simbólicos. También es compatible con los permisos del sistema de archivos NTFS, y hará un intento de traducir los permisos NTFS a permisos de Unix o viceversa cuando extraiga archivos. Esto puede dar como resultado combinaciones potencialmente involuntarias, p. Archivos .exe creados en volúmenes NTFS con permiso ejecutable denegado. *

Si planea distribuir su programa, un instalador es de hecho la mejor solución.

* De Wikipedia: Zip (file format)

Cuestiones relacionadas