Índice das dicas

Entendendo os diretórios de sistema no Linux

Por Carlos E. Morimoto em 11 de janeiro de 2009 às 15h20

27

O primeiro choque para quem está chegando agora é a estrutura de diretórios do Linux, que não lembra em nada o que temos no Windows. No Windows temos os arquivos do sistema concentrados nas pastas "Windows" e "Arquivos de programas", e você pode criar e organizar suas pastas da forma que quiser. No Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório "/home". Naturalmente, é possível ajustar as permissões de uma maneira que você possa salvar arquivos em outros locais, mas isso nem sempre é uma boa idéia.

A primeira coisa com que você precisa se habituar é que no Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado diretório raiz ou simplesmente "/".

Dentro deste diretório temos não apenas todos arquivos e as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos, formando a estrutura que você vê no gerenciador de arquivos:

O diretório "/bin" armazena os executáveis de alguns comandos básicos do sistema, como o su, tar, cat, rm, pwd, etc., um conjunto que na maioria das distribuições ocupa de 6 a 8 MB, pouca coisa. O principal motivo de eles ficarem separados dos outros executáveis do sistema (que vão dentro da pasta /usr) é permitir que eles continuarem acessíveis desde o início do boot, mesmo que você resolva armazená-la em um diretório separado.

Ele é complementado pelo diretório "/sbin", que tem a mesma função básica, mas se diferencia por armazenar aplicativos que podem ser usados apenas pelo root, como, por exemplo, o "adduser", que permite criar novos usuários.

A maior parte dos aplicativos e outros componentes ficam instalados dentro do diretório /usr (de "Unix System Resources", ou recursos de sistema Unix). Este é de longe o diretório com mais arquivos em qualquer distribuição Linux, pois é aqui que ficam os executáveis e bibliotecas de todos os principais programas instalados:

A pasta "/usr/bin" (bin de binário), por exemplo, armazena cerca de 2.000 programas e atalhos para programas em uma instalação típica do sistema. Como os executáveis de quase todos os programas instalados são armazenados nela, o número só faz crescer conforme você instala novos pacotes.

Outro diretório com um enorme volume de arquivos é o "/usr/lib", onde ficam armazenadas bibliotecas usadas pelos programas. A função destas bibliotecas lembra um pouco a dos arquivos .dll no Windows. As bibliotecas com extensão ".a" são bibliotecas estáticas, que fazem parte de um programa específico, enquanto as terminadas em ".so.versão" (xxx.so.1, yyy.so.3, etc.) são bibliotecas compartilhadas, usadas por vários programas. Elas são gerenciadas de maneira automática pelo gerenciador de pacotes; quando uma biblioteca é atualizada, por exemplo, são deixados links apontando para a nova versão, o que permite que os aplicativos que utilizavam o arquivos antigo continuem funcionando.

Outras pastas dignas de nota são a "/usr/local", que é reservada a programas e scripts que você instalar manualmente; a "/usr/sbin", que é reservada a executáveis que podem ser usados apenas pelo root (similar à pasta "/sbin") e a "/usr/src", que é usada para armazenar o código fonte de programas e também o código fonte do kernel (caso disponível). A pasta "/usr/X11R6" era originalmente destinada a armazenar os componentes do X, responsável pelo ambiente gráfico, mas ela está caindo em desuso.

Subindo de novo, a pasta "/boot" armazena o kernel e alguns arquivos usados na fase inicial do boot. Como pode imaginar, ele é o primeiro componente carregado pelo gerenciador de boot durante a inicialização do sistema.

Logo a seguir temos o diretório "/dev", que é de longe o exemplo mais exótico de estrutura de diretório no Linux. Todos os arquivos contidos aqui, como, por exemplo, "/dev/sda", "/dev/dsp", "/dev/modem", etc., não são arquivos armazenados no HD, mas sim ponteiros para dispositivos de hardware. Por exemplo, o "arquivo" "/dev/mouse" contém as informações enviadas pelo mouse, enquanto o "/dev/dsp" permite acessar a placa de som. Esta organização visa facilitar a vida dos programadores, que podem acessar o hardware do micro simplesmente fazendo seus programas lerem e gravarem em arquivos, deixando que o kernel se encarregue da parte complicada.

Ele é complementado pelo diretório "/proc", que não armazena arquivos, mas sim informações sobre o hardware e sobre a configuração do sistema. Estas informações são usadas por utilitários de detecção e configuração do sistema, mas podem ser úteis também quando você quer checar alguma configuração manualmente. O comando "cat /proc/net/dev" mostra informações sobre as interfaces de rede, o "cat /proc/cpuinfo" mostra informações sobre o processador e assim por diante.

O diretório "/etc" concentra os arquivos de configuração do sistema, substituindo de certa forma o registro do Windows. A vantagem é que enquanto o registro é uma espécie de caixa preta, os scripts e arquivos de configuração do diretório "/etc" são desenvolvidos justamente para facilitar a edição manual. É verdade que na maioria dos casos isto não é necessário, graças aos vários utilitários de configuração disponíveis, mas a possibilidade continua disponível.

Os arquivos recebem o nome dos programas seguidos geralmente da extensão .conf. Por exemplo, o arquivo de configuração do servidor DHCP (que pode ser configurado para atribuir endereços IP aos outros micros da rede) é o "/etc/dhcpd.conf", enquanto o do servidor FTP é o "/etc/proftpd.conf". Claro, ao contrário do registro do Windows, os arquivos do "/etc" não se corrompem sozinhos e é fácil fazer cópias de segurança caso necessário. Falarei mais sobre ele no capítulo sobre o Slackware, onde o principal objetivo é justamente mostrar como configurar o sistema manualmente.

Concluindo, o diretório "/mnt" (de "mount") recebe este nome justamente por servir de ponto de montagem para o drive óptico ("/mnt/cdrom" ou "/mnt/dvd") e outros dispositivos de armazenamento. Na maioria das distribuições atuais ele é substituído pelo diretório "/media", que tem a mesma função. Ao plugar um pendrive no Ubuntu, por exemplo, ele é montado pelo sistema na pasta "/media/disk", ao plugar um cartão de memória ele é visto como "/media/card" e assim por diante.

Na verdade, o uso do diretório "/media" ou "/mnt" é apenas uma convenção. Você pode perfeitamente montar o seu pendrive dentro da pasta "/home/fulano/pendrive", por exemplo, desde que faça a montagem de forma manual. Os diretórios padrão de montagem das partições são configuráveis através do "/etc/fstab", que é um dos arquivos básicos de configuração do sistema.

27 comentáriosPor Carlos E. Morimoto. Revisado 23 de março de 2011 às 11h23

Comentários

Muito bom a dica.
por kovalevsky (anônimo) em 29 de dezembro de 2011 às 08h23
Carlos, obrigada pela ista informacoe. Fica otima e pra mim é uma das melhores explicacoes que acho no portugues. Bola pra frente.
 
por daniel gv (anônimo) em 22 de fevereiro de 2010 às 22h28
ahh...por favor ....dêem respostas mais curtas.
mas ...ta muito bom...
parabens
Ainda reclama? por Fabiano Vasconcelos (anônimo)
 
por Phiron (anônimo) em 17 de novembro de 2009 às 17h22
Eu gostei muito do tópico e coloco ele como link sempre que alguém tem dúvida a respeito do assunto, mas eu senti falta de uma explicação à /var.
 
por Paulo (anônimo) em 12 de agosto de 2009 às 22h27
Parabéns kara.. Muito bom! Justamente o que eu procurava, me esclareceu muito sobre os diretórios do Linux. Obrigado!!!
 
por Bender (anônimo) em 18 de julho de 2009 às 13h26
É Verdadeiramente falta alguns diretórios que deveriam estar aí, mas quem sabe em uma próxima, mas o
/srv é: Diretório destinado à centralização de serviços como em um servidor de arquivos ou servidor de

páginas web por exemplo
.
/selinux:("Security-Enhanced Linux") é uma implementação de uma flexível e refinada arquitetura MAC ("Mandatory Access Control"). SELinux provê uma política de segurança sobre todos os processos e objetos do sistema baseando suas decisões em etiquetas contendo uma variedade de informações relevantes à segurança. A lógica da política de tomada de decisões é encapsulada dentro de um simples componente conhecido como servidor de segurança ("security server") com uma interface geral de segurança
/opt: Diretório destinado à instalação de binários pré-compilados e programas proprietários
 
por Jotace (anônimo) em 11 de junho de 2009 às 10h31
Muito bom, excelente! Parabéns pela explicação sintética e precisa!
 
por Ricardo Tweeg (anônimo) em 16 de março de 2009 às 20h53
Boa noite Morimoto,

Em uma futura atualização desse assunto, você poderia incluir também alguma coisa sobres os novos diretórios "srv, sys" e também do antigo mas ainda presente "opt"...?

Obrigado por todo trabalho feito até o momento.
Realmente você já virou uma referência em Linux pela grande ajuda que presta a todos.

abraços
 
por junior (anônimo) em 17 de janeiro de 2009 às 23h22
Ótimo ver que cada vez mais o Linux está se preocupando com os usuários "comuns" e se tornando mais simples graças a comunidade.
Ainda há de chegar o dia em que usá-lo não será algo visto como coisa de CDF em informática.
 
por Eltern (anônimo) em 17 de janeiro de 2009 às 20h03
Muito bom, obrigado. Os aprendizes daqui, agradecem!
 
por Rodrigo Dall'Alba (anônimo) em 17 de janeiro de 2009 às 14h44
Ea "/sys"? Até hoje não achei referência nenhuma, parece que ninguém sabe pra que serve.