Qualquer maneira de substituir a proteção de passagem de caminho em descompactar?

4

Ao tentar descompactar um arquivo com caminhos relativos acima do diretório de trabalho (por exemplo, ../../foo ), você recebe esta mensagem:

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

inflating: foo

O problema é que nosso software está criando esses zips com caminhos relativos durante uma instalação, e se a instalação der errado, nós os descompactamos para colocar tudo de volta como estava. Se o usuário tiver escolhido armazenar alguns arquivos de dados "acima" do diretório de instalação normal, acabaremos com ../datafile no backup. Isto deve estar perfeitamente bem, e nós queremos descompactar para confiar no arquivo e colocar os arquivos de volta se pedirmos. Infelizmente, não consigo encontrar uma opção para informar unzip para não se preocupar com os componentes do ../ caminho e descompactar o arquivo exatamente como ele foi criado. Existe uma opção para descompactar para fazer isso?

Observe que mudar a maneira como os zips são criados não é possível no momento, portanto, "Não faça assim" não é uma resposta aceitável. Temos que jogar a mão que nos foi dada. A plataforma de destino é o RHEL 5.

    
por Haydentech 28.10.2016 / 22:18

1 resposta

3

Isso deve fazer o que você está pedindo

unzip -: foo.zip

Da página do manual

-: [all but Acorn, VM/CMS, MVS, Tandem] allows to extract archive members into locations outside of the current '' extraction root folder''. For security reasons, unzip normally removes ''parent dir'' path components (''../'') from the names of extracted file. This safety feature (new for version 5.50) prevents unzip from accidentally writing files to ''sensitive'' areas outside the active extraction folder tree head. The -: option lets unzip switch back to its previous, more liberal behaviour, to allow exact extraction of (older) archives that used ''../'' components to create multiple directory trees at the level of the current extraction folder. This option does not enable writing explicitly to the root directory (''/''). To achieve this, it is necessary to set the extraction target folder to root (e.g. -d / ). However, when the -: option is specified, it is still possible to implicitly write to the root directory by specifiying enough ''../'' path components within the zip archive. Use this option with extreme caution.

    
por 28.10.2016 / 22:28

Tags