Mais cedo ou mais tarde, quem administra sistemas Linux precisa de transformar uma árvore de diretórios num único ficheiro: para fazer uma cópia de segurança do /etc antes de uma alteração arriscada, para mover uma aplicação entre servidores ou para preservar evidências num incidente. É esse o trabalho do tar — e, quase sempre de mãos dadas com ele, do gzip, que comprime o resultado para uma fração do tamanho original.
Mas o tar tem um lado de que se fala menos: extrair um arquivo de origem desconhecida sem o inspecionar primeiro é uma das formas mais antigas de comprometer uma máquina. Neste artigo da série sobre comandos Linux explicamos as opções essenciais de criação, listagem e extração, o papel do gzip, gunzip e zcat, e as precauções que separam um administrador experiente de uma vítima de tarbomb. No final, pode praticar tudo num simulador interativo.
O que faz o tar
O nome vem de tape archive: o tar nasceu para escrever ficheiros em fita magnética, e é por isso que a opção -f (indicar um ficheiro de destino) é obrigatória em praticamente todos os usos modernos. O comando percorre os caminhos indicados e serializa tudo — conteúdo, permissões, donos, datas e ligações simbólicas — num único ficheiro .tar, sem qualquer compressão. A compressão é um passo separado, delegado no gzip (ou bzip2, xz, zstd), o que explica as extensões duplas como .tar.gz.
tar [OPERAÇÃO] [MODIFICADORES] -f ARQUIVO [CAMINHOS...]
tar -cvf backup-etc.tar etc/ # criar um arquivo a partir de etc/
tar -tvf backup-etc.tar # listar o conteúdo sem extrair
tar -xvf backup-etc.tar # extrair no diretório atual
A operação é sempre uma de três letras centrais: -c cria, -t lista, -x extrai. Tudo o resto são modificadores que afinam o comportamento.
As opções que interessam
Criar arquivos
-c— cria um arquivo novo com os caminhos indicados. Com-v, cada ficheiro adicionado é mostrado no terminal.-z— passa o resultado pelogzipem linha:tar -czf backup.tar.gz etc/cria e comprime num só passo. Para bzip2 e xz existem-je-J; na leitura, o GNU tar moderno deteta a compressão automaticamente.--exclude=PADRÃO— deixa de fora o que corresponder ao padrão. Excluir caches e diretórios temporários pode reduzir um backup de dezenas de megabytes para alguns kilobytes.-pe--numeric-owner— preservam permissões e identificadores numéricos de dono, essenciais quando o arquivo vai ser restaurado noutro sistema ou usado como evidência.
Listar antes de extrair
A opção -t merece uma secção própria porque é a mais importante do ponto de vista de segurança. Ela mostra o conteúdo completo do arquivo — permissões, dono, tamanho, data e caminho de cada entrada — sem escrever um único byte no disco:
$ tar -tvf transfer.tar.gz
-rwxr-xr-x dev/dev 1120 2026-07-24 03:11 instalar.sh
-rw-r--r-- dev/dev 640 2026-07-24 03:11 leia-me.txt
-rw-r--r-- dev/dev 98 2026-07-24 03:14 ../../home/aluno/.ssh/authorized_keys
Este exemplo fictício mostra os dois clássicos: uma entrada com ../ a tentar escapar do diretório de extração e ficheiros soltos sem um diretório de topo comum — a chamada tarbomb, que espalha conteúdo pelo diretório onde for extraída. Ambos se detetam em segundos com -t, e nenhum se deteta depois de extrair.
Extrair com controlo
-x— extrai no diretório atual, sobrepondo ficheiros existentes com o mesmo nome, sem pedir confirmação.-C DIR— muda paraDIRantes de extrair. Combinado com um diretório vazio acabado de criar, é a maneira mais simples de conter qualquer arquivo:mkdir alvo && tar -xf a.tar.gz -C alvo.- Extrair um só ficheiro — basta passar o caminho exato, tal como aparece no
-t:tar -xvf backup.tar etc/ssh/sshd_configrecupera apenas essa entrada. --strip-components=N— remove os primeiros N níveis de diretório dos nomes ao extrair, útil quando o arquivo traz um diretório de topo que não interessa.
gzip, gunzip e zcat a solo
O gzip também vive sozinho, e com um comportamento que surpreende à primeira: comprime um ficheiro de cada vez e substitui o original pela versão .gz (use -k para manter os dois). O gunzip — ou gzip -d — faz o caminho inverso. E o trio zcat, zgrep e zless lê, pesquisa e pagina ficheiros comprimidos sem os descomprimir no disco — indispensável para trabalhar com logs rodados como access.log.1.gz.
gzip -v relatorio.txt # comprime e substitui por relatorio.txt.gz
gunzip relatorio.txt.gz # devolve o original
zcat acessos-2025.log.gz | grep " 401 " | head
tar em cibersegurança
Path traversal em arquivos. Durante anos, versões antigas de ferramentas de extração aceitaram entradas com ../ ou caminhos absolutos, permitindo que um arquivo malicioso escrevesse ficheiros fora do diretório de extração — por exemplo, um authorized_keys no .ssh da vítima. Há CVE históricas exatamente sobre este comportamento, e a mesma classe de falha continua a reaparecer em bibliotecas de extração de várias linguagens. O GNU tar moderno remove os prefixos perigosos (com o aviso Removing leading ../ from member names), mas a lição mantém-se: nunca confiar na ferramenta como única defesa.
Tarbombs e engenharia social. Um arquivo sem diretório de topo despeja dezenas de ficheiros no diretório atual, misturando-os com os existentes — e um instalar.sh executável no meio de um diretório de trabalho é um convite ao erro. Extrair sempre em diretório vazio, e nunca como root, neutraliza o problema.
Preservação de evidências em forense. Em resposta a incidentes, tar -cpf com --numeric-owner preserva permissões, donos e datas dos artefactos recolhidos, o que permite reconstituir o estado do sistema mais tarde sem depender dos utilizadores locais da máquina de análise.
Deteção de exfiltração. Do lado defensivo, a sequência «criar arquivo comprimido de diretórios sensíveis + transferência para fora» é uma assinatura clássica de exfiltração de dados. Monitorizar execuções de tar/gzip sobre diretórios como /etc ou bases de dados, seguidas de ligações de saída, é uma regra de deteção simples e eficaz.
Experimente no simulador interativo
O simulador abaixo mostra, lado a lado, o diretório ~/lab e um terminal que executa cada comando de verdade: crie um backup do etc/ com -cvf, encolha-o com -z e --exclude, liste-o com -tvf, restaure para um diretório limpo com -C — e depois inspecione um transfer.tar.gz de origem desconhecida para ver um path traversal neutralizado e uma tarbomb em ação. Use Demonstrar tudo para a sequência guiada completa, avance com Anterior/Seguinte ou combine livremente as opções e observe a árvore de ficheiros a mudar.
Erros comuns e boas práticas
- Extrair sem listar primeiro.
tar -tvfantes detar -xvfem qualquer arquivo que não criou — sem exceções. - Extrair no diretório errado. O
-xsobrepõe sem perguntar. Um diretório vazio com-Ccusta dois segundos e evita perdas irreversíveis. - Esquecer que o gzip substitui o original.
gzip ficheiroapaga oficheirooriginal; use-kquando precisar de manter ambos. - Tentar
-rnum .tar.gz. Acrescentar ficheiros (-r/-u) só funciona em arquivos não comprimidos; num.tar.gzé preciso descomprimir primeiro. - Extrair como root por comodidade. Com root, uma entrada maliciosa pode escrever onde quiser e repor donos arbitrários. Extraia como utilizador normal sempre que possível.
- Confundir a ordem das opções. O
-ftem de ser seguido imediatamente do nome do arquivo:tar -cvf backup.tar etc/funciona;tar -cfv backup.tar etc/cria um ficheiro chamadov.
Conclusão
O tar e o gzip são o par que resolve backups, migrações e preservação de evidências em qualquer sistema Linux — desde que se respeite a disciplina de inspecionar antes de extrair e de controlar o destino da extração. Dominar -c, -t, -x e meia dúzia de modificadores cobre 95% das situações reais; o resto é hábito de segurança. Se quer levar estas competências mais longe, com formação prática em administração segura de sistemas e resposta a incidentes, conheça o nosso catálogo de serviços de formação e consultoria — e veja também o artigo sobre o useradd, onde a gestão de contas e permissões complementa o que aqui ficou sobre donos e ficheiros.
Este artigo faz parte da série “Comandos Linux, um a um” do blog HJFR — fique atento aos próximos comandos.
