You are on page 1of 6

1

Aula 05 ­ Estrutura de diretórios

1.0 – Histórico
Quando   do   desenvolvimento   do   Linux,   Linus   Torvalds   tinha   a   pretensão   de   evitar 
problemas encontrados durante seu uso do Minix. Dessa maneira, o sistema de arquivos adotado 
no   Linux   baseia­se   numa   camada   virtual   (VFS   –   Virtual   FileSystem),   construída   para   suportar 
múltiplos   sistemas   de   arquivos.   Essa   estrutura   permitiu   ao   Linux   um   gerenciamento   poderoso 
desse recurso.
Um problema prático existente no início do desenvolvimento do Linux era referente ao uso 
do sistema de arquivos. Dessa maneira, administradores e distribuições nem sempre utilizavam o 
mesmo diretório para colocar um dado arquivo. Isso gerava um esforço muito grande e adicional na 
administração dos sistemas, dada a confusão criada. 
Em   agosto   de   1.993,   Olaf   Kirsh,   um   programador   postou   uma   mensagem   em   um   dos 
grupos   de   discussão   sobre   Linux,   discutindo   a   possibilidade   de   criação   de   um   padrão   para   a 
estrutura de diretórios.
Em fevereiro de 1.994, a primeira versão desse padrão foi disponibilizado sob o nome de 
FSSTND (File System StaNDard). Duas outras versões foram disponibilizadas em 1.995, incluindo­
se   a   FSSTND   1.2,   a   última   versão   disponibilizada.   A   maior   limitação   desse   padrão   é   que   ele 
aplicava­se   somente   ao   Linux   e   dificultava   o   uso   de   ambientes   mistos,   com   vários   sistemas 
operacionais.
Esse problema levou a comunidade a avançar da FSSTND em direção a um novo padrão. 
Assim, um esforço para criar um padrão hierárquico do sistema de arquivos que pudesse suportar a 
outros sistemas baseados no UNIX foi iniciado em 1.995, com a ajuda de desenvolvedores do BSD. 
O nome do padrão foi alterado para FileSystem Hierarcy Standard – FHS, que poderia ser aplicado 
a qualquer sistema de arquivos.
­ que utilizasse uma estrutura hierárquica (árvores de diretórios);
­ que controlasse dados de arquivos de forma consistente;
­ que incluísse mecanismos de proteção de dados;
Dessa maneira, o FHS inicialmente estabelece uma distinção entre dados compartilháveis e 
não compartilháveis e entre dados estáticos e variáveis:
­   Dados   compartilháveis   são   aqueles   podem   ser   distribuídos   entre   diferentes   máquinas;   não 
compartilháveis são aqueles específicos a um dado sistema. Por exemplo, os diretórios pessoais 
dos usuários são dados compartilháveis, mas arquivos de dispositivos não são.
2

­ Dados estáticos incluem binários, bibliotecas e documentação, e tudo aquilo que não é alterado 
sem intervenção do administrador; dados variáveis incluem tudo que pode ser modificado sem a 
intervenção do administrador do sistema.
O   objetivo   dessa   distinção   é   fazer   com   que   o   FHS   facilite   o   compartilhamento   de 
informações em um ambiente distribuído. Dessa maneira, dados não compartilháveis devem estar 
em árvores de diretórios próprias. Ainda, dados estáticos podem ser montados somente por leitura, 
aumentando a segurança do sistema e até mesmo o uso de mídia estática (CD­ROM) como parte 
estrutural do sistema de arquivos.

1.1 – Árvore de diretórios no Linux
A Figura a seguir apresenta a árvore raiz de diretórios proposta no FHS. Itens em itálico 
não precisam existir na árvore, mas se existirem devem estar no diretório raiz. Obviamente, cada 
entrada na árvore de diretórios descrita na Figura pode ter sob si uma subárvore própria e, para 
algumas  dessas   entradas,   freqüentemente   isso   ocorre.   Observe   que   algumas   dessas   entradas 
podem ser  links  para outros diretórios. Segue­se uma descrição mais detalhada dessas entradas 
(obs: os diretórios /usr e /var, por serem mais complexos, serão tratados em seções próprias):

/bin:   O   diretório   /bin   contém  aqueles  comandos  essenciais   a   qualquer  usuário, 


quando   nenhum   outro   sistema   de   arquivos   encontra­se   montado.   Assim,   é 
requerido que ele contenha os seguintes comandos: cat, chgrp, chmod, chown, cp, 
date, dd, df, dmesg, echo, false, hostname, kill, ln, login, ls, mkdir, mknod, more, 
mount, mv, ps, pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount e uname. Se 
forem instalados, os seguintes comandos também devem ser colocados em /bin: 
csh, ed, tar, cpio, gzip, gunzip, zcat, netstat, ping.  Dada a  importâncias desses 
3

comandos,   recomenda­se   ao   leitor   que   consulte   as   respectivas   páginas   de 


manuais, em busca de mais informações.
/sbin:   Os   utilitários   essenciais   usados   na   administração   do   sistema   são 
disponibilizados   em   /sbin.   Assim,   esse   diretório   deve   conter   os   aplicativos 
essenciais à inicialização, restauração e reparação do sistema, por exemplo: fdisk, 
fsck,   shutdown,   halt,   reboot,   getty,   ifconfig,   init,   mkfs,   mkswap,   route,   swapon, 
swapoff e update. Novamente, recomenda­se ao leitor a consulta às páginas de 
manuais desses comando, em busca de mais informações.
/boot:  Esse  diretório  deve  conter todos  os  arquivos  essenciais ao  processo   de 
boot,   com   excessão   de   arquivos   de   configuração.   Opcionalmente,   o   kernel   do 
sistema operacional deve ser colocado em /boot, estratégia mais adotada, ou no 
diretório raiz. 
/dev: O diretório /dev/ contém os arquivos especiais de dispositivos. A maioria dos 
dispositivos de hardware é mapeado em um arquivo nos sistemas UNIX. Assim, 
por   exemplo,   o   arquivo   /dev/hda   representa   o   disco   rígido   mestre   (master)   da 
primeira   controlodora  IDE.  O   arquivo  /dev/hda1 representa,  portanto,  a  primeira 
partição desse disco. O primeiro disco SCSI, por sua vez, é mapeado no arquivo 
/dev/sda.
/lib: Esse diretório contém todas as bibliotecas dinâmicas utilizadas para inicializar 
o sistemas e executar as aplicações disponíveis em bin e sbin. Os módulos do 
kernel devem ser dispostos no subdiretório /lib/modules. Em alguns casos, podem 
haver diretórios específicos de bibliotecas, por exemplo /lib64 para bibliotecas de 
64 bits.
/etc:   É   no   diretório   /etc/   que   ficam   os   arquivos   e   diretórios   utilizados   para   a 
configuração do sistema. Vários desses arquivos e diretórios serão abordados em 
detalhes mais à frente nesta apostila. É um dos diretórios mais importantes ao se 
pensar em backups do sistema.
/home:   O   diretório   /home   contém   as   pastas   de   trabalho   dos   usuários.   A 
organização   interna   desse   diretório   depende   de   cada   sistema.   Alguns 
administradores,   por   exemplo,   utilizam   um   subdiretório   próprio   em   /home   para 
cada usuário. Outros, criam um subdiretório para cada grupo, ficando os diretórios 
dos usuários em terceiro nível. Essa última alternativa é indicada quando há muitos 
usuários e vários grupos em um sistema.
/root: Esse é o diretório pessoal do usuário root. Se ele não existir, o sistema irá 
assumir o diretório raiz / como sendo o diretório pessoal.
4

/mnt:   Esse   diretório   é   utilizado   para   montar   sistemas   de   arquivos   temporários, 


como  disquetes  (geralmente  montados em  /mnt/floppy) e  CDROMs  (geralmente 
montados em /mnt/cdrom). 
/opt:   O   diretório   /opt   é   reservado   para   a   instalação   de   pacotes   adicionais   de 
software.   Esse   deve   ser   o   local   preferido   para   a   instalação   de   programas 
desenvolvidos   localmente   (facilitando   atualizações   do   sistema).   Distribuições 
podem instalar software em /opt, mas não podem modificar ou apagar arquivos 
instalados pelo administrador sem o seu consentimento.
/tmp: Como o nome sugere, o diretório /tmp é disponibilizado para uso de arquivos 
temporários. Esses arquivos costumam ser apagados periodicamente, geralmente 
a cada dez dias.

1.2 ­ O diretório /usr
Depois do diretório raiz, o diretório /usr é a maior seção utilizada no sistema de arquivos. 
Esse diretório contém dados compartilháveis e podem ser montado apenas para leitura. Isso o 
torna altamente capacitado para compartilhamento em rede com sistemas compatíveis com FHS. 
A Figura 3.2 apresenta a árvore de diretórios /usr proposta no FHS. Novamente, itens em itálico 
não precisam existir na árvore, mas se existirem devem estar nesse diretório.
Os   diretórios   /usr/bin   e   /usr/sbin   têm   objetivos   semelhantes  aos   diretórios   /bin   e   /sbin, 
respectivamente. A única diferença é que os comandos disponibilizados em /usr/bin e /usr/sbin são 
considerados como não essenciais à inicialização, manutenção e recuperação do sistema. Isso 
ocorre porque, como o diretório /usr pode ser montado via rede, ele não pode conter aplicativos e 
arquivos desse perfil.

O diretório /usr/lib inclui arquivos objetos, bibliotecas e comandos binários que não são 
disponibilizados   para   serem   executados   diretamente   por   usuários   e   shell   scripts.   As   DLLs   de 
5

suporte   aos   aplicativos   existentes   em   /usr/bin   e   /usr/sbin,   que   já   não   estiverem   em   /lib,   são 
colocadas em /usr/lib. Os arquivos de cabeçalhos C/C++ são colocados no diretório /usr/include ou 
um de seus subdiretórios. Código­fonte de aplicativos não­locais utilizam o diretório /usr/src como 
árvore raiz (incluindo o kernel).
Em /usr/X11R6, encontram­se os arquivos relacionados ao sistema gráfico do UNIX, o X 
Window System, em sua versão 11, release 6. Para facilitar o acesso do usuário, os seguintes links 
devem existir:
/usr/bin/X11 ­> /usr/X11R6/bin
/usr/lib/X11 ­> /usr/X11R6/lib/X11
/usr/include/X11 ­> /usr/X11R6/include/X11
O objetivo da existência desses links é facilitar a transição entre releases do X11. Observe 
que os arquivos de configuração do X11 devem ficar no diretório /etc/X11. O objetivo do diretório 
/usr/share é servir como um repositório de dados readonly independentes de arquitetura. Assim, 
nesse diretório ficam as páginas de manuais (em /usr/share/man), as páginas de informações (em /
usr/share/info).   No   subdiretório   /usr/share/locale,   encontram­se   os   arquivos   de   localização 
(internacionalização do  sistema).  Alguns  ícones  podem  ser  encontrados  em  /usr/share/pixmaps 
ou /usr/share/icons. O diretório /usr/share/fonts é um dos preferidos para instalação de fontes em 
diversos formatos (ex.: TrueType, Type 1 ou Type 3).
A   intenção   do   diretório   /usr/local   é   funcionar   como   uma   hierarquia   para   instalação 
localizada de software. O objetivo de utilizar /usr/local/bin para instalação de aplicativos locais é 
evitar substituir ou atualizar, inadvertidamente, aplicativos em /usr/bin. Entre os subdiretórios de 
/usr/local,   encontram­se:   /usr/local/bin,   /usr/local/sbin,   /usr/local/man,   /usr/local/share, 
/usr/local/include e /usr/local/lib.

1.3 ­ O diretório /var
O   diretório  /var  contém   os   dados   variáveis   do   sistema,   como  cache  de   aplicações, 
arquivos de  spool  e informações de registros (logs). Ele foi pensado dessa maneira para que o 
diretório /usr pudesse ser montado somente para leitura. Todo arquivo que necessita ser escrito 
durante operação do sistema, excluíndo­se instalação e manutenção de software. Em servidores de 
rede,  é  desejável  que  /var  esteja   em uma  partição   separada.  A  Figura  a  seguir  apresenta  a 
árvore de diretórios  /var  proposta no FHS. Como atividade, é deixada tarefa de descobrir para 
que servem esses diretórios.
6

1.4 – Outros diretórios
Em uma seção específica ao Linux, o FHS apresenta detalhes desse padrão aplicáveis
somente  a   esse   sistema  operacional.   A  observação   mais  pertinente  é  a  existência   do  diretório 
/proc. Esse diretório é um sistema de arquivos virtual que armazena informações sobre o kernel 
os   processos   em   execução   e   o   sistema   como   um   todo.   Assim,   por   exemplo,   o   arquivo 
/proc/kcore representa a memória do computador em questão. O arquivo /proc/partitions 
apresenta detalhes sobre as partições dos discos rígidos disponíveis. As interrupções (IRQs) do 
sistema podem ser visualizadas em /proc/interrupts e informações sobre os dispositivos PCI 
ou USB podem ser encontrados, respectivamente, em /proc/pci e /proc/bus/usb/devices. 
Dessa maneira, uma visita aos arquivos desse diretório podem facilitar, e muito, a instalação de 
dispositivos de hardware em Linux.
Ainda, caso o sistema de arquivos usado seja ext2 ou ext3, então, para cada partição existente, 
será criado um diretório /lost+found. Esse diretório, “achados e perdidos”, é utilizado pelo fsck, 
um utilitário de checagem do sistema de arquivos que ali aloca os blocos de arquivos “perdidos”, ou 
seja, i­nodes sem nomes de arquivos.

You might also like