Navegando pelo Sistema de Arquivos com Confiança
Artigo 2 — Navegando pelo Sistema de Arquivos com Confiança
Módulo 1 · Fundamentos do Terminal e Linux Prof. Ricardo Matos — Dominando DevOps & Cloud em 1 Ano
A Árvore que Sustenta Tudo
No artigo anterior foram apresentados os primeiros movimentos no terminal. Agora é preciso entender o terreno onde esses movimentos acontecem.
O Linux organiza todos os arquivos em uma única árvore de diretórios que começa em / — chamado de diretório raiz. Não existe C:\ ou D:\ como no Windows. Tudo — arquivos do sistema, configurações, dispositivos de hardware, discos externos — está dentro dessa árvore.
Compreender essa estrutura é essencial. Ao configurar um servidor, depurar um container ou escrever um script de automação, será necessário saber exatamente onde estão os arquivos que importam.
O Mapa do Sistema
ls /
bin boot dev etc home lib media mnt opt proc root run srv sys tmp usr var
Cada diretório tem uma função específica. Os mais relevantes para o trabalho em DevOps:
/etc — Configurações do sistema
É onde vivem os arquivos de configuração de praticamente todo serviço do Linux. Nginx, SSH, DNS, usuários — tudo passa pelo /etc.
cat /etc/hostname # Nome da máquina
cat /etc/hosts # Mapeamento local de nomes para IPs
cat /etc/os-release # Informações sobre a distribuição Linux
/var — Dados variáveis
Logs, filas, bancos de dados locais — arquivos que crescem com o tempo. Quando um sistema apresenta comportamento inesperado, /var/log é um dos primeiros lugares a se investigar.
ls /var/log
/home — Diretórios dos usuários
Cada usuário tem seu espaço em /home/nome-do-usuario. É onde ficam arquivos pessoais, configurações de shell e chaves SSH.
/tmp — Arquivos temporários
O sistema limpa este diretório automaticamente em reinicializações. Útil para arquivos de trabalho que não precisam persistir.
/usr — Programas e bibliotecas
A maioria dos programas instalados fica em /usr/bin. Bibliotecas em /usr/lib.
/proc e /sys — O sistema em tempo real
Não são diretórios reais no disco — são interfaces para o kernel. Informações do sistema podem ser lidas como se fossem arquivos comuns:
cat /proc/cpuinfo # Informações sobre o processador
cat /proc/meminfo # Uso de memória
Caminhos Absolutos e Relativos
Todo arquivo no Linux possui um caminho absoluto — que começa em / e descreve a localização completa:
/home/usuario/devops-curso/modulo01/anotacoes.txt
E um caminho relativo — que parte do diretório atual:
# Estando em /home/usuario
cd devops-curso/modulo01
cat anotacoes.txt
Atalhos essenciais:
. # O diretório atual
.. # O diretório pai
~ # O home do usuário
- # O diretório anterior
Buscando Arquivos
Quando não se sabe onde um arquivo está, usa-se find:
# Por nome
find / -name "nginx.conf" 2>/dev/null
# Por extensão dentro de um diretório
find /etc -name "*.conf"
# Modificados nas últimas 24 horas
find /var/log -mtime -1
O 2>/dev/null descarta mensagens de erro de permissão que poluiriam a saída.
Para buscas mais rápidas por nome:
locate nginx.conf
# Atualizar o índice antes, se necessário
sudo updatedb
Entendendo o sudo
O sudo — superuser do — executa um comando com privilégios de administrador.
sudo ls /root
O diretório /root é o home do superusuário e não é acessível por usuários comuns. Com sudo, elevam-se privilégios apenas para aquele comando específico.
Executar tudo como root o tempo todo é uma prática perigosa. O princípio do mínimo privilégio — elevar apenas o necessário, apenas quando necessário — reaparecerá quando forem abordados IAM na AWS e RBAC no Kubernetes.
Inspecionando Arquivos sem Abrir um Editor
head /var/log/syslog # Primeiras 10 linhas
tail /var/log/syslog # Últimas 10 linhas
tail -f /var/log/syslog # Acompanha em tempo real
wc -l /var/log/syslog # Conta linhas
grep "error" /var/log/syslog # Filtra por palavra
grep -i "error" /var/log/syslog # Sem diferenciar maiúsculas
O tail -f é um dos comandos mais usados em produção. Quando algo está errado em um servidor, abre-se o log com tail -f e observa-se o que acontece em tempo real.
Um Exercício Completo
# Cria estrutura de um projeto fictício
mkdir -p ~/devops-curso/modulo01/exercicios
cd ~/devops-curso/modulo01/exercicios
# Confirma onde está
pwd
# Cria logs fictícios
echo "INFO: sistema iniciado" > app.log
echo "ERROR: falha na conexão com o banco" >> app.log
echo "INFO: tentativa de reconexão" >> app.log
echo "INFO: conexão restabelecida" >> app.log
# Filtra apenas erros
grep "ERROR" app.log
# Conta linhas
wc -l app.log
# Verifica metadados do arquivo
ls -la app.log
Saída esperada do grep:
ERROR: falha na conexão com o banco
Saída do wc -l:
4 app.log
É exatamente assim que se investiga um problema em um servidor real — sem interface gráfica, sem mouse, apenas comandos e lógica.
O Que Vem a Seguir
No próximo artigo será abordado um tema que confunde muita gente e causa problemas sérios quando ignorado: permissões de arquivos e usuários no Linux. Será explicado o que significa aquele rwxr-xr-x que aparece no ls -la e como controlar quem pode fazer o quê no sistema.
Referências para Aprofundamento
Documentação e leitura
- Filesystem Hierarchy Standard (FHS) — A especificação oficial que define o que cada diretório do Linux deve conter.
- The Linux Command Line — Capítulos 3 e 4 — Cobre navegação e exploração do sistema de arquivos com profundidade.
- An Introduction to Linux I/O Redirection — DigitalOcean — Explica redirecionamento, pipes e o papel do
/dev/null.
Prática
- Over The Wire: Bandit — níveis 0 a 5 — Os primeiros níveis trabalham exatamente navegação e leitura de arquivos.
- TryHackMe — Linux Fundamentals — Ambiente interativo no navegador. Não requer configuração local.
Referência rápida
- The Linux Documentation Project — Diagramas e explicações concisas sobre a hierarquia de diretórios. Útil como segunda tela enquanto se pratica.
Artigo 2 de 52 · Módulo 1 — Fundamentos do Terminal e Linux Prof. Ricardo Matos · Série Dominando DevOps & Cloud em 1 Ano