Preservar permisos al comprimir

Preservar permisos al comprimir

¿Cómo puedo conservar los permisos mientras comprimo una carpeta usando zip?

Sé cómo conservar los enlaces simbólicos. --symlinks¿Existe una opción similar para los permisos?

Respuesta1

info-zip (el programa que probablemente estés usando) puede guardar/restaurar permisos paraUnix-Sistemas similares.

Se menciona pordirectoriosen elpagina del manual:

Las fechas, horas y permisos de los directorios almacenados no se restauran excepto en Unix. (En Windows NT y posteriores, las marcas de tiempo ahora se restauran).

Los permisos de archivos para lectura/escritura/ejecución se guardan/restauran. Pero una comprobación rápida muestra (zip 3.0) que los permisos setuid/setgid no se conservan.

La característica no es opcional; zip/unzip simplemente hacen esto cuando puedan.

En otros sistemas, la capacidad de guardar/restaurar permisos es menos completa. Por ejemplo, en Windows el archivo ZIP utiliza la configuración de permisos del%temp%carpeta.

Otras lecturas:

Respuesta2

Info-Zip 3.0 SOPORTA la preservación de archivos/directorios, permisos UNIX y datos de propiedad UID/GID. ziplos almacena de forma predeterminada pero debes usarlos unzipde una manera especial para restaurarlos:

  • unzipdebe usarse con la -Xbandera.
  • unzipdebe ejecutarse para rootconfigurar los archivos/directorios UID/GID. Si lo ejecuta como un usuario normal, el UID será siempre el del usuario actual y el GID se restaurará SÓLO SI el usuario actual pertenece a ese grupo.

Ejemplo:

# zip -v | head -2 | tail -1
This is Zip 3.0 (July 5th 2008), by Info-ZIP.

# unzip -v | head -1
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

# touch file1
# mkdir dir1
# chmod 000 file1
# chown 1111 dir1
# ls -ld file1 dir1
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root  0 mar 28 20:12 file1

# zip files.zip file1 dir1
  adding: file1 (stored 0%)
  adding: dir1/ (stored 0%)

# unzip -X files.zip -d extracted
Archive:  files.zip
 extracting: extracted/file1         
   creating: extracted/dir1/

# ls -l extracted
total 0
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root  0 mar 28 20:12 file1

Nota: también puede usar unzipla -Kbandera para restaurar SUID/SGID/Sticky bits.

Respuesta3

Respuesta corta: ¡no puedes! zipno conserva los permisos de archivos.

Leer más sobre estoaquíyaquí.

Si necesita conservar los permisos, considere usarlos tarcon el --preserve-permissionsinterruptor.

información relacionada