Gibt es eine Möglichkeit, den Pfaddurchquerungsschutz beim Entpacken zu überschreiben?

Gibt es eine Möglichkeit, den Pfaddurchquerungsschutz beim Entpacken zu überschreiben?

Beim Versuch, eine Datei mit relativen Pfaden oberhalb des Arbeitsverzeichnisses (z. B. ../../foo) zu entpacken, erhalten Sie diese Meldung:

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

inflating: foo

Das Problem ist, dass unsere Software diese Zip-Dateien während einer Installation mit relativen Pfaden erstellt. Wenn die Installation schiefgeht, entpacken wir sie, um alles wieder so zu machen, wie es war. Wenn der Benutzer sich dafür entschieden hat, einige Datendateien „über“ dem normalen Installationsverzeichnis zu speichern, landen wir damit ../datafileim Backup. Das sollte vollkommen in Ordnung sein, und wir möchten, dass Unzip dem Archiv vertraut und die Dateien wiederherstellt, wenn wir darum bitten. Leider kann ich keine Option finden, die angibt, sich unzipnicht um die ../Pfadkomponenten zu kümmern und das Archiv genau so zu entpacken, wie es erstellt wurde. Gibt es eine Option zum Entpacken, um dies zu tun?

Beachten Sie, dass es derzeit nicht möglich ist, die Art und Weise zu ändern, wie die Zip-Dateien erstellt werden. „Machen Sie es nicht so“ ist also keine akzeptable Antwort. Wir müssen mit den Karten spielen, die uns gegeben wurden. Die Zielplattform ist RHEL 5.

Antwort1

Dies sollte tun, was Sie verlangen

unzip -: foo.zip

Aus der Manpage

-: [alle außer Acorn, VM/CMS, MVS, Tandem] ermöglicht das Extrahieren von Archivelementen an Speicherorte außerhalb des aktuellen ''Extraktionsstammordners''. Aus Sicherheitsgründen entfernt unzip normalerweise Pfadkomponenten des ''übergeordneten Verzeichnisses'' (''../'') aus den Namen der extrahierten Datei. Diese Sicherheitsfunktion (neu in Version 5.50) verhindert, dass unzip versehentlich Dateien in ''sensible'' Bereiche außerhalb des aktiven Extraktionsordner-Baumkopfs schreibt. Mit der Option -: kann unzip zu seinem vorherigen, liberaleren Verhalten zurückkehren, um eine exakte Extraktion (älterer) Archive zu ermöglichen, die ''../''-Komponenten verwendet haben, um mehrere Verzeichnisbäume auf der Ebene des aktuellen Extraktionsordners zu erstellen. Diese Option ermöglicht kein explizites Schreiben in das Stammverzeichnis (''/''). Um dies zu erreichen, ist es notwendig, den Extraktionszielordner auf root festzulegen (z. B. -d / ). Wenn die Option -: angegeben ist, ist es jedoch immer noch möglich, implizit in das Stammverzeichnis zu schreiben, indem genügend ''../''-Pfadkomponenten innerhalb des Zip-Archivs angegeben werden. Verwenden Sie diese Option mit äußerster Vorsicht.

verwandte Informationen