Revista Do Linux
EDIÇÃO DO MÊS
 Gráficos
 Comandos Avançados
 Portáteis

 Capa
 Entrevista
 CD
 Distro
 GNU
 Evento
 Depoimento
 Programação

 

Todos os segredos estão no /etc

Nem todos querem "escovar os bits" e conhecer a fundo a configuração do Linux. Mas os que desejam saber como um sistema operacional funciona encontram no Linux uma excelente ferramenta de aprendizado

Nem todos os usuários querem ou têm paciência para configurar o sistema "na mão". Por isso, distribuições como Red Hat, SuSE e Mandrake possuem scripts de configuração para console e front-ends gráficos para desempenhar essas tarefas. Mas ainda sofremos pela falta de padrões: se eu mudar do Red Hat para o Slackware, por exemplo, fico sem o sndconfig.

O Linux de maneira geral possui arquivos de configuração editáveis em texto puro. O que esses scripts e frontends fazem é criar uma interface mais amigável para os usuários menos experientes (ou preguiçosos, como eu...). Mas temos a considerar os seguintes pontos:
1. As ferramentas gráficas, por questão de praticidade, oferecem ao usuário as funcionalidades mais importantes do serviço que se quer configurar. Normalmente, é possível configurar com as ferramentas gráficas de oitenta a noventa por cento dos recursos daquele serviço. Entretanto, todo o potencial do recurso só pode ser bem explorado se algumas opções não disponíveis no configurador também puderem ser ajustadas.
2. Usando os configuradores gráficos, o usuário perde a excelente oportunidade de aprender mais sobre o sistema. Nem todos querem "escovar os bits" e conhecer a fundo a configuração do Linux. Mas os que desejam conhecer como um sistema operacional funciona encontram no Linux uma excelente ferramenta de aprendizado.

Para satisfazer a todos os que querem se aprofundar nos mistérios do Linux, iniciamos aqui uma série de artigos sobre o /etc, diretório-chave para configuração do nosso pingüim. Propositadamente, não vamos colocar exemplos dos arquivos de inicialização neste artigo, para forçar o leitor a verificá-los em seu próprio sistema. Então, boa leitura e bom divertimento!

Medidas para organizar o caos

Quem já instalou um programa em um sistema rodando Windows sabe que não há um padrão (a palavra "caos" me vem à cabeça...). Os programas de instalação são diferentes entre si e criam diretórios indiscriminadamente, e normalmente espalham DLLs por todo o sistema, apesar de o C:\WINDOWS\SYSTEM ser o lugar apropriado para elas. Desinstalar um software "na mão" em um sistema desses pode se transformar numa tarefa hercúlea, e mesmo que o programa possua um "desinstalador", algum arquivo pode ficar para trás. Além disso, para inicialização do sistema, são lidos arquivos que estão no C:\, no C:\WINDOWS, etc. Sem contar o registro: quantos de nós conseguimos entender direito aquela coisa?

Enquanto isso, o padrão UNIX, que vem sendo aprimorado há trinta anos, desde o começo nos deu uma solução elegante para organizar a distribuição dos arquivos. De fato, os binários executáveis possuem diretórios-padrão onde devem ficar (/bin e /usr/bin, por exemplo), a documentação fica sempre em /usr/doc e /usr/share/doc, os manuais on-line (man pages) estão em /usr/man, e assim por diante.

A organização hierárquica dos diretórios no Linux é assunto para um futuro artigo, mas vamos nos ater a um diretório dos mais importantes. Se considerarmos o kernel como coração do sistema, podemos dizer que o /etc é parte do seu sistema nervoso.

O kernel e quase todos os programas guardam no /etc seus arquivos de configuração e inicialização (e os programas que não o fazem estão fora do padrão!!!). Listando o conteúdo de /etc, podemos contar mais de 230 arquivos. Dominar a configuração dos arquivos mais importantes significa dominar a configuração do Linux.

Iluminação

Como na mitologia grega, quando Prometeu roubou o fogo do Olimpo e o entregou aos homens, assim também tentaremos levar ao leitor um pouco de luz sobre os mistérios contidos num aparentemente inofensivo diretório. O conhecimento do fogo deu aos homens uma considerável independência da vontade dos deuses.

Utilizando a mesma alegoria, podemos dizer que o "fogo" escondido no /etc dará ao administrador de sistemas Linux um poder e independência muito grandes. Vamos aos fatos!

O padrão a ser seguido para a árvore do /etc está descrito no documento Filesystem Hierarchy Standard (FHS), que por sua vez é parte do Linux Standard Base (LSB), padrão que deve ser seguido por todas as distribuições se quisermos um dia obter compatibilidade total entre elas. A árvore de diretórios completa do FHS é mostrada no quadro na próxima página.

Por uma questão de clareza, omitimos tudo abaixo dos shares e dos mans. Como podemos notar, o FHS ainda é omisso quanto à organização de diretórios abaixo do /etc. Segundo o texto do FHS, alguns arquivos são obrigatórios, mas pouco ou nada se fala a respeito dos arquivos de inicialização de runlevel (o diretório rc.d) e dos scripts de inicialização dos serviços (o diretório init.d). Como veremos mais adiante, a maior fonte de incompatibilidades entre as versões reside nesse "detalhe".

Configuração geral

Os arquivos de configuração geral, normatizados pelo FHS, estão relacionados abaixo, com uma explicação sucinta sobre os serviços que cada um configura. Logicamente, perto da absurda quantidade de arquivos presente no /etc das distribuições modernas, esses 37 arquivos podem parecer pouco. Mas não se engane: são os mais importantes na configuração do seu Linux. Em futuros artigos, descreveremos cada um deles em detalhes, com exemplos de como configurá-los.
adjtime - fator de correção para o real time clock do seu computador. Como os RTCs são normalmente imprecisos (mesmo em máquinas caras), o Linux oferece uma maneira fácil de corrigir o relógio do sistema. Mais informações sobre esse arquivo estão disponíveis no Clock Mini-HOWTO.
confissue - contém a tela inicial que é mostrada durante o login em modo texto. Normalmente é aquele pingüim colorido, ou aquelas ASCII art um pouco estranhas. Algumas distribuições modernas utilizam os arquivos issue e issue.net em vez de confissue.
csh.login - arquivo de configuração do interpretador de comandos tcsh. Este arquivo é lido durante o login por todos os usuários quando utilizam esse shell.
disktab - arquivo descritor de mídias. Não é usado no Linux, uma vez que os dispositivos já estão criados no /dev.
fdprm - floppy disk parameter table. Tabela que descreve os formatos de disco a ser lidos pelo drive. Você pode configurar esses arquivos para tentar ler seus velhos disquetes de 5 1/4'' do Apple ou do TRS-80...
fstab - descritor de todos os sistemas de arquivos que podem ser montados. Define os pontos de montagem, modos de montagem e permissões.
gettydefs - este arquivo contém definições de inicialização e finalização para cada uma das saídas seriais utilizadas pelos terminais burros conectados à sua máquina Linux.
group - arquivo que abriga as definições de grupo.
inittab - chama os scripts de inicialização durante o boot do Linux. É o primeiro arquivo lido pelo sistema.
ld.so.conf - lista os caminhos para as bibliotecas compartilhadas (shared libraries) do sistema. É usado pelo processo ldconfig para criar o cache e os links que o run-time linker ld.so necessita.
lilo.conf - contém as configurações do LILO. Outros Boot Loaders (como o GRUB) ainda não foram normatizados pelo FHS.
motd - a sigla motd significa "message of the day" (mensagem do dia). Seu conteúdo é exibido após o login. Em sistemas com muitos usuários, este arquivo é utilizado para mandar mensagens a todos os usuários, pois requer muito menos espaço em disco do que enviar e-mail para todos os usuários. Pode-se ainda ecoar o fortune para ele, e ter uma mensagem aleatória sempre que se faz login.
mtab - como já vimos, fstab é um arquivo de configuração, o sistema não escreve nele, só o lê. O mtab, por outro lado, é um arquivo de controle onde o sistema grava as informações sobre os sistemas de arquivos atualmente montados. Não mexa nele!
mtools - o pacote mtools utiliza este arquivo para suas configurações. Em algumas implementações mais novas do pacote, é possível que o nome do arquivo tenha sido mudado para mtools.conf.
passwd - arquivo de senhas e informações de login de cada usuário. Caso se use shadow password em seu sistema, as senhas criptografadas estão no arquivo shadow.
profile - arquivo que inicializa as variáveis de ambiente e programas durante o login. Este arquivo abriga as configurações para todos os usuários. Apesar de não ser padrão do FHS, a maioria das distribuições utiliza um segundo arquivo, bashrc, para configuração de aliases e funções. A SuSE possui ainda os arquivos profile.local (não se deve mexer no profile, apenas no profile.local) e profile.dos. Os arquivos para configuração individual estão no /home de cada usuário.

securetty - lista os terminais (ttys) nos quais o root pode acessar o sistema.

shadow - as senhas criptografadas

relacionadas no arquivo passwd

estão aqui.

shells - contém os caminhos completos dos shells de login válidos. Esse arquivo é consultado pelo chsh e fica disponível para consulta por outros programas. Alguns programas consultam este arquivo para descobrir se o usuário existe. Por exemplo, daemons

de ftp tradicionalmente rejeitam

acesso de usuários com interpretadores de comando não incluídos neste arquivo.

syslog.conf - principal arquivo de

configuração do syslogd, que é o

daemon que armazena as mensagens de sistema. O syslog.conf determina

as regras para seleção das mensagens

a armazenar.

ttytype - dispositivo de terminal para mapeamento-padrão do tipo de terminal. Pouco usado atualmente, configura os tipos de terminal utilizados em cada linha serial.

Configuração de rede

Os arquivos de configuração dos serviços de rede normatizados pelo FHS são os seguintes:

exports - se você roda um servidor NFS, este arquivo é usado para informar os diretórios que serão compartilhados na rede.

ftpusers - lista os usuários autorizados a fazer ftp em sua máquina, caso algum servidor ftp esteja rodando. Note que este é o único arquivo de ftp normalizado pelo FHS. Outros arquivos eventualmente presentes em seu sistema são de propriedade do aplicativo de ftp que o sistema utiliza.

gateways - arquivo utilizado pelo

daemon routed para definição de

roteamento.

host.conf - configura a ordem de procura dos nomes de máquina. Normalmente, é configurado para procurar

no DNS, no BIND e no arquivo hosts.

hosts - arquivo que lista os hosts (máquinas da rede) conhecidos. É usado como substituto ou mesmo em paralelo a um servidor DNS externo.

hosts.allow - define os nomes das

máquinas que podem se utilizar dos

serviços de rede servidos por esta

máquina.

hosts.deny - em contraponto ao hosts.allow, este arquivo lista os computadores que estão bloqueados para os serviços desta máquina.

hosts.equiv - listagem de máquinas

e usuários que são confiáveis para

rodar os "r-comandos". O arquivo hosts.equiv permite ou proíbe máquinas e usuários de usar os r-comandos (por exemplo, rlogin, rsh ou rcp) sem fornecer uma senha.

hosts.lpd - nomes das máquinas

que podem acessar o daemon de

impressão lpd.

inetd.conf - descreve e configura os serviços que serão mantidos pelo servidor INETD. São esses mesmos serviços que são permitidos (ou bloqueados) por hosts.allow e hosts.deny.

networks - lista nomes e endereços

de redes conhecidas. Utilizado pelo comando routed. Permite que sejam dados nomes a redes. Alguns Linuxes não possuem esse arquivo.

printcap - arquivo de configuração de serviços de impressão. Sua impressora é configurada aqui.

protocols - Este arquivo é um

arquivo ASCII, descrevendo os vários protocolos internet DARPA que estão disponíveis para o subsistema TCP/IP. Ele pode ser consultado em vez de usar os números nos arquivos ARPA incluídos ou, mesmo que da pior forma, adivinhá-los. Esses números irão ocorrer no campo protocolo de qualquer cabeçalho ip. NÃO MEXA

NESSE ARQUIVO! Se quiser vê-lo, use o cat ou o less, não o abra com editores de texto.

resolv.conf - arquivo que aponta para um ou mais servidores DNS.

rpc - os serviços RPC (Remote Procedure Calls) são a implementação de serviços no modelo cliente-servidor para Unix desenvolvidos pela Sun

Microsystems. Os serviços RPC são identificados por números, e o arquivo

/rtc/rpc mapeia os nomes dos serviços com os números dos programas.

services - lista as portas dos serviços de rede. Segue as recomendações da IANA (RCF1700).

Procure encontrar e visualizar

esses arquivos em seu Linux. Alguns deles podem ter sua sintaxe colorizada se você utilizar o vi. Cuidado!

Alguns arquivos (como o services e

o mtab) não devem ter seu conteúdo alterado! Se não se sentir seguro,

utilize visualizadores como o cat ou

o less.

Na próxima edição falaremos sobre as diferenças entre o /etc de várias distribuições. Até lá!

Para saber mais

The Linux Standard Base

www.linuxbase.org

Unix File System Standard (Filesystem Hierarchy Standard)

www.pathname.com/fhs

How to build a minimal Linux system from source code de Greg O’Keffe

www.netspace.net.au/~gok/power2bash

Linux From Scratch de Gerard Beekmans

www.linuxfromscratch.org

Unix and Internet Fundamentals de Eric Raymond

www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO.html

Guia Foca GNU/Linux de Gleydson Mazioli da Sila

www.metainfo.org/focalinux

The Linux Manual de Hugo Cisneiros

tlm.conectiva.com.br

Running Linux de Matt Welsh e Lar Kaufman — O’Reilly - ISBN 85-7993-018-7

www.oreilly.com

Man pages dos arquivos listados

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux