Skip to content

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 é 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:

Terminal window
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 var

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:

Terminal window
ls, cp, mv, rm, cat, echo, mkdir, chmod, chown, date, df, mount, ping

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:

Terminal window
fdisk, mkfs, iptables, ifconfig, reboot, shutdown, init, fsck

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 initramfs
grub/ # Diretório de configuração do GRUB

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:

DispositivoDescrição
/dev/sdaPrimeiro disco rígido SATA/SCSI
/dev/sda1Primeira partição do primeiro disco
/dev/nvme0n1Primeiro disco NVMe
/dev/ttyTerminal atual
/dev/nullDispositivo nulo (descarta tudo que é enviado)
/dev/zeroGera uma sequência infinita de zeros
/dev/randomGerador de números aleatórios
/dev/urandomGerador de números pseudo-aleatórios

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órioDescrição
/etc/passwdInformações das contas de usuários
/etc/shadowSenhas criptografadas dos usuários
/etc/groupInformações dos grupos do sistema
/etc/hostnameNome do host da máquina
/etc/hostsMapeamento estático de nomes para endereços IP
/etc/fstabTabela de sistemas de arquivos montados no boot
/etc/resolv.confConfiguração de servidores DNS
/etc/ssh/Configurações do servidor e cliente SSH
/etc/crontabTabela de agendamento de tarefas (cron)
/etc/apt/sources.listRepositórios de pacotes (Debian/Ubuntu)

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.

Terminal window
/home/fernando/
/home/fernando/Documentos/
/home/fernando/Downloads/
/home/fernando/.bashrc # Configuração pessoal do Bash
/home/fernando/.ssh/ # Chaves SSH do usuário


O atalho ~ (til) representa o diretório home do usuário atual:

Terminal window
cd ~
# É o mesmo que:
cd /home/fernando

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.

Terminal window
# Verificar as bibliotecas que um comando utiliza:
ldd /bin/ls

O diretório /lib64 contém as bibliotecas de 64 bits em sistemas que suportam essa arquitetura.

O /usr (Unix System Resources) é um dos maiores diretórios do sistema. Contém a maior parte dos programas e utilitários instalados.

SubdiretórioDescrição
/usr/binBinários de comandos do usuário
/usr/sbinBinários de administração do sistema
/usr/libBibliotecas dos programas em /usr/bin
/usr/localProgramas instalados manualmente (compilados)
/usr/shareArquivos compartilhados (documentação, ícones)
/usr/includeArquivos de cabeçalho C/C++ para compilação
/usr/srcCódigo-fonte (ex: código-fonte do kernel)

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órioDescrição
/var/logArquivos de log do sistema e serviços
/var/cacheCache de aplicações
/var/spoolFilas de trabalho (impressão, e-mail)
/var/tmpArquivos temporários persistentes entre reboots
/var/libDados de estado de aplicações
/var/wwwDiretório padrão de servidores web (Apache)

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.

Terminal window
# Criar um arquivo temporário
mktemp /tmp/meuarquivo.XXXXXX

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/

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.

Terminal window
# Montar manualmente uma partição em /mnt
sudo mount /dev/sdb1 /mnt
# Montar um compartilhamento NFS
sudo 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.

Terminal window
# Informações sobre a CPU
cat /proc/cpuinfo
# Informações sobre a memória
cat /proc/meminfo
# Informações sobre um processo específico (PID 1)
ls /proc/1/
# Versão do kernel
cat /proc/version
# Linha de comando do kernel no boot
cat /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.

Terminal window
# Listar dispositivos de bloco
ls /sys/block/
# Informações sobre a interface de rede
cat /sys/class/net/eth0/address

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.

Terminal window
# PID do processo do SSH
cat /run/sshd.pid

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 HTTP
/
├── 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)

Para explorar o FHS no seu sistema, alguns comandos podem ser bastante úteis:

Terminal window
# Visualizar a árvore de diretórios (nível 1)
tree -L 1 /
# Verificar o espaço em disco de cada diretório
du -sh /*
# Verificar o sistema de arquivos e pontos de montagem
df -hT
# Encontrar onde um comando está instalado
which ls
whereis ls
# Verificar o tipo de um arquivo
file /bin/ls