Информация -Zip 3.0 ПОДДЕРЖИВАЕТ сохранение разрешений UNIX для файлов/каталогов и данных о владении UID/GID. zip
хранит его по умолчанию, но вам нужно использовать unzip
особым образом, чтобы восстановить их:
unzip
должен использоваться с флагом -X
. unzip
должен работать как root
, чтобы установить UID/GID файлов/директорий. Если вы запустите его как обычный пользователь, тогда UID всегда будет одним из текущего пользователя, а GID будет восстановлен, ТОЛЬКО ЕСЛИ текущий пользователь принадлежит к этой группе. Пример:
# 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
Примечание :вы также можете использовать unzip
с флагом -K
для восстановления битов SUID/SGID/Sticky.
Вы можете переопределить его для чего угодно, используя options
в качестве тега, который может быть больше, чем просто теги, добавленные _arguments
.
zstyle ':completion:*:options:descriptions' format '%Boverriden option%b'