¿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. zip
los almacena de forma predeterminada pero debes usarlos unzip
de una manera especial para restaurarlos:
unzip
debe usarse con la-X
bandera.unzip
debe ejecutarse pararoot
configurar 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 unzip
la -K
bandera para restaurar SUID/SGID/Sticky bits.