É verdade que um tarball pode mudar para onde os arquivos são extraídos, independentemente dos comandos usados para extraí-lo?

27

Eu tenho um colega de trabalho que diz que você precisa ter cuidado ao extrair os tarballs porque eles podem fazer alterações que você não conhece. Eu sempre achei que um tarball era apenas uma hierarquia de arquivos compactados, então se você extraí-lo para / tmp / example / ele não pode possivelmente inserir um arquivo em / etc / ou qualquer coisa assim.

    
por Adam R. Grey 30.08.2018 / 15:19

2 respostas

40

Diferentes utilitários de tar se comportam de maneira diferente nesse sentido, por isso é bom ter cuidado. Para um arquivo tar que você não criou, sempre liste o índice antes de extraí-lo.

Solaris tar :

The named files are extracted from the tarfile and written to the directory specified in the tarfile, relative to the current directory. Use the relative path names of files and directories to be extracted.

Absolute path names contained in the tar archive are unpacked using the absolute path names, that is, the leading forward slash (/) is not stripped off.

No caso de um arquivo tar com nomes de caminhos completos (absolutos), como:

/tmp/real-file
/etc/sneaky-file-here

... se você extrair esse arquivo, você acabará com os dois arquivos.

URL do GNU :

By default, GNU tar drops a leading / on input or output, and complains about file names containing a .. component. There is an option that turns off this behavior:

--absolute-names

-P

Do not strip leading slashes from file names, and permit file names containing a .. file name component.

... se você extrair um arquivo tar com caminho completo usando o tar do GNU sem usando a opção -P , ele informará:

tar: Removing leading / from member names

e irá extrair o arquivo em subdiretórios do seu diretório atual.

AIX tar :

não diz nada sobre isso, e se comporta como o Solaris tar - ele irá criar e extrair arquivos tar com nomes completos / absolutos.

tar HP-UX : (melhor referência online bem-vinda)

WARNINGS

There is no way to restore an absolute path name to a relative position.

tar do OpenBSD :

-P

Do not strip leading slashes (/) from pathnames. The default is to strip leading slashes.

Existem -P opções implementadas para tar no macOS, FreeBSD e NetBSD, com a mesma semântica, com a adição de tar em FreeBSD e o macOS "recusarão-se a extrair entradas de arquivo cujos nomes de caminho contenham .. ou          cujo diretório de destino seria alterado por um link simbólico "sem -P .

estrela de schilytools :

-/

Don't strip leading slashes from file names when extracting an archive. Tar archives containing absolute pathnames are usually a bad idea. With other tar implementations, they may possibly never be extracted without clobbering existing files. Star for that reason, by default strips leading slashes from filenames when in extract mode.

    
por 30.08.2018 / 15:43
9

Uma das coisas hilárias que acontecem com bombas de alcatrão é que elas alteram as permissões do diretório atual para o incluído no tarball.

Por exemplo, se um tarball incluir o '.' diretório, e você descompactá-lo em / tmp como root, ele irá destruir o seu sistema, tornando o / tmp unwritable por qualquer pessoa, mas root.

    
por 30.08.2018 / 20:31

Tags