Я очень мало знаком с RHEL, и был очень удивлен, обнаружив, что unzip -l и unzip -lv не включают в себя права доступа к файлам. Я вижу, что извлечение файлов в конечном итоге восстанавливает разрешения, но мне интересно, есть ли способ проверить разрешения без разархивирования.

Как вы можете видеть из взаимодействия командной строки ниже, ex является исполняемым файлом, а nonex - нет, и unzip восстанавливает разрешения для обоих, но я хочу видеть разрешения без разархивирования

/tmp> ls -lgG *ex
-rwxrwxr-x 1 0 Feb 17 04:26 ex
-rw-rw-r-- 1 0 Feb 17 04:26 nonex
/tmp> zip -qq  perms *ex
/tmp> unzip -l perms.zip
Archive:  perms.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  02-17-2015 04:26   ex
        0  02-17-2015 04:26   nonex
---------                     -------
        0                     2 files
/tmp> unzip -lv perms.zip
Archive:  perms.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 02-17-2015 04:26 00000000  ex
       0  Stored        0   0% 02-17-2015 04:26 00000000  nonex
--------          -------  ---                            -------
       0                0   0%                            2 files
/tmp> unzip -qq -d perms perms.zip
/tmp> ls -lgG perms
total 0
-rwxrwxr-x 1 0 Feb 17 04:26 ex
-rw-rw-r-- 1 0 Feb 17 04:26 nonex

1 ответ1

0

Вы можете использовать zipinfo для отображения разрешений. Имейте в виду, что в зависимости от того, где создается архив, разрешения могут не отражать фактические разрешения исходной системы (это особенно верно, если вы извлекаете архив, созданный в Windows).

Вот фрагмент из документации zipinfo котором подробно описан формат вывода, основанный на знакомом формате листинга ls -l (long). Первое поле детализирует разрешения.

-rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660

Последние три поля - это дата и время изменения файла и его имя. Случай имени файла уважается; таким образом, файлы MS-DOS PKZIP всегда пишутся с большой буквы. Если файл был заархивирован с сохраненным именем каталога, это также отображается как часть имени файла.

Второе и третье поля указывают, что файл был заархивирован под Unix с версией 1.9 zip. Поскольку это происходит из Unix, права доступа к файлам в начале строки печатаются в формате Unix. Несжатый размер файла (2802 в этом примере) является четвертым полем.

Пятое поле состоит из двух символов, каждый из которых может принимать несколько значений. Первый символ может быть либо «t», либо «b», указывая, что zip считает файл текстовым или двоичным, соответственно; но если файл зашифрован, zipinfo отмечает этот факт, используя заглавные буквы («T» или «B»). Второй символ может также принимать четыре значения, в зависимости от того, существует ли расширенный локальный заголовок и / или «дополнительное поле», связанное с файлом (полностью объяснено в APPNOTE.TXT PKWare, но в основном аналогично прагмам в ANSI C - они предоставляют стандартный способ включения нестандартной информации в архив). Если ни один не существует, символ будет дефисом ('-'); если есть расширенный локальный заголовок, но нет дополнительного поля, 'l'; если наоборот, «х»; и если оба существуют, «X». Таким образом, файл в этом примере (вероятно) является текстовым файлом, не зашифрован и не имеет ни дополнительного поля, ни расширенного локального заголовка, связанного с ним.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .