Pular para conteúdo

Capítulo 003 — Comandos Essenciais de Navegação e Leitura de Arquivos

Entender antes de decorar.


Informação Detalhes
Módulo 03 — Linux
Nível Iniciante
Tempo estimado 15 a 20 minutos
Pré-requisito Capítulo 002 — O Terminal e a Hierarquia de Diretórios do Linux

Objetivo deste capítulo

Ao final deste capítulo, você será capaz de:

  • usar pwd, ls e cd para navegar com confiança em qualquer sistema Linux;
  • interpretar a saída detalhada de ls -l, incluindo permissões, proprietário e tamanho;
  • revelar arquivos ocultos (dotfiles) usando a flag correta;
  • inspecionar arquivos com cat, less, head e tail, escolhendo a ferramenta certa para cada situação;
  • usar tail -f para acompanhar um log em tempo real.

Como sempre, vamos começar utilizando nossa imaginação.

Lembra de onde paramos? Você está no servidor comprometido, no prompt:

root@webserver01:/var/www#

Você sabe, pelo capítulo anterior, que /var/log é onde as evidências provavelmente estão. Só falta um detalhe: como sair de onde você está e chegar lá — e, uma vez lá, como abrir um arquivo de log de 2GB sem travar o terminal.

Opção A
"Vou digitar 'cat' no arquivo inteiro e ver o que acontece."

Opção B
"Preciso da ferramenta certa para o tamanho certo de arquivo."

Se você escolheu a opção A, seu terminal está prestes a ser inundado com milhões de linhas de uma vez. Vamos evitar isso.

Navegar em um sistema Linux não é sobre memorizar comandos. É sobre saber qual ferramenta pequena usar para cada situação específica.


pwd — Onde estou?

O comando mais simples de todos: pwd (print working directory) mostra o caminho absoluto do diretório em que você está agora.

$ pwd
/var/www

Parece pouco, mas depois de alguns cd seguidos, é fácil perder a noção de onde você está — pwd sempre te devolve a resposta certa.


ls — O que tem aqui?

ls lista o conteúdo do diretório atual. Sozinho, mostra só os nomes. Combinado com flags, mostra muito mais:

Comando O que faz
ls Lista arquivos e diretórios (visíveis)
ls -l Formato longo: permissões, proprietário, tamanho, data
ls -a Mostra também arquivos ocultos (que começam com .)
ls -la Combina os dois anteriores
ls -lh Formato longo, com tamanhos legíveis (KB, MB, GB)

A saída de ls -l merece atenção especial — vamos revisitar as permissões dessa saída com profundidade no próximo capítulo, mas por agora, reconheça a estrutura:

-rw-r--r-- 1 root root 4096 Set 17 10:32 access.log
-rw-r--r--   → permissões
1            → número de links
root root    → proprietário e grupo
4096         → tamanho em bytes
Set 17 10:32 → data de modificação
access.log   → nome do arquivo

Arquivos ocultos não são arquivos escondidos por mágica

No Linux, qualquer arquivo cujo nome comece com . é tratado como oculto pelo ls padrão — mas continua totalmente acessível, sem qualquer proteção real. Isso é frequentemente explorado por quem quer "esconder" algo de uma inspeção rápida: um arquivo chamado ... ou .cache_tmp pode passar despercebido para quem esquece de usar ls -a.


cd — Movendo-se entre diretórios

cd /var/log     → vai para um caminho absoluto específico
cd ..           → sobe um nível (diretório pai)
cd ~            → vai direto para o diretório home do usuário atual
cd              → sem argumento nenhum, também vai para o home
cd -            → volta para o último diretório em que você estava

Esse último, cd -, é particularmente útil durante uma investigação: permite alternar rapidamente entre dois diretórios (por exemplo, entre onde você está analisando e onde estão os logs) sem precisar digitar o caminho completo de novo.


Lendo arquivos sem abrir um editor

cat — despeja tudo de uma vez

$ cat access.log

Mostra o conteúdo inteiro do arquivo, de uma vez, na tela. Ótimo para arquivos pequenos — péssimo para um log de milhões de linhas, que vai inundar seu terminal instantaneamente.

less — navegação paginada

$ less access.log

Abre o arquivo permitindo navegação para cima e para baixo (setas, PageUp/PageDown), busca por palavras (/termo), sem carregar o arquivo inteiro na memória de uma vez. Para arquivos grandes, é sempre a opção mais segura.

head e tail — só as pontas que interessam

$ head access.log      # primeiras 10 linhas
$ tail access.log      # últimas 10 linhas
$ tail -n 50 access.log  # últimas 50 linhas

E o mais importante para investigação de incidentes em andamento:

$ tail -f access.log

O -f ("follow") mantém o arquivo aberto e exibe novas linhas em tempo real, conforme são escritas — essencial para observar o que está acontecendo em um servidor enquanto o incidente ainda está em curso.


Aplicação em um SOC

Ao explorar um sistema comprometido

  • usar pwd com frequência para nunca perder a noção de onde você está durante uma investigação longa;
  • usar ls -la como hábito, não só ls — arquivos ocultos são justamente onde algumas ameaças tentam se camuflar.

Ao inspecionar logs

  • preferir less a cat sempre que não tiver certeza do tamanho do arquivo;
  • usar tail -f para acompanhar logs durante um incidente ativo, observando novas entradas em tempo real.

Ao documentar uma investigação

  • registrar não só o conteúdo encontrado, mas o comando exato usado para chegar até ele — reprodutibilidade é parte da qualidade de uma investigação.

Cenário prático — Chegando aos logs

Voltando ao servidor comprometido:

root@webserver01:/var/www# cd /var/log
root@webserver01:/var/log# ls -lh

Você identifica um arquivo access.log de 2.3 GB. Em vez de cat (que inundaria o terminal), você abre com:

root@webserver01:/var/log# less access.log

E, para acompanhar novas requisições chegando em tempo real, enquanto o incidente ainda pode estar em andamento:

root@webserver01:/var/log# tail -f access.log

Nenhum desses comandos exigiu decorar nada complexo — só saber qual ferramenta pequena usar para qual problema, exatamente como a filosofia Unix do capítulo 001 prometia.


Perguntas de investigação

1. Qual comando revela arquivos ocultos que ls sozinho não mostra?

ls -a (ou ls -la para combinar com o formato detalhado), exibindo também arquivos cujo nome começa com ponto.

2. Por que usar less em vez de cat para abrir um arquivo de log muito grande?

Porque cat despeja o conteúdo inteiro de uma vez, podendo inundar o terminal e consumir memória com arquivos grandes. less permite navegação paginada sem carregar tudo de uma vez.

3. O que tail -f faz, e por que é útil durante um incidente em andamento?

Mantém o arquivo aberto e exibe novas linhas em tempo real, conforme são escritas — permitindo observar atividade de um sistema enquanto o incidente ainda está ocorrendo.

4. O que as colunas da saída de ls -l representam?

Permissões, número de links, proprietário, grupo, tamanho em bytes, data de modificação e nome do arquivo, nessa ordem.

5. Qual a diferença entre cd .. e cd -?

cd .. sobe um nível para o diretório pai. cd - retorna ao último diretório em que você estava antes do comando cd mais recente, independente de onde ele fica na hierarquia.


O que não fazer

  • não use cat em arquivos cujo tamanho você não conhece — prefira less até confirmar que é pequeno;
  • não confie apenas em ls sem a flag -a ao procurar por algo suspeito;
  • não ignore as colunas de ls -l — proprietário e data de modificação frequentemente contam parte da história;
  • não esqueça de registrar o comando usado, não só o resultado, ao documentar uma investigação.

Erros comuns

"cat é suficiente para qualquer arquivo"

Não.

Para arquivos pequenos, sim. Para logs de produção, que podem ter gigabytes, cat pode travar sua sessão ou dificultar a leitura ao despejar tudo de uma vez.

"Se ls não mostra, o arquivo não existe"

Não.

ls sem -a simplesmente não exibe arquivos ocultos por padrão — eles continuam lá, plenamente acessíveis.

"Não preciso me importar com as permissões mostradas em ls -l"

Não.

Essa coluna revela quem pode ler, escrever ou executar um arquivo — informação central para entender o que um atacante conseguiria (ou não) fazer com ele. Vamos aprofundar isso no próximo capítulo.


Resumo

Neste capítulo, aprendemos que:

  • pwd mostra onde você está; ls mostra o que existe ali; cd move você entre diretórios;
  • ls -la revela arquivos ocultos e detalhes como permissões, proprietário e tamanho;
  • cat é adequado para arquivos pequenos; less é mais seguro para arquivos grandes;
  • head e tail mostram só as pontas de um arquivo; tail -f acompanha novas linhas em tempo real;
  • documentar o comando exato usado é tão importante quanto documentar o que foi encontrado.
Não pergunte apenas:

"Que comando eu preciso usar?"

Pergunte também:

"Esse arquivo é grande o suficiente para eu escolher a ferramenta errada?"
"Eu olhei com -a, ou só confiei no ls padrão?"
"Eu documentei o comando, não só o resultado?"

Um bom investigador Linux não decora comandos. Aprende qual ferramenta pequena resolve qual problema específico.


Checkpoint

Antes de seguir para o próximo capítulo, confirme se você consegue responder:

  • [ ] O que pwd, ls e cd fazem, respectivamente?
  • [ ] Como revelar arquivos ocultos com ls?
  • [ ] O que cada coluna de ls -l representa?
  • [ ] Quando usar cat e quando usar less?
  • [ ] O que tail -f faz, e quando é útil?
  • [ ] Qual a diferença entre cd .. e cd -?

Glossário

Termo Definição
pwd Comando que exibe o caminho absoluto do diretório atual.
ls Comando que lista o conteúdo de um diretório.
cd Comando que muda o diretório atual.
cat Comando que exibe o conteúdo completo de um arquivo de uma vez.
less Comando que exibe o conteúdo de um arquivo com navegação paginada, sem carregá-lo todo na memória.
head / tail Comandos que exibem, respectivamente, as primeiras ou últimas linhas de um arquivo.
Dotfile (arquivo oculto) Arquivo cujo nome começa com ., ocultado por padrão pelo ls comum.

Referências


Próximo capítulo

No próximo capítulo, vamos aprofundar exatamente aquela coluna de permissões que apareceu em ls -l — como o Linux decide quem pode ler, escrever ou executar cada arquivo, e por que isso é central para qualquer investigação.

← Capítulo anterior: O Terminal e a Hierarquia de Diretórios


Entender antes de decorar.