2016-11-22 2 views
0

В поисках практических причин команда tar -c /filea > /fileb дает следующий результат: tar:Removing_leading / от имени участника.Почему команда tar -c удаляет ведущие `/ 'из имен участников

Я изучил его совсем немного, но натолкнулся на такие неопределенные причины, как защита от какой-либо атаки и т. Д. Большинство просто объяснят обходное решение, если вы этого хотите.

Я не хочу обходного пути. Мне просто интересно, какие практические причины для этого происходят. Любая помощь будет оценена по достоинству.

+2

Это так, что вы не произвольно не перезаписываете файлы в системных каталогах. – Barmar

+0

SO - это вопросы программирования. Вопросы, касающиеся дизайна утилит Unix, более подходят для unix.SE. – Barmar

+2

Представьте, что кто-то отправил вам tar-файл, содержащий '/ etc/passwd'. Если вы извлекаете его как root, а 'tar' не удаляет ведущий'/', он перезапишет этот файл. – Barmar

ответ

1

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

Просто Пример:

Если вы архив/и т.д./HTTPD этот каталог он удаляет ведущий /. Потому как. Если он существует после того, как текущий поток/etc/httpd перезапишет архив/etc/httpd.

После удаления ведущего «/» вырезания в вашем рабочем каталоге. Если вы извлекаете каталог/var/tmp, он будет храниться как/var/tmp/etc/httpd

Смежные вопросы