Как обойти tar: удаление `/' в именах элементов

Это довольно широкий диапазон операционных систем, поэтому я предлагаю установить сценарии «инициализации» для каждой ОС, которые вызывают сценарий «фазы 2», который вы поддерживаете. Этот сценарий "этапа 2" проверяет наличие сценария обновления -для сообщения -; если он существует, то он запускает его, а затем удаляет. Ваш сценарий «обновление фазы 1» установит этот сценарий обновления сообщения --после его завершения и перед перезагрузкой.

-1
09.10.2019, 22:52
3 ответа

В GNU tar, если вы хотите сохранить косую черту перед именами файлов, вам нужна опция:

   -P, --absolute-names
          Don't strip leading slashes from file names when creating archives.

Итак, tar zcvf ABCD.tar.gz -P -T Files.txt.

Косые черты, вероятно, будут удалены при распаковке архива, если, конечно, вы не используете там -P.

Если, с другой стороны, вы хотите удалить косые черты, но без жалоб на tar, вам нужно сделать что-то вроде sed s,^/,, files.txt | tar czf foo.tar.gz -C / -T -.

5
28.01.2020, 05:06

Это особенность!

Если префикс косой черты /был включен в архив при сжатии и извлечении, это означает, что злоумышленнику достаточно будет убедить вас извлечь файл, чтобы перезаписать конфиденциальный файл (, например/etc/shadow).

На самом деле это не сообщение об ошибке, а скорее информация.

Если вы действительно хотите подавить его, измените каталог на родительский каталог и используйте относительные имена:

cd /
tar -zcvf path/to/files

Вместо

tar -zcvf /path/to/files

В вашем случае, я предполагаю, что имена файлов в -T Files.txtявляются абсолютными.

8
28.01.2020, 05:06

Другой возможный ответ: вы действительно хотите, чтобы пути к архиву были безопасными для извлечения, и вы хотите удалить начальную косую черту из списка имеющихся у вас файлов.

В этом случае в tarнет опции, но вы можете сгенерироватьtar-совместимые файлы с помощью pax.

pax -s '#^/##' -wz < Files.txt > ABCD.tar.gz

-s '#^/##'применяет шаблон замены к именам файлов по мере их записи в архив. Этот лишает ведущего /.

3
28.01.2020, 05:06

Теги

Похожие вопросы