Entendendo o FHS

Publicado por Carlos A. Parisotto em 16/09/2010

[ Hits: 37.139 ]

 


Entendendo o FHS



Acredito que a principal característica de um bom técnico em Linux é entender bem a estrutura de arquivos do sistema operacional. Por outro lado, muitas pessoas que migram de Windows para Linux tem muitos problemas em entender o que são todos esses diretórios. Através desse texto explico o funcionamento do sistema de arquivos do Linux.

FHS é sigla para Filesystem Hierarchy Standard (padrão para sistema de arquivos hierárquico), e define os principais diretórios de um sistema Linux. Até onde conheço está na versão 2.3, atualizada em 2004.

O sistema FHS é mantido pela Free Standard Groups, que contém engenheiros de empresas como Red Hat, IBM, Dell e HP. Hoje em dia, 99% dos sistemas Linux trabalham com o FHS (provavelmente todos Linux que você conhece usam).

Devo lembrar que todos diretórios, não importando se estão em partições separadas, estão abaixo do diretório "/", e que o FHS não se refere exclusivamente a diretórios situados diretamente na "/".

Descrevo a seguir os principais diretórios definidos pela última versão do FHS (se alguém tiver alguma contestação ou algum diretório que esqueci, sintam-se livres para comentar ou enviar por e-mail):
  • /etc - nesse diretório e em seus subdiretórios se encontram basicamente todos arquivos de configuração do Linux. Ex.: /etc/resolv.conf, de configuração do DNS; o /etc/samba/smb.conf, arquivos de configuração do samba, entre outros. (Obs.: nos exemplos estou usando alguns arquivos padrão da distro Fedora, em outras distros poderá ser um pouco diferente, mas sem romper com o padrão FHS)
  • /etc/opt - Arquivos de configuração para a pasta /opt.
  • /etc/skel - Arquivos gravados nas pastas dos novos usuários.
  • /etc/X11 - Arquivos de configuração para o servidor X (modo gráfico), versão 11.
  • /opt - Arquivos opcionais, não padrão da distribuição. Ex.: aplicações como GoolgleEarth.
  • /srv - Dados dos serviços fornecidos pelo próprio sistema.
  • /bin - Arquivos binários com comandos essenciais para todos usuários. Ex.: cat, cp, rm.
  • /sbin - Também arquivos binários, só que com comandos essenciais para administração de rede. Ex: ifconfig, modprobe, runlevel.
  • /lib - Bibliotecas necessárias para os binários das pastas /bin e /sbin. Ex.: se for usado o comando ldd /bin/ls, mostrará as bibliotecas necessárias para esse comandos rodarem, como libc e linux-gate. Dica: se por acaso algum binário não rodar, você pode verificar com o comando ldd, ele vai mostrar se tem alguma biblioteca faltando. Você pode fazer a verificação em outra máquina que tenha a mesma distro e o programa rodando e descobrir qual pacote é necessário baixar, por exemplo se for usado o rpm -qf /lib/libc.so.6, vai mostrar o pacote glibc, daí é só ir na maquina com problema e instalar através do comando yum install glibc, ou apt-get install glibc.
  • /usr - Aí é que vem uma boa jogada na minha opinião. Uma hierarquia secundária para alguns arquivos, com permissões diferentes.
  • /usr/bin - Entra em jogo a hierarquia secundária. A pasta /usr/bin em teoria tem o mesmo funcionamento da /bin, porém usada para arquivos não necessários para a comunicação usuário-máquina. Ex.: less, renice, yum.
  • /usr/sbin - Hierarquia secundária para /sbin, também com comandos não necessários para uso. Ex.: logrotate, lsof, lpinfo.
  • /usr/lib - Bibliotecas necessárias para arquivos das pastas /usr/bin e /usr/sbin.
  • /usr/local - Hierarquia terciária. Também contém as subpastas bin, lib e sbin, porém elas vêm vazias por padrão, sendo deixadas exclusivamente para programas criados pelo usuário.
  • /usr/src - Código fonte do kernel.
  • /boot - Arquivos estáticos usados no Boot Loader, ou seja, na inicialização do sistema.
  • /tmp - Pasta onde ficam arquivos temporários. Ex.: quando você baixa algum arquivo da internet e opta por executar ao invés de salvar, na prática ele fica salvo na pasta /tmp e depois é excluído(muitas vezes não prontamente após o final da execução, o que o permite executar novamente).
  • /dev - Pasta onde ficam os endereços lógicos dos devices conectados no computador. Ex.: a terceira partição de um HD conectado no primeiro canal IDE da máquina: /dev/hda3.
  • /mnt - Onde ficam montados os volumes temporários.
  • /media - Onde ficam montados devices como pendrive e CDs.
  • /home - Diretório home dos usuários. Ex.: a pasta do usuário papainoel normalmente vai ser /home/papainoel, e dentro terá pastas como Desktop e Documentos.
  • /root - Diretório home do usuário root. Por padrão vem com poucos arquivos, como o arquivos de instalação anaconda-ks.cfg.
  • /proc - Diretório com informações dinâmicas sobre a máquina. Ex.: /proc/meminfo contém informações sobre uso da memória naquele instante. Obs.: Os arquivos da /proc não tem permissão de alteração nem pra usuário root.
  • /var - Arquivos variáveis, como logs e páginas web.
  • /var/log - Onde são gerados os principais logs do sistema.
  • /var/lock - Contém uma espécie de controle sobre alguns processos que estão em execução.
  • /var/run - Contém o PID dos processos que estão rodando na máquina.
  • /var/spool - Processos que estão em uma fila de execução. Ex.: documento sendo enviado para uma fila de impressão.
  • /var/mail - Caixa de e-mail dos usuários.
  • /var/cache - Arquivos de cache de diversos programas.

Além desses diretórios, o FHS também recomenda diretórios a serem usados como partições e diretórios que são obrigatórios que estejam na raiz.

Diretórios que são obrigatórios estarem localizados na partição "/": /bin, /sbin, /lib, /etc, /dev e /proc.

Pastas recomendadas como ponto de montagem (normalmente se recomenda os diretórios que normalmente crescem dinamicamente, para não lotar a partição "/"): /boot, /home, /var, /tmp e /usr/local.

Como eu havia citado antes, sintam-se livre para comentar e tirar dúvidas.

Outras dicas deste autor

Como lidar com variáveis retornadas pelo Expect - removendo CR do fim de linha

Diferenças entre os compactadores gzip, bzip2 e xz

Leitura recomendada

Utilizando as chamadas de sistema dup() e dup2()

Backup de arquivos na Cloud com AWS Amazon S3 e PHP

Remover kernel(s) antigo(s) no Ubuntu

Suporte remoto com VNC reverso

Curiosidade sobre o Debian

  

Comentários
[1] Comentário enviado por PauloKeizo em 08/03/2013 - 11:35h

Muito bem explicado ! Valew pelo post.

[2] Comentário enviado por jrodrigomor em 14/03/2013 - 09:40h

Realmente muito bem explicado. Só uma observação: o /sbin possui comandos essenciais para administração do sistema em geral, não somente administração de redes. Por exemplo, os comandos fdisk e mkfs. Recomendo a leitura do FHS em http://www.pathname.com/fhs/

[3] Comentário enviado por pedrodark em 20/08/2016 - 18:52h

Sensacional a explicação! Valeu



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts