Capítulo 2. Arquivos e Diretórios no Linux

Sistema de Arquivos
Sistema de Arquivos ext3
Trabalhando com Sistema de Arquivos
Sistema de Quotas
Diretórios e Arquivos Importantes
Permissões de Arquivos

Num sistema Linux geralmente temos uma estrutura de diretórios um pouco complexa. Os arquivos ali dispostos, a princípio, parecem estar jogados aleatoriamente nos diversos diretórios existentes. Mas, felizmente, há uma certa ordem e uma lógica fazendo com que cada diretório do sistema tenha uma finalidade específica.

O principal objetivo desta seção é mostrar que os arquivos e diretórios em um sistema Linux estão organizados de forma que cada um tem uma função específica e o conjunto torna o sistema confiável, integrado e seguro.

Sistema de Arquivos

Sistema de arquivos é a forma que o sistema operacional usa para representar determinada informação em um espaço de armazenagem. É o método de identificar e indexar as informações que estão armazenadas em qualquer mídia: disquetes, discos rígidos, drives em memória, CDs, etc.

Quando se prepara um disco para o trabalho através do processo de formatação física, criam-se os meios magnéticos necessários para armazenar os dados. Este processo faz uma preparação do dispositivo de armazenagem para que ele possa receber um sistema de arquivos e futuramente os dados do usuário. Um sistema de arquivos, portanto, é necessário para manter padrões, para controlar o tamanho das partições, permissões de arquivos, tamanho dos arquivos e sua organização, entre muitas outras funções.

Será visto primeiramente quais os principais tipos de sistemas de arquivos que existem e que são criados em um processo de formatação:

  • ext: sistema de arquivos estendido (extended filesystem). É o sistema de arquivos mais utilizado no Linux. Existem ramificações (ext2 e ext3), sendo o ext3 o mais amplamente utilizado pela comunidade Linux atualmente. Ele fornece padrões para arquivos regulares, diretórios, arquivos de dispositivos, links simbólicos e suporte a transações (journalling), entre outras características avançadas.

  • vfat: este é o sistema de arquivos (volume FAT) dos sistemas Windows®9x e Windows NT®.

  • ntfs: este é o sistema de arquivos dos sistemas Windows2000®, Windows XP® e NT®, entre outros.

  • nfs: sistema de arquivos de rede, utilizado para acessar diretórios de máquinas remotas, que permite o compartilhamento de dados na rede.

  • reiserfs: sistema de arquivos com suporte a características como, por exemplo, melhor performance para diretórios muito grandes e suporte a transações (journalling).

  • iso9660: sistema de arquivos do CD-ROM.

  • hpfs: sistema de arquivos do OS/2®.

Existem muitos outros tipos de sistemas de arquivos, dependendo da sua aplicação e de que sistema você precisará. Examine as páginas de manual do arquivo fstab e do comando mount para mais detalhes sobre os vários tipos de sistema de arquivos[2].

Juntamente com o conceito de sistema de arquivos existe o conceito de partição. Particionar um dispositivo é dividi-lo de forma que cada uma das suas partes, denominadas partições, possam receber um tipo de sistema de arquivo e estejam preparadas para receber as informações.

Sistema de arquivos e partições são normalmente confundidos, quando na verdade são conceitos totalmente diferentes. As partições são áreas de armazenamento, criadas durante o processo de particionamento, sendo que cada partição funciona como se fosse um disco rígido (ou dispositivo utilizado). Para se utilizar uma partição, entretanto, deve-se criar um sistema de arquivos, ou seja, um sistema que organize e controle os arquivos e diretórios desta partição. Uma partição só pode ter apenas um sistema de arquivo.

Apesar da diferença, muitas vezes os termos são utilizados de modo similar. Não é uma linguagem totalmente errada, pois é muito utilizada diariamente, mas deve-se ter em mente a diferença entre os termos.

O sistema de arquivos mais importante em um sistema Linux é o sistema de arquivos raiz. Ele geralmente está montado no diretório “/”, também chamado de diretório raiz. Um sistema de arquivos raiz deve conter o necessário para suportar um sistema Linux completo, e para tanto deve incluir alguns requisito básicos:

  • A estrutura básica do sistema de arquivos, geralmente agrupando os diretórios em árvores e obedecendo a alguns padrões.

  • Conjunto mínimo de diretórios: /dev, /proc e /bin, entre outros.

  • Conjunto básico de utilitários e comandos: ls, cp, mv.

  • Conjunto mínimo de arquivos de configuração: rc, inittab, fstab.

  • Arquivos de dispositivo: /dev/hd*, /dev/tty*, /dev/fd0.

  • Bibliotecas que disponibilizem as funções básicas necessárias aos utilitários.

A estrutura dos sistemas de arquivos do Linux prevê um agrupamento que permite maior organização de dados, o que aumenta a funcionalidade do sistema. Os comandos estão todos em uma determinada área, todos os arquivos de dados em uma outra, documentação em uma terceira, e assim por diante. Além disso, o diretório raiz geralmente não contém nenhum arquivo, exceto, em algumas distribuições, pela imagem de inicialização do sistema. Todos os outros arquivos estão em subdiretórios do raiz.

Após esta primeira apresentação, passamos agora a mostrar como é formado o diretório raiz de um sistema Linux. Veja a estrutura básica de diretórios abaixo:

 /bin
 /dev
 /home
 /proc
 /usr
 /boot
 /etc
 /lib
 /var
 /sbin
  • O diretório raiz, representado pela “/”, é específico de cada máquina. Pode ficar tanto em um disco físico quanto na memória da máquina ou em uma unidade de rede. É o diretório principal, que contém todos os arquivos e diretórios do sistema.

  • O diretório /bin é o diretório que contém o mínimo necessário para funcionar e poder ser manuseado pelo administrador. Serão necessárias ferramentas que se encontram em outros diretórios para que a máquina fique operacional. A maioria dos programas possui o seu arquivo executável neste diretório.

  • /dev é o local onde ficam armazenadas as referências aos dispositivos presentes na máquina, para o controle destes dispositivos. Esse diretório contém apontadores para, por exemplo, o drive de disquetes, os discos da máquina, terminais virtuais, portas de acesso seriais e paralelas, etc. Os controladores são automaticamente criados durante a instalação do sistema e posteriormente podem ser criados através do comando MAKEDEV.

  • O diretório /home contém os diretórios pessoais dos usuários e suas configurações.

  • O diretório /proc fornece informações sobre o kernel e sobre os processos que estão rodando no momento, além de informações sobre a utilização de alguns dispositivos. Alguns parâmetros do kernel podem ser alterados diretamente nesses arquivos, fazendo com que as modificações passem a valer imediatamente. Esse diretório não ocupa espaço nenhum em disco e as informações ali presentes são geradas apenas quando solicitadas.

  • O diretório /usr contém comandos, bibliotecas, programas, páginas de manual e outros arquivos que não mudam mas que se fazem necessários para a operação normal do sistema. Como são estáticos, é interessante compartilhar esses arquivos pela rede, o que resulta numa grande economia de espaço em disco utilizado.

  • O diretório /boot contém informações para o gerenciador de inicialização do sistema. É aqui que normalmente fica o arquivo contendo o kernel da máquina e informações para o carregador do sistema operacional.

  • /etc é um dos mais importantes diretórios da máquina. Nele ficam a maioria dos arquivos de configuração e manipulação dos serviços essenciais ao sistema, a maioria dos arquivos de configuração de acesso a rede e de comunicação, arquivos de configuração do Sistema de Janelas X[3], arquivos de configuração do idioma do sistema, de atualizações, enfim, de muitas funcionalidades da máquina.

  • /lib é o diretório onde ficam as bibliotecas básicas do sistema. Elas são compartilhadas por diversos programas, principalmente os que se encontram no diretório raiz.

  • O diretório /var contém arquivos que possuem dados variáveis. Neste diretório estão arquivos e diretórios de spool, arquivos de log, arquivos de configuração de correio eletrônico e de news, entre outros.

  • /sbin contém ferramentas de interesse do superusuário e que geralmente são usadas por serviços básicos da máquina. Ficam nesse diretório programas como os responsáveis pela carga de módulos do kernel, ativação e interrupção das interfaces de rede, manutenção dos sistemas de arquivos e outras atividades.

Existem, além destes, alguns diretórios que também são importantes para a complementação da funcionalidade do sistema, e estão presentes em praticamente todos os sistemas Linux, apesar de não serem estritamente obrigatórios. São eles:

  • O diretório /mnt é o diretório utilizado para o acesso a dispositivos de mídia, como disquetes e CD-ROM. Ele é utilizado como ponto de montagem para a maioria destes dispositivos.

  • O diretório /tmp serve como repositório para arquivos temporários, sendo utilizado para programas que são executados após a ativação do sistema, ou seja, este diretório serve como espaço extra para vários programas e aplicações.

  • Alguns programas são projetados para serem instalados sob o diretório /opt. Ele pode ser útil por questões de espaço.

Apesar das diferentes partes acima serem chamadas de diretórios, não há obrigatoriedade que elas estejam separadas. Elas podem estar facilmente no mesmo sistema de arquivos em uma pequena máquina utilizada por um único usuário que deseje mantê-las de uma forma mais simplificada.

Alguns destes diretórios podem ser montados em suas próprias partições. Suponha que, por questões de espaço ou segurança, é desejável que o diretório dos usuários esteja em uma outra partição. Então, é criada uma outra partição que será montada no diretório /home e que terá, por exemplo, o mesmo sistema de arquivos utilizado pelo sistema de arquivos raiz. Essa separação em um sistema de arquivos à parte é interessante pois facilita determinadas tarefas administrativas como gerenciamento da quantidade de espaço que cada usuário pode utilizar e a manutenção de cópias de segurança[4].

Portanto, a árvore de diretórios pode estar dividida ainda em diferentes sistemas de arquivos, dependendo do tamanho de cada disco e de quanto espaço será alocado para cada finalidade.

Sistema de Arquivos ext3

O Conectiva Linux pode ser instalado sobre um sistema de arquivos ext3. Esse sistema é semelhante ao ext2, porém utiliza o sistema de journalling de dados. O journalling divide a fase de escrita dos dados em duas partes: Agendamento e Escrita. Essa estrutura permite que, em caso de desligamento acidental do sistema, não seja necessário executar um fsck no disco (o que pode demorar muito tempo dependendo do tamanho do seu sistema de arquivos).

Caso ocorra uma interrupção inesperada do sistema, por exemplo, uma queda de luz, durante a fase de “agendamento”, o arquivo não é atualizado, continuando intacto. Caso esse problema ocorra durante a fase de escrita, o sistema possui a agenda (journal) na qual estão os dados necessários para fazer as alterações no arquivo.

O fato do sistema escrever várias vezes a mesma alteração em arquivos, não torna a operação lenta, pois ele também otimiza o movimento das cabeças do disco rígido.

O usuário que já possui o Conectiva Linux e o sistema de arquivos ext2 instalado pode facilmente convertê-lo para o ext3. Para fazê-lo, proceda da seguinte maneira:

Converta o sistema de arquivos de ext2 para ext3 utilizando o comando tune2fs:

# tune2fs -j /dev/hdxx

Deve-se também alterar o sistema de arquivos no arquivo /etc/fstab. Para isso, altere a linha:

/dev/hdxx  /  ext2    defaults     1      1

para:

/dev/hdxx  /  ext3    defaults     1      1

Depois de ter alterado o arquivo /etc/fstab, execute o comando mkinitrd como mostrado abaixo:

# mkinitrd /boot/initrd-versao_kernel.img versão_kernel

O arquivo de configuração do gerenciador de inicialização deve ser alterado para que utilize o initrd criado. No caso do Grub, o arquivo de configuração fica em /boot/grub/menu.lst. Abaixo da linha que indica o kernel a ser utilizado durante a inicialização, acrescente a seguinte linha:

initrd = (hdx,1);/initrd-versão.img

Depois de ter realizado todos os passos descritos acima, reinicie a máquina para que o sistema reconheça o ext3.

Trabalhando com Sistema de Arquivos

Durante o processo de instalação de um sistema Linux, um sistema de arquivos é escolhido para cada partição especificada. Se for necessária alguma mudança ou atualização, será possível executá-la pelo menu Sistema -> Sistema de Arquivos de Disco e de Rede do Webmin. Nesta tela, você pode visualizar todos os pontos de montagem disponíveis no sistema, com informações sobre o tipo de sistema de arquivos montado, a localização do diretório no servidor e se está em uso ou não.

Para adicionar um ponto de montagem, selecione o tipo do sistema de arquivos na lista Tipo e clique no botão Adicionar Montagem. Veja a Figura 2.1. Configurando Sistemas de Arquivos Locais, que mostra como configurar um sistema de arquivos ext3 para uma partição local.

Configurando Sistemas de Arquivos Locais

Figura 2.1. Configurando Sistemas de Arquivos Locais

As opções da aba Detalhes de montagem estão descritas abaixo:

Montado como: diretório criado, onde o dispositivo deve ser montado;

Salvar Montagem?: indique aqui se o ponto de montagem deve ser salvo no arquivo /etc/fstab e se deve ser iniciado ou não no boot do sistema; o indicado é marcar a opção Monta e salva no boot;

Montar agora?: caso deseje montar imediatamente o dispositivo, assinale a opção Montar;

Checar sistema de arquivos no boot?: marque esta opção para permitir que o sistema operacional faça uma verificação (por blocos defeituosos) no sistema de arquivos na inicialização do sistema;

Novo sistema de arquivos nativo do Linux: escolha o tipo de dispositivo que deseja criar, caso o selecionado anteriormente não esteja de acordo com suas necessidades.

As opções da aba Opções avançadas de montagem são obrigatórias somente se alguma configuração extra for necessária (por exemplo, o uso de quotas), e são bastante intuitivas. Para finalizar a criação do ponto de montagem, clique no botão Criar no final da página.

Para editar um ponto de montagem, basta clicar sobre o pontos de montagem na tela de Sistema de arquivos e de rede. Você pode observar onde a partição está localizada, qual seu tipo, onde o dispositivo está localizado, se está em uso (montado atualmente) e se deve ficar permanentemente montado. Ao clicar sobre o ponto de montagem, uma tela parecida com a Figura 2.1. Configurando Sistemas de Arquivos Locais será mostrada.

Para configurar sistemas de arquivos de rede (NFS), o local para a configuração é o mesmo que para a configuração de sistema de arquivos locais; a diferença é que existem os campos referentes ao servidor remoto (NFS Hostname e Diretório NFS); o procedimento a ser seguido é o mesmo utilizado para dispositivos locais, bastando ter as informações sobre a rede e os pontos de montagem.

Sistema de Quotas

Um sistema de arquivos também pode trabalhar com quotas. Um sistema de quotas define limites de uso do disco para usuários e seus programas. Os usuários são forçados a permanecer sob seu limite de consumo de disco, tirando deles a habilidade de consumir de forma ilimitada o espaço em disco do sistema. A quota é gerenciada seguindo uma base por usuário e por sistema de arquivo. Se existe mais de um sistema de arquivo onde um usuário pode criar arquivo, então a quota tem de ser estabelecida para cada sistema de arquivo separadamente.

É possível configurar o sistema de quotas através do Webmin. Primeiramente, deve-se habilitar a partição para que o sistema de quotas seja configurado, bastando editar a partição () e assinalar a alternativa correta para a opção Usar quotas? (quotas por grupo, usuário ou para ambos), salvando a configuração em seguida. Feito isso, a partição já está habilitada para a configuração de quotas.

Acesse o menu Sistema -> Quotas de disco. Clique na ação Habilitar quotas para o dispositivo no qual se deseja aplicar o sistema de quotas; neste momento, a edição de quotas para este sistema de arquivos já está habilitada.

Para editar quota por usuário, insira o nome do usuário no campo ao lado do botão Editar Quotas do Usuário (ou clique no botão com os 3 pontinhos para selecioná-lo), e em seguida pressione o botão para edição. Será apresentada uma tela com todos os sistemas de arquivos onde se pode configurar a quota para aquele usuário. Selecione o sistema de arquivos na parte inferior da tela em clique em Edita Quota em:. Observe a Figura 2.2. Configurando o Sistema de Quotas que exibe esta tela.

Configurando o Sistema de Quotas

Figura 2.2. Configurando o Sistema de Quotas

Os limites de espaço para software, hardware e para arquivos devem ser preenchidos em kilobytes, conforme indicado. Para finalizar, basta clicar em Atualiza.

[Tip]Dica

Para configurar a mesma quota para vários usuários de uma vez, basta configurar a quota para um usuário, e na página de visualização clicar em Copiar Quotas, onde você poderá selecionar os usuários para os quais deseja aplicar a quota já configurada para o usuário anterior. Isto é útil para servidores, onde a quota por usuário vai ser a mesma para todos.

O botão de configuração de quotas para grupos está na mesma página de edição de quotas, e segue o mesmo padrão de configuração exibido para quotas de usuários.



[2] man mount e man fstab em uma linha de comando.

[3] X Windows System.

[4] Backups.