¿Alguna forma de anular la protección de recorrido de ruta al descomprimir?

¿Alguna forma de anular la protección de recorrido de ruta al descomprimir?

Cuando intenta descomprimir un archivo con rutas relativas encima del directorio de trabajo (por ejemplo ../../foo), recibe este mensaje:

warning: skipped "../" path component(s) in ../../foo

inflating: foo

El problema es que nuestro software crea estos archivos zip con rutas relativas durante una instalación y, si la instalación sale mal, los descomprimimos para que todo vuelva a estar como estaba. Si el usuario ha elegido almacenar algunos archivos de datos "encima" del directorio de instalación normal, terminamos ../datafileen la copia de seguridad. Esto debería estar perfectamente bien y queremos que descomprimamos para confiar en el archivo y volver a colocar los archivos si lo solicitamos. Desafortunadamente, no puedo encontrar una opción para indicarme unzipque no me preocupe por los ../componentes de la ruta y que descomprima el archivo exactamente como se creó. ¿Existe alguna opción para descomprimirlo para hacer esto?

Tenga en cuenta que no es posible cambiar la forma en que se crean los zips en este momento, por lo que "No lo hagas de esa manera" no es una respuesta aceptable. Tenemos que jugar la mano que nos han dado. La plataforma de destino es RHEL 5.

Respuesta1

Esto debería hacer lo que estás pidiendo.

unzip -: foo.zip

Desde la página de manual

-: [todos excepto Acorn, VM/CMS, MVS, Tandem] permite extraer miembros del archivo en ubicaciones fuera de la ''carpeta raíz de extracción'' actual. Por razones de seguridad, descomprimir normalmente elimina los componentes de ruta del ''directorio principal'' (''../'') de los nombres del archivo extraído. Esta característica de seguridad (nueva para la versión 5.50) evita que al descomprimir se escriban archivos accidentalmente en áreas "sensibles" fuera del encabezado del árbol de carpetas de extracción activa. La opción -: permite descomprimir volver a su comportamiento anterior, más liberal, para permitir la extracción exacta de archivos (más antiguos) que usaban componentes ''../'' para crear múltiples árboles de directorios en el nivel de la carpeta de extracción actual. Esta opción no permite escribir explícitamente en el directorio raíz (''/''). Para lograr esto, es necesario configurar la carpeta de destino de la extracción como raíz (por ejemplo, -d /). Sin embargo, cuando se especifica la opción -:, todavía es posible escribir implícitamente en el directorio raíz especificando suficientes componentes de ruta ''../'' dentro del archivo zip. Usa esta opción con extrema precaución.

información relacionada