FHS - Filesystem Hierarchy Standard
O FHS (Filesystem Hierarchy Standard) é o padrão que define a estrutura de diretórios e o conteúdo de cada diretório em sistemas operacionais Linux e Unix-like. Ele é mantido pela Linux Foundation e tem como objetivo garantir a compatibilidade e a previsibilidade entre diferentes distribuições Linux.
Quando você acessa o diretório raiz (/) de qualquer distribuição Linux, encontra uma série de diretórios com nomes padronizados. Cada um deles tem uma função específica, e entender essa organização é fundamental para qualquer pessoa que deseje administrar ou utilizar o Linux de forma eficiente.
O Diretório Raiz /
Section titled “O Diretório Raiz /”O diretório raiz é o ponto de partida de toda a árvore de diretórios do sistema. Todos os outros diretórios, arquivos, dispositivos e recursos do sistema estão organizados hierarquicamente abaixo de /. Diferente do Windows, que utiliza letras para identificar unidades (C:, D:), no Linux tudo está contido dentro de uma única árvore que começa no /.
Para visualizar os diretórios do nível raiz, basta executar:
ls /A saída será algo semelhante a:
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varPrincipais Diretórios do FHS
Section titled “Principais Diretórios do FHS”/bin - Binários Essenciais
Section titled “/bin - Binários Essenciais”Contém os comandos binários essenciais que precisam estar disponíveis para todos os usuários do sistema, inclusive no modo de recuperação (single-user mode). São comandos fundamentais para o funcionamento básico do sistema.
Exemplos de comandos encontrados em /bin:
ls, cp, mv, rm, cat, echo, mkdir, chmod, chown, date, df, mount, ping/sbin - Binários do Sistema
Section titled “/sbin - Binários do Sistema”Semelhante ao /bin, porém contém binários essenciais para a administração do sistema. Esses comandos geralmente requerem privilégios de superusuário (root) para serem executados.
Exemplos de comandos encontrados em /sbin:
fdisk, mkfs, iptables, ifconfig, reboot, shutdown, init, fsck/boot - Arquivos de Inicialização
Section titled “/boot - Arquivos de Inicialização”Contém os arquivos necessários para o processo de inicialização (boot) do sistema. Aqui ficam o kernel do Linux, a imagem initramfs e os arquivos de configuração do gerenciador de boot (como o GRUB).
Arquivos comuns encontrados em /boot:
vmlinuz-6.1.0-amd64 # Kernel do Linux (comprimido)initrd.img-6.1.0-amd64 # Imagem initramfsgrub/ # Diretório de configuração do GRUB/dev - Arquivos de Dispositivos
Section titled “/dev - Arquivos de Dispositivos”No Linux, tudo é tratado como arquivo, e os dispositivos de hardware não são exceção. O diretório /dev contém arquivos especiais que representam dispositivos do sistema.
Alguns dispositivos importantes:
| Dispositivo | Descrição |
|---|---|
/dev/sda | Primeiro disco rígido SATA/SCSI |
/dev/sda1 | Primeira partição do primeiro disco |
/dev/nvme0n1 | Primeiro disco NVMe |
/dev/tty | Terminal atual |
/dev/null | Dispositivo nulo (descarta tudo que é enviado) |
/dev/zero | Gera uma sequência infinita de zeros |
/dev/random | Gerador de números aleatórios |
/dev/urandom | Gerador de números pseudo-aleatórios |
/etc - Arquivos de Configuração
Section titled “/etc - Arquivos de Configuração”O diretório /etc (Editable Text Configuration) armazena os arquivos de configuração do sistema. Praticamente todo serviço ou aplicação no Linux possui seus arquivos de configuração neste diretório.
Arquivos e diretórios importantes em /etc:
| Arquivo/Diretório | Descrição |
|---|---|
/etc/passwd | Informações das contas de usuários |
/etc/shadow | Senhas criptografadas dos usuários |
/etc/group | Informações dos grupos do sistema |
/etc/hostname | Nome do host da máquina |
/etc/hosts | Mapeamento estático de nomes para endereços IP |
/etc/fstab | Tabela de sistemas de arquivos montados no boot |
/etc/resolv.conf | Configuração de servidores DNS |
/etc/ssh/ | Configurações do servidor e cliente SSH |
/etc/crontab | Tabela de agendamento de tarefas (cron) |
/etc/apt/sources.list | Repositórios de pacotes (Debian/Ubuntu) |
/home - Diretórios dos Usuários
Section titled “/home - Diretórios dos Usuários”Cada usuário do sistema possui um diretório pessoal dentro de /home. É onde ficam armazenados os arquivos pessoais, configurações de aplicativos e documentos do usuário.
/home/fernando//home/fernando/Documentos//home/fernando/Downloads//home/fernando/.bashrc # Configuração pessoal do Bash/home/fernando/.ssh/ # Chaves SSH do usuárioO atalho ~ (til) representa o diretório home do usuário atual:
cd ~# É o mesmo que:cd /home/fernando/root - Diretório do Superusuário
Section titled “/root - Diretório do Superusuário”O diretório home do usuário root (superusuário). Diferente dos demais usuários, o root não tem seu diretório dentro de /home, mas sim diretamente em /root. Isso garante que o administrador tenha acesso ao seu diretório mesmo que a partição /home não esteja montada.
/lib e /lib64 - Bibliotecas Compartilhadas
Section titled “/lib e /lib64 - Bibliotecas Compartilhadas”Contêm as bibliotecas compartilhadas (shared libraries) necessárias para a execução dos binários em /bin e /sbin. São equivalentes às DLLs do Windows.
# Verificar as bibliotecas que um comando utiliza:ldd /bin/lsO diretório /lib64 contém as bibliotecas de 64 bits em sistemas que suportam essa arquitetura.
/usr - Programas do Usuário
Section titled “/usr - Programas do Usuário”O /usr (Unix System Resources) é um dos maiores diretórios do sistema. Contém a maior parte dos programas e utilitários instalados.
| Subdiretório | Descrição |
|---|---|
/usr/bin | Binários de comandos do usuário |
/usr/sbin | Binários de administração do sistema |
/usr/lib | Bibliotecas dos programas em /usr/bin |
/usr/local | Programas instalados manualmente (compilados) |
/usr/share | Arquivos compartilhados (documentação, ícones) |
/usr/include | Arquivos de cabeçalho C/C++ para compilação |
/usr/src | Código-fonte (ex: código-fonte do kernel) |
/var - Dados Variáveis
Section titled “/var - Dados Variáveis”Contém arquivos cujo conteúdo muda constantemente durante a operação do sistema, como logs, filas de e-mail, cache e dados de servidores web.
| Subdiretório | Descrição |
|---|---|
/var/log | Arquivos de log do sistema e serviços |
/var/cache | Cache de aplicações |
/var/spool | Filas de trabalho (impressão, e-mail) |
/var/tmp | Arquivos temporários persistentes entre reboots |
/var/lib | Dados de estado de aplicações |
/var/www | Diretório padrão de servidores web (Apache) |
/tmp - Arquivos Temporários
Section titled “/tmp - Arquivos Temporários”Diretório utilizado para armazenar arquivos temporários criados por programas e usuários. Qualquer usuário pode escrever neste diretório. Os arquivos aqui são tipicamente apagados a cada reinicialização do sistema.
# Criar um arquivo temporáriomktemp /tmp/meuarquivo.XXXXXX/opt - Pacotes Opcionais
Section titled “/opt - Pacotes Opcionais”Diretório destinado à instalação de softwares de terceiros e pacotes opcionais que não fazem parte da distribuição padrão. Aplicações comerciais e proprietárias costumam ser instaladas aqui.
/opt/google/chrome//opt/microsoft/msedge//opt/lampp//media e /mnt - Pontos de Montagem
Section titled “/media e /mnt - Pontos de Montagem”Ambos os diretórios servem como pontos de montagem, mas com propósitos diferentes:
-
/media: Utilizado para montagem automática de dispositivos removíveis, como pen drives, CDs e DVDs. Quando você insere um pen drive, o sistema normalmente o monta em/media/usuario/nome_do_dispositivo. -
/mnt: Utilizado para montagem temporária e manual de sistemas de arquivos. É comumente usado por administradores para montar partições ou compartilhamentos de rede temporariamente.
# Montar manualmente uma partição em /mntsudo mount /dev/sdb1 /mnt
# Montar um compartilhamento NFSsudo mount -t nfs servidor:/compartilhamento /mnt/nfs/proc - Sistema de Arquivos Virtual (Processos)
Section titled “/proc - Sistema de Arquivos Virtual (Processos)”O /proc é um sistema de arquivos virtual (pseudo-filesystem) que não existe no disco. Ele é criado pelo kernel e fornece informações em tempo real sobre o sistema e os processos em execução.
# Informações sobre a CPUcat /proc/cpuinfo
# Informações sobre a memóriacat /proc/meminfo
# Informações sobre um processo específico (PID 1)ls /proc/1/
# Versão do kernelcat /proc/version
# Linha de comando do kernel no bootcat /proc/cmdline/sys - Sistema de Arquivos Virtual (Dispositivos)
Section titled “/sys - Sistema de Arquivos Virtual (Dispositivos)”Semelhante ao /proc, o /sys é um sistema de arquivos virtual que exporta informações sobre dispositivos de hardware e drivers do kernel. Ele utiliza a estrutura sysfs.
# Listar dispositivos de blocols /sys/block/
# Informações sobre a interface de redecat /sys/class/net/eth0/address/run - Dados de Tempo de Execução
Section titled “/run - Dados de Tempo de Execução”Contém dados voláteis sobre o sistema desde o último boot. Armazena informações como PIDs de processos em execução, sockets e arquivos de lock. Este diretório é montado como tmpfs e seu conteúdo é apagado a cada reinicialização.
# PID do processo do SSHcat /run/sshd.pid/srv - Dados de Serviços
Section titled “/srv - Dados de Serviços”Diretório destinado a armazenar dados de serviços fornecidos pelo sistema, como arquivos de um servidor FTP ou de um servidor web. Nem todas as distribuições utilizam este diretório ativamente.
/srv/ftp/ # Arquivos do servidor FTP/srv/http/ # Arquivos do servidor HTTPResumo da Estrutura
Section titled “Resumo da Estrutura”/├── bin/ → Binários essenciais do sistema├── boot/ → Arquivos de inicialização (kernel, GRUB)├── dev/ → Arquivos de dispositivos├── etc/ → Arquivos de configuração do sistema├── home/ → Diretórios pessoais dos usuários├── lib/ → Bibliotecas compartilhadas essenciais├── lib64/ → Bibliotecas compartilhadas 64-bit├── media/ → Montagem automática de dispositivos removíveis├── mnt/ → Montagem manual temporária├── opt/ → Softwares opcionais de terceiros├── proc/ → Sistema de arquivos virtual (processos/kernel)├── root/ → Diretório home do superusuário├── run/ → Dados voláteis de tempo de execução├── sbin/ → Binários de administração do sistema├── srv/ → Dados de serviços├── sys/ → Sistema de arquivos virtual (dispositivos)├── tmp/ → Arquivos temporários├── usr/ → Programas e utilitários do usuário└── var/ → Dados variáveis (logs, cache, spool)Comandos Úteis
Section titled “Comandos Úteis”Para explorar o FHS no seu sistema, alguns comandos podem ser bastante úteis:
# Visualizar a árvore de diretórios (nível 1)tree -L 1 /
# Verificar o espaço em disco de cada diretóriodu -sh /*
# Verificar o sistema de arquivos e pontos de montagemdf -hT
# Encontrar onde um comando está instaladowhich lswhereis ls
# Verificar o tipo de um arquivofile /bin/lsSaiba mais
Section titled “Saiba mais”- FHS - Filesystem Hierarchy Standard - Especificação Oficial do FHS
- Linux Foundation - FHS - O sistema de arquivos Linux explicado por Linux Foundation
- man hier - Manual da hierarquia do sistema de arquivos