Сохранение разрешений при архивировании

Сохранение разрешений при архивировании

Как сохранить разрешения при сжатии папки с помощью 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.

решение3

Короткий ответ: нельзя! zipне сохраняет права доступа к файлам.

Подробнее об этом читайте здесьздесьиздесь.

Если вам необходимо сохранить разрешения, рассмотрите возможность использования tarпереключателя --preserve-permissions.

Связанный контент