⬅ Voltar ao Dashboard Módulo 1 — Fundamentos Linux

🗂️ Arquitetura e FHS

Aula 1.2 — O mapa do Linux: entenda a hierarquia de diretórios e o que cada pasta significa

📋 O que é o FHS?

O FHS — Filesystem Hierarchy Standard (Padrão de Hierarquia do Sistema de Arquivos) é a especificação que define onde cada tipo de arquivo deve estar localizado no Linux. Todas as distribuições seguem esse padrão, garantindo que um administrador treinado em Ubuntu saiba navegar também no Debian, CentOS ou Red Hat.

🏢 Analogia — Prédio Comercial: Imagine um prédio bem organizado. O térreo é a recepção (raiz /). O primeiro andar tem os escritórios individuais (/home). O subsolo guarda as máquinas e equipamentos (/dev). O arquivo de documentos fica em um andar separado (/var). Cada coisa tem seu lugar, e todos sabem onde procurar.

Por que o FHS é importante?

🔄
Consistência entre distrosUm sysadmin navega em qualquer distro Linux sem surpresas
🔧
Manutenção mais fácilDiagnóstico de problemas fica muito mais rápido e previsível
⚙️
Scripts portáveisAutomações funcionam em qualquer sistema que siga o FHS
🧭
Localização óbviaConfigurações, logs e binários sempre nos mesmos lugares
bash — visualizando a raiz
usuario@servidor:~$ ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # Cada um desses diretórios tem uma função específica definida pelo FHS

🔄 Linux vs Windows: Uma Única Árvore

Uma das primeiras diferenças que surpreende quem migra do Windows é a estrutura do sistema de arquivos. No Windows, cada disco recebe uma letra. No Linux, existe uma única árvore que começa na raiz / e tudo é ramificado a partir daí.

🪟 Windows

C:\Windows\System32
C:\Users\João\Downloads
D:\Dados
E:\Backup

🐧 Linux

/usr/lib
/home/joao/Downloads
/media/dados
/mnt/backup
bash — caminhos absolutos vs relativos
# Caminho absoluto — começa sempre com / usuario@servidor:~$ ls /home/usuario/Downloads # Caminho relativo — relativo ao diretório atual usuario@servidor:~$ ls Downloads # Til ~ é atalho para /home/seuusuario usuario@servidor:~$ cd ~ usuario@servidor:~$ pwd /home/usuario

⚠️ Atenção: No Linux não existe C:\Usuários\João. O equivalente é /home/joao. O separador de diretórios é a barra normal (/), não a barra invertida como no Windows (\).

🌳 A Árvore de Diretórios do Linux

Veja a estrutura completa que você encontra ao executar ls / em qualquer sistema Linux:

/
├── bin ← Comandos essenciais para todos os usuários
├── boot ← Arquivos de inicialização do sistema
├── dev ← Dispositivos de hardware
├── etc ← Configurações do sistema
├── home ← Diretórios pessoais dos usuários
├── lib ← Bibliotecas compartilhadas
├── media← Mídias removíveis (pendrive, CD)
├── mnt ← Montagens temporárias manuais
├── opt ← Programas opcionais de terceiros
├── proc ← Sistema virtual: processos e kernel
├── root ← Home do superusuário (root)
├── sbin ← Comandos de administração (root)
├── tmp ← Arquivos temporários (apagados no boot)
├── usr ← Programas instalados pelo usuário
└── var ← Dados variáveis: logs, spool, sites

⭐ Regra de Ouro — Os 3 mais importantes do dia a dia

Aprenda esses três e você já domina 80% do uso cotidiano:

🏠
/home
Seus arquivos pessoais: documentos, downloads, área de trabalho
⚙️
/etc
Todas as configurações do sistema e dos serviços instalados
📊
/var
Logs, cache e dados que mudam constantemente durante o uso

📊 Guia Visual dos Diretórios

Conheça cada diretório, organizado por categoria:

🔵 Comandos e Binários

/bin
Binários essenciais
ls, cp, mv, bash, cat — disponíveis para todos
/sbin
Binários de administração
fdisk, mkfs, iptables, reboot — requerem root
/usr
Programas do usuário
Contém /usr/bin, /usr/lib, /usr/share — instalados via apt

🟡 Configuração e Usuários

/etc
Configurações do sistema
passwd, hosts, fstab, ssh/ — cofre do sysadmin
/home
Diretórios dos usuários
/home/joao, /home/maria — cada um tem o seu
/root
Home do superusuário
Diretório pessoal exclusivo do usuário root

🟣 Dados e Temporários

/var
Dados variáveis
log/, www/, mail/, cache/ — cresce durante o uso
/tmp
Arquivos temporários
Apagado a cada reinicialização — nunca guarde dados importantes aqui

🔴 Sistema e Hardware

/dev
Dispositivos
sda, null, tty — hardware representado como arquivo
/proc
Sistema virtual do kernel
cpuinfo, meminfo — gerado dinamicamente, não existe no disco
/boot
Inicialização
Kernel Linux, GRUB, initrd — o que carrega antes de tudo
/media
Mídias removíveis
Pendrive, DVD, HD externo — montados automaticamente
/mnt
Montagem manual
Usado pelo administrador para montar discos manualmente
/opt
Softwares opcionais
Google Chrome, Zoom, softwares proprietários de terceiros

⚙️ /etc e 🏠 /home em Detalhe

/etc — O cofre de configurações

O diretório /etc contém praticamente todos os arquivos de configuração do sistema e dos serviços instalados. É aqui que você edita para configurar rede, SSH, servidores web, DNS local e usuários.

bash — explorando /etc
usuario@servidor:~$ cat /etc/hostname meu-servidor usuario@servidor:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 meu-servidor usuario@servidor:~$ ls /etc/ | head -15 apache2 apt bash.bashrc cron.d default fstab group hostname hosts init.d locale.gen netplan passwd resolv.conf ssh sudoers

⚠️ Cuidado em /etc: Um erro de edição em arquivos como /etc/fstab ou /etc/sudoers pode impedir o sistema de iniciar ou bloquear o acesso de administrador. Sempre faça backup antes de editar.

/home — A casa de cada usuário

Cada usuário comum tem seu próprio subdiretório dentro de /home. É aqui que ficam documentos, downloads, configurações de aplicativos e a área de trabalho. O til (~) é um atalho para o diretório home do usuário logado.

bash — explorando /home
usuario@servidor:~$ ls /home alice bob usuario # ~ é atalho para /home/usuario usuario@servidor:~$ cd ~ usuario@servidor:~$ ls -la total 40 drwxr-xr-x 5 usuario usuario 4096 jan 15 10:00 . -rw-r--r-- 1 usuario usuario 220 jan 10 08:00 .bash_logout -rw-r--r-- 1 usuario usuario 3526 jan 10 08:00 .bashrc drwxr-xr-x 2 usuario usuario 4096 jan 10 08:00 Downloads

📊 /var e 🗑️ /tmp

/var — Dados que mudam constantemente

O diretório /var (de variable) contém dados que crescem e mudam durante o funcionamento do sistema. Logs, spool de impressão, cache, bancos de dados e arquivos de sites ficam aqui.

📝 /var/log Logs do sistema, serviços (syslog, auth.log, apache2/)
🌐 /var/www Arquivos dos sites hospedados no servidor web
📦 /var/cache Cache de pacotes, repositórios e aplicações
📬 /var/mail Fila de e-mails do sistema (spool de mensagens)
bash — explorando /var/log
usuario@servidor:~$ ls /var/log/ apt auth.log dpkg.log kern.log syslog apache2/ mysql/ nginx/ # Ver as últimas 5 linhas do log do sistema usuario@servidor:~$ tail -5 /var/log/syslog Jan 15 10:30:45 servidor systemd[1]: Started Daily apt update Jan 15 10:31:02 servidor sshd[1234]: Accepted password for usuario # Verificar tamanho do diretório /var/log usuario@servidor:~$ du -sh /var/log/ 48M /var/log/

💡 Dica profissional: Quando algo dá errado em um servidor, os logs em /var/log/syslog, /var/log/auth.log e nos subdiretórios dos serviços são o primeiro lugar para investigar. Aprender a ler logs é uma habilidade fundamental em administração de sistemas.

/tmp — Temporário e efêmero

O diretório /tmp é um espaço de trabalho temporário. Qualquer usuário pode criar arquivos aqui, mas o conteúdo é apagado automaticamente a cada reinicialização.

⚠️ Nunca use /tmp para dados permanentes! Scripts de instalação, arquivos de download temporário e dados de sessão ficam aqui por conveniência — mas desaparecem no próximo boot.

🔌 /dev e 🧠 /proc

/dev — "Tudo é arquivo"

Uma das filosofias fundamentais do Unix/Linux é que "tudo é arquivo". No diretório /dev, cada dispositivo de hardware é representado como um arquivo especial. Discos, partições, terminais, a "lixeira infinita" (/dev/null) — tudo aparece aqui.

/dev/sda
Primeiro disco rígido ou SSD do sistema
/dev/sda1
Primeira partição do disco sda
/dev/null
Lixeira infinita — descarta qualquer saída
/dev/tty
Terminal atual do usuário logado
/dev/zero
Gera bytes nulos — usado para criar arquivos
/dev/random
Gerador de números aleatórios do kernel
bash — dispositivos em /dev
usuario@servidor:~$ ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 # sda = primeiro disco HD/SSD | sda1 = primeira partição # /dev/null descarta qualquer saída enviada a ele usuario@servidor:~$ ls -la /nonexistent 2>/dev/null # Nenhuma mensagem de erro aparece — foi "engolida" pelo /dev/null

/proc — O sistema nervoso do kernel

O diretório /proc é um sistema de arquivos virtual — os arquivos não existem no disco; são gerados dinamicamente pelo kernel quando você os lê. Fornecem informações em tempo real sobre processos, hardware e estado do sistema.

bash — informações via /proc
# Versão do kernel usuario@servidor:~$ cat /proc/version Linux version 6.5.0-15-generic (buildd@ubuntu) gcc version 13.2.0 # Informações de memória usuario@servidor:~$ cat /proc/meminfo | head -5 MemTotal: 8192000 kB MemFree: 4096000 kB MemAvailable: 5120000 kB # Número de CPUs disponíveis usuario@servidor:~$ grep -c "processor" /proc/cpuinfo 4

⚡ /bin, /sbin, /usr, /boot e /opt

/bin e /sbin — Onde vivem os comandos

Os comandos que você digita no terminal são arquivos executáveis em /bin (todos os usuários) e /sbin (somente root). Em distribuições modernas, ambos são links simbólicos para /usr/bin e /usr/sbin.

/bin
Comandos essenciais
ls, cp, mv, rm, cat, bash, echo — disponíveis para todos os usuários
/sbin
Comandos de administração
fdisk, mkfs, iptables, reboot, shutdown — geralmente requerem root
/usr
Programas do usuário
Programas instalados via apt/dnf ficam em /usr/bin e /usr/lib
/boot
Inicialização do sistema
Kernel Linux (vmlinuz), initrd e configuração do GRUB
/opt
Softwares opcionais
Google Chrome, Zoom, softwares que não vêm nos repositórios padrão
bash — localizando comandos
# Onde está o comando ls? usuario@servidor:~$ which ls /usr/bin/ls # Onde está o fdisk (comando de admin)? usuario@servidor:~$ which fdisk /usr/sbin/fdisk # Verificar se /bin é link para /usr/bin (distros modernas) usuario@servidor:~$ ls -la /bin lrwxrwxrwx 1 root root 7 jan 10 2024 /bin -> usr/bin

💡 Nota moderna: Em distribuições recentes (Ubuntu 20.04+, Debian 11+), /bin, /sbin, /lib e /lib64 são links simbólicos para dentro de /usr. Isso simplifica a estrutura e facilita atualizações atômicas do sistema.

🎯 Exercício — Diretórios do FHS

Arraste cada diretório para sua descrição correta.

Diretório
/etc
/home
/var
/bin
/dev
/tmp
Função
Configurações do sistema
Pastas dos usuários
Dados variáveis (logs, spool)
Comandos essenciais do sistema
Dispositivos do sistema (hardware)
Arquivos temporários (apagados no boot)

🛠️ Atividade Prática — Explorando o FHS

⏱ ~30 min 💻 Ubuntu Server / Terminal 📸 Tirar screenshot da saída
1
Navegar pelos diretórios principais
Use ls / para listar a raiz. Em seguida execute ls -la /home, ls /usr e ls /boot. Use cd /etc && ls | head -20 para entrar no /etc. Execute cd ~ para voltar ao home. Anote o que você encontrou em cada diretório.
2
Listar e ler arquivos de configuração em /etc
Execute cat /etc/hostname, cat /etc/hosts e cat /etc/os-release. Observe como as configurações são simples arquivos de texto editáveis com qualquer editor.
3
Visualizar logs em /var/log
Execute ls /var/log para listar os logs. Veja as últimas linhas: tail -20 /var/log/syslog. Se existir, leia também tail -10 /var/log/auth.log. Identifique o formato de data e horário nos logs.
4
Identificar dispositivos em /dev
Execute ls /dev/sd* para listar discos. Execute ls /dev/tty* para listar terminais. Teste: ls /pastaqueNaoExiste 2>/dev/null — observe que nenhum erro aparece.
5
Criar uma estrutura de diretórios de projeto
Crie uma estrutura: mkdir -p ~/projeto/{scripts,logs,configs,docs}. Verifique com tree ~/projeto (ou ls -la ~/projeto). Crie um README: echo "Meu projeto Linux" > ~/projeto/docs/README.txt. Tire um screenshot.
📌 Para refletir: O FHS não é apenas uma convenção burocrática — é o que permite que profissionais de TI do mundo todo possam administrar qualquer servidor Linux sem precisar "decifrar" onde as coisas ficam. Quando você souber que logs estão sempre em /var/log e configurações em /etc, você terá um mapa mental que funciona em qualquer distribuição.