Linux / Estrutura de diretórios: para que servem /etc, /var e /usr

No Linux, /etc reúne principalmente configurações, /var guarda dados variáveis, /usr contém programas e bibliotecas, e /home costuma abrigar os arquivos pessoais dos usuários. Tudo aparece numa árvore iniciada em /, mas os caminhos concretos e os sistemas de arquivos montados variam conforme a distribuição e a instalação.

Para praticar a navegação, consulte os guias de sistemas de arquivos e caminhos, em inglês e de pwd, ls, cd e tree, em inglês. A tabela abaixo serve como referência rápida; as seções seguintes explicam condições e exceções.

Este guia apresenta as convenções mais comuns, sem exigir que cada diretório exista numa instalação mínima ou contêiner. O manual Linux hier(7) descreve a hierarquia tradicional; a especificação UAPI.9, ainda em desenvolvimento, descreve uma organização moderna com mais conteúdo em /usr.

Principais diretórios em uma tabela

Diretório Referência para lembrar Função comum
/ Raiz Início da árvore de arquivos visível ao processo.
/bin Programas binários Comandos básicos; pode ser um link para /usr/bin.
/boot Inicialização Kernel e recursos de inicialização, conforme o método de boot.
/dev Dispositivos Nós de dispositivos e outros arquivos especiais.
/etc Configuração Configurações do sistema e dos serviços.
/home Diretórios pessoais Local habitual dos diretórios pessoais de usuários comuns.
/lib Bibliotecas Bibliotecas essenciais ou caminho de compatibilidade.
/lib64 Bibliotecas de 64 bits Caminho usado por algumas arquiteturas; não existe em todo Linux de 64 bits.
/media Mídias Pontos de montagem de dispositivos removíveis.
/mnt Montagem Ponto convencional para uma montagem temporária.
/opt Aplicativos adicionais Diretórios de aplicativos adicionais, conforme o fornecedor.
/proc Processos Interface virtual para processos e parâmetros do kernel.
/root Conta root Diretório pessoal convencional do usuário root.
/run Execução Dados voláteis de serviços e sessões durante a execução.
/sbin Administração Comandos administrativos ou caminho de compatibilidade.
/srv Serviços Dados disponibilizados por serviços; o caminho real depende da configuração.
/sys Sistema Interface virtual para dispositivos, drivers e objetos do kernel.
/tmp Temporário Arquivos temporários sujeitos à política de limpeza.
/usr Hierarquia de programas Executáveis, bibliotecas, documentação e outros recursos instalados.
/var Dados variáveis Logs, estado de aplicações, filas e caches.

/ — diretório raiz

/ é o diretório de nível superior no sistema de arquivos Linux.

Discos, partições, sistemas de arquivos de rede e interfaces virtuais podem ser montados em pontos dessa árvore. Assim, um caminho sob / não significa que seus dados estejam todos no mesmo disco. O esquema a seguir é parcial e ilustrativo; não é a listagem de uma máquina específica.

/
├── bin
├── boot
├── dev
├── etc
├── home
├── usr
└── var

/ é chamado de diretório raiz, e é um conceito diferente de /root, o diretório home da conta de usuário root.

/bin — comandos básicos

O nome bin lembra binary, ou programa binário. Comandos básicos como ls, cp, mv e cat são encontrados por esse caminho em muitas instalações.

ls /bin lista as entradas acessíveis nesse caminho; nomes e quantidade dependem dos pacotes instalados.

ls /bin

Em sistemas com a hierarquia /usr unificada, /bin pode ser um link simbólico para /usr/bin. Consulte o próprio caminho com ls -ld:

ls -ld /bin

Se for um link, a saída longa normalmente começa com l e mostra -> seguido do destino. Se for um diretório real, o tipo aparece como d. Confira a instalação antes de mover ou substituir arquivos nesses caminhos.

/boot — arquivos de inicialização

/boot armazena os arquivos relacionados ao kernel e ao carregador de inicialização necessários para iniciar o sistema Linux.

Estes são exemplos de nomes usados por algumas distribuições. As reticências representam a versão do kernel; não são nomes literais para copiar:

/boot/vmlinuz-...
/boot/initramfs-...
/boot/grub2/

Outras instalações usam initrd.img-..., /boot/grub/ ou uma partição EFI (Extensible Firmware Interface) montada separadamente. Contêineres podem não ter esses arquivos. Atualize kernel e carregador de inicialização pelas ferramentas da distribuição; não apague arquivos de boot apenas porque parecem antigos.

/dev — arquivos de dispositivos

O nome dev lembra device, dispositivo. Os caminhos abaixo são exemplos, e os nomes reais dependem do hardware e da descoberta de dispositivos.

Nós de dispositivos permitem acessar discos, terminais e outros recursos por operações de arquivo. Eles não devem ser tratados como arquivos comuns para edição ou limpeza.

/dev/sda
/dev/sdb
/dev/nvme0n1
/dev/tty
/dev/null

/dev/sda pode representar um disco, enquanto /dev/null descarta os dados que recebe. Não presuma que sda ou sdb identifique sempre o mesmo disco; antes de uma operação de armazenamento, confira tamanho, modelo e identificadores.

/etc — configuração do sistema

/etc é um dos diretórios mais frequentemente usados ao gerenciar um servidor Linux.

/etc contém principalmente configurações do sistema e serviços. A tabela usa a função atual desse caminho como referência; não é necessário tratar seu nome como uma sigla para entendê-lo.

/etc/passwd
/etc/fstab
/etc/hosts
/etc/ssh/sshd_config

Os exemplos incluem contas, montagem, nomes de hosts e o serviço SSH. Use as ferramentas recomendadas para cada configuração, faça backup do arquivo que será alterado e valide antes de aplicar. Nem toda configuração está em /etc: programas instalados localmente e preferências pessoais podem usar outros caminhos.

/home — diretórios pessoais

/home costuma conter os diretórios pessoais dos usuários comuns, incluindo documentos e configurações por usuário. Home corresponde ao diretório pessoal da conta.

Uma conta chamada john pode ter o caminho abaixo, desde que a criação da conta tenha sido configurada para isso. Contas de serviço, diretórios de rede e instalações personalizadas podem usar outro local.

/home/john

Uma sessão interativa normalmente começa no diretório pessoal. Para o caminho real, consulte a variável $HOME da sessão ou o registro da conta, por exemplo getent passwd john. Não forme o caminho apenas concatenando /home/ e o nome do usuário.

/lib e /lib64 — bibliotecas compartilhadas

lib é uma abreviação para library, biblioteca.

Bibliotecas compartilhadas necessárias para executar os programas e comandos básicos do Linux são armazenadas aqui.

/lib64 é usado em algumas arquiteturas, mas sua existência não é uma regra para todo sistema de 64 bits. Outras distribuições organizam bibliotecas em subdiretórios específicos de arquitetura.

/lib e /lib64 podem ser links para a hierarquia de bibliotecas sob /usr; o destino exato depende da distribuição e da arquitetura. Não substitua bibliotecas ou links manualmente com base apenas em seu nome.

/media — mídias removíveis

/media é o local usado ao montar dispositivos de armazenamento removíveis, como memórias USB, CDs e DVDs.

Ambientes gráficos podem montar a mídia em /media, /run/media ou um subdiretório por usuário. A detecção e a montagem dependem do serviço de desktop e da política local; conectar uma mídia não garante que ela já esteja montada.

/mnt — montagens temporárias

/mnt é um nome derivado de Mount.

Montar significa associar um sistema de arquivos a um diretório da árvore. O comando abaixo é apenas um exemplo: /dev/sdb1 precisa ser uma partição real, já com sistema de arquivos apropriado, e /mnt deve existir e estar livre para esse uso. Não execute com um dispositivo escolhido por adivinhação.

sudo mount /dev/sdb1 /mnt

A montagem comum exige privilégios administrativos, por isso o exemplo usa sudo. Antes, confira o dispositivo com lsblk -f, se o ponto já está montado com findmnt --mountpoint /mnt e o conteúdo de /mnt. Montar sobre um diretório não vazio oculta temporariamente seu conteúdo anterior. O manual de mount explica o efeito.

Depois, confirme a origem e o destino com findmnt --mountpoint /mnt e consulte ls /mnt. Para encerrar somente a montagem criada por você, saia de /mnt, feche processos que a utilizem e execute sudo umount /mnt. Se houver erro de dispositivo ocupado, investigue o uso; não force a desmontagem de um serviço em atividade. Esse exemplo não formata o dispositivo nem cria uma entrada persistente em /etc/fstab.

/opt — aplicativos adicionais

opt significa Optional.

Aplicativos adicionais podem usar uma árvore própria sob /opt, como nos exemplos abaixo. Eles podem ser comerciais ou livres; não é uma classificação por licença nem uma regra para todo software de terceiros.

/opt/application/
/opt/company/product/

/proc — processos e informações do kernel

proc significa Processo.

/proc é um ponto de montagem de procfs, uma interface virtual do kernel para processos e informações do sistema. Seus arquivos não são documentos comuns persistidos no disco; o conteúdo é apresentado pelo kernel durante a leitura. A documentação oficial de procfs detalha essa interface.

Para consultar informações da unidade central de processamento (CPU) expostas a esse ambiente:

cat /proc/cpuinfo

Para campos de memória, como MemTotal e MemAvailable, quando fornecidos pelo kernel:

cat /proc/meminfo

/proc/1234 é um exemplo para um processo cujo identificador, ou PID, seja 1234; ele precisa existir naquele momento. Permissões e isolamento por contêiner podem limitar o que aparece. Alguns arquivos de /proc/sys aceitam escrita e alteram parâmetros do kernel: não use essa árvore como área de armazenamento ou limpeza.

/root — diretório pessoal de root

/root é o diretório pessoal convencional da conta administrativa root. Ele não é a raiz / da árvore; confirme o registro da conta se o sistema tiver uma configuração diferente.

Usuário comum → /home/user
Usuário root → /root

A raiz da árvore é /; o diretório pessoal de root costuma ser /root. Essa distinção evita confundir o local dos arquivos do administrador com o início do sistema de arquivos.

/run — dados de execução voláteis

/run armazena informações temporárias de tempo de execução usadas por serviços e processos após a inicialização do sistema.

Exemplos incluem arquivos que registram PIDs, sockets de comunicação e informações transitórias dos serviços. /run/user/ costuma separar dados de execução de sessões por identificador de usuário.

/run/
/run/user/
/run/systemd/

/run costuma ser um sistema de arquivos tmpfs volátil, recriado a cada inicialização. Não guarde ali dados que precisem sobreviver ao reboot; dados de estado persistentes normalmente pertencem a /var/lib.

/sbin — comandos administrativos

sbin geralmente representa Binário do Sistema.

Esse caminho é associado a comandos administrativos. Estar em /sbin não determina sozinho quem pode executar um programa: permissões e a operação solicitada é que definem os privilégios necessários. Os caminhos a seguir são exemplos, não comandos a executar durante esta consulta.

/sbin/reboot
/sbin/fsck

/sbin pode ser um link para /usr/sbin; algumas distribuições também unificam /usr/sbin e /usr/bin. Verifique o destino efetivo em vez de assumir que há cópias independentes de cada programa.

/srv — dados oferecidos por serviços

srv representa Serviço.

É um diretório para armazenar dados de serviços fornecidos pelo sistema para fora, como para servidores web ou servidores FTP.

/srv/www/
/srv/ftp/

No entanto, a localização real dos dados de serviço pode variar dependendo da distribuição ou das configurações do administrador, e para servidores web, /var/www é frequentemente usado.

/sys — dispositivos e atributos do kernel

sys significa Sistema.

/sys costuma montar sysfs, que expõe objetos e atributos do kernel, sobretudo de dispositivos e drivers. A documentação oficial de sysfs explica a ligação entre essas entradas e o kernel.

É usado principalmente para verificar informações sobre dispositivos, drivers, objetos do kernel, etc.

ls /sys/class

A consulta pode mostrar classes como rede, dispositivos de bloco e terminais, conforme o ambiente. Algumas entradas de /sys aceitam escrita e controlam hardware ou comportamento do kernel; não copie valores para elas nem as remova como se fossem arquivos temporários.

/tmp — arquivos temporários

tmp é uma abreviação de Temporário.

É um espaço para armazenar arquivos temporariamente necessários por programas ou usuários.

/tmp

A política local pode apagar arquivos de /tmp após um prazo ou no reboot; não há uma garantia universal de retenção. /var/tmp costuma servir a temporários que precisam atravessar reinicializações, mas também pode ter limpeza por idade. Dados importantes precisam de armazenamento persistente e backup, não de um diretório temporário.

/usr — programas e recursos instalados

/usr concentra recursos instalados, como executáveis, bibliotecas, documentação e dados compartilháveis. O tamanho varia com os pacotes presentes; a função do diretório é mais importante do que uma suposta expansão de seu nome.

Em sistemas com /usr unificado, caminhos tradicionais como /bin e /lib podem apontar para essa árvore; alterações nos arquivos distribuídos devem seguir o gerenciador de pacotes.

Diretório Propósito
/usr/bin Comandos e programas gerais
/usr/sbin Programas de administração do sistema
/usr/lib Bibliotecas compartilhadas
/usr/lib64 Bibliotecas de 64 bits em distribuições que usam esse caminho; não é universal.
/usr/share Dados compartilhados independentes de arquitetura, como documentos e ícones
/usr/local Hierarquia local mantida pelo administrador, com bin, lib, share e outros subdiretórios.

/usr/local é convencional para instalações locais mantidas pelo administrador, separadas dos arquivos distribuídos pelo sistema. Ainda assim, siga a documentação do programa e verifique conflitos com pacotes; o caminho não registra automaticamente como algo foi instalado.

/var — dados variáveis e persistentes

var representa Variável.

Armazena dados que são continuamente gerados ou mudam de tamanho enquanto o sistema está em execução.

/var/log
/var/cache
/var/lib
/var/spool

/var/log

/var/log guarda logs persistentes quando o serviço está configurado para gravá-los ali. O journal do systemd também pode estar em /run/log/journal quando o armazenamento é volátil; nem todo log aparece como arquivo de texto em /var/log. O manual de journald.conf detalha os modos de armazenamento.

ls /var/log

/var/cache

/var/cache guarda dados de cache que o aplicativo pode reconstruir ou obter novamente. Isso não torna segura uma exclusão indiscriminada: use o procedimento de limpeza do programa e confirme o efeito nos serviços.

/var/lib

/var/lib guarda estado persistente de aplicações, como bancos de dados e registros dos gerenciadores de pacotes. Não é cache descartável; inclua os dados relevantes no plano de backup e recuperação do serviço.

/var/spool

É utilizado para armazenar dados aguardando para serem processados, como e-mails, trabalhos de impressão e tarefas agendadas.

Observe crescimento de logs, filas e bancos de dados separadamente. Se o espaço acabar, identifique a origem e use rotação ou manutenção apropriada; apagar arquivos ativos pode causar perda de dados e nem sempre libera o espaço imediatamente.

Um mapa para consultar durante o uso

Use este mapa como lembrete de função; os caminhos de cada aplicação devem ser confirmados na sua configuração:

/etc → Configuração do sistema
/var → Logs e dados variáveis
/home → Dados pessoais de usuários comuns
/root → Diretório pessoal de root
/usr → Programas e bibliotecas
/tmp → Arquivos temporários
/dev → Dispositivos
/proc → Processos e informações do kernel
/sys → Dispositivos e atributos do kernel
/boot → Arquivos de inicialização
/mnt → Montagens temporárias
/opt → Aplicativos adicionais

Antes de decidir onde colocar um arquivo, diferencie configuração, programa instalado, estado persistente e temporário. Por exemplo, o estado de um serviço não deve ser colocado em /run se precisar sobreviver ao reboot.

Como conferir o caminho na sua instalação

Para descobrir o diretório pessoal de uma conta, consulte seu registro; para saber em qual sistema de arquivos um caminho está, use findmnt --target CAMINHO, substituindo o marcador pelo caminho real. Essa consulta pode mostrar o sistema de arquivos que contém o caminho, não necessariamente um ponto de montagem situado exatamente nele; veja o manual de findmnt.

Para um serviço específico, leia a configuração efetiva e o manual do pacote antes de mover arquivos. Um servidor web pode servir conteúdo de /srv, /var/www ou outro local definido pelo administrador; o nome do diretório não substitui essa verificação.

Se um diretório descrito não existir, confira a distribuição, os pacotes instalados e o ambiente de execução. Não crie árvores inteiras apenas para imitar uma tabela: sistemas mínimos, contêineres e instalações com partições separadas podem ter layouts diferentes.