Entendendo o FHS

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

[ Hits: 37.657 ]

 


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

Diferenças entre os compactadores gzip, bzip2 e xz

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

Leitura recomendada

Testando um arquivo ISO

Calculo de dias úteis entre duas datas em PHP

DDOS utilizando hubs p2p

Siafi no Ubuntu 9.04

Conectividade Social - conexão segura

  

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