Как сохранить разрешения при сжатии папки с помощью zip
?
Я знаю, как сохранить символические ссылки, используя, --symlinks
есть ли аналогичная опция для разрешений?
решение1
info-zip (программа, которую вы, вероятно, используете) может сохранять/восстанавливать разрешения дляUnix-подобные системы.
Упоминается длякаталогивстраница руководства:
Даты, время и разрешения сохраненных каталогов не восстанавливаются, за исключением Unix. (В Windows NT и последующих версиях теперь восстанавливаются временные метки.)
Файловые разрешения на чтение/запись/выполнение сохраняются/восстанавливаются. Но быстрая проверка показывает (zip 3.0), что разрешения setuid/setgid не сохраняются.
Эта функция не является опциональной; zip/unzip просто делает это, когда это возможно.
В других системах возможность сохранения/восстановления разрешений менее полная. Например, в Windows ZIP-файл использует настройки разрешений из%temp%
папка.
Дальнейшее чтение:
решение2
Info-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.