Todos os segredos estão no /etc...
Continuando nossa jornada pelo
/etc, veremos, a partir desta edição, os detalhes de
cada um dos arquivos. Neste mês, nossas atenções
se voltam para a tabela de pontos de montagem (fstab) e o gerenciador
de serviços agendados (cron)
Como vimos nas edições anteriores, o /etc guarda os
arquivos de configuração do próprio Linux e de
diversos serviços. Falar sobre tudo o que está no /etc
tomaria todas as páginas de várias
edições, mesmo porque há algumas
diferenças entre as distribuições. Procuraremos,
então, apresentar os arquivos essenciais ao Linux em si,
deixando por último serviços mais específicos,
como rede, Internet, bancos de dados e
inicialização.
Novamente sugerimos que o leitor acompanhe este artigo consultando
os arquivos do seu Linux. Assim poderá ter uma idéia
clara do que ocorre em sua máquina.
fstab e mtab
O fstab é um descritor de todos os sistemas de arquivos que
podem ser montados. Além de definir os dispositivos a ser
montados e seus pontos de montagem, também define quem pode
montá-lo, se deve ser montado na inicialização ou
não, quais os parâmetros para montagem etc. Com uma
sintaxe simples, o fstab é facilmente entendido por qualquer
operador.
Mas como montamos um dispositivo? Bem, imagine que você vai
montar um CD-ROM no seu drive de CDs. Para tanto, você pode
lançar o seguinte comando:
# mount /dev/hdb1 /mnt/cdrom -t iso9660
Com isso foi informado ao comando mount o dispositivo que
queríamos montar (/dev/hdb1, que na maioria dos casos é
a unidade de CD); o ponto de montagem, que é o diretório
do seu sistema de arquivos onde o conteúdo do CD vai estar
(/mnt/cdrom); e, com a opção -t, o sistema de arquivos a
ser usado (no caso ISO9660, que é o sistema de arquivos dos
CD-ROMs). Mas é uma sintaxe complicada, não? Além
disso, o mount por default é uma operação
exclusiva do superusuário, isto é, se um usuário
comum tentar usar esse comando receberá a mensagem
"operação exclusiva do root" ou "only
root can do that".
Se dentro do fstab houver uma linha assim:
/dev/hdb1 /mnt/cdrom iso9660 user,noauto 00
bastará escrever o comando
# mount /mnt/cdrom
e o CD estará montado!
Vamos examinar os campos desse arquivo, e o leitor verá que
é extremamente fácil configurar todo o seu sistema de
arquivos.
O primeiro campo descreve um dispositivo especial de blocos ou um
sistema de arquivos remoto. Além dos dispositivos tradicionais,
como hda, hdb, hdc para discos IDE, fd para disquetes, e sda, sdb, sdc
para dispositivos SCSI, podem-se montar ainda sistemas de arquivos de
outras máquinas compartilhados por NFS. No caso anterior, era o
segundo dispositivo IDE, o /dev/hdb.
O segundo campo indica o ponto de montagem. No nosso exemplo, o
conteúdo do CD-ROM será montado em /mnt/cdrom.
O terceiro campo indica o tipo do sistema de arquivos. Os tipos
suportados são minix, ext, ext2, xiafs, msdos, vfat, umsdos,
hpfs, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix, coherent, proc,
nfs, iso9660 e swap. Em um artigo futuro falaremos sobre os sistemas
de arquivos.
O quarto campo merece atenção. Indica a lista de
opções para aquele ponto de montagem. No nosso exemplo,
usamos a opção user, que indica que qualquer
usuário (e não apenas o root) pode montar o dispositivo.
A opção noauto indica que o dispositivo não
é montado durante a inicialização. Sucintamente,
as opções mais usadas são:
auto indica que o sistema pode ser montado durante a inicialização ou com o comando mount -a.
noauto ao contrário da opção anterior, o sistema só pode ser montado explicitamente, e é ignorado pelo mount -a.
user indica que qualquer usuário pode montar aquele dispositivo.
nouser indica que apenas o superusuário pode montar o dispositivo.
ro monta o sistema de arquivos apenas para leitura.
rw monta o sistema de arquivos com leitura e gravação liberadas.
defaults usa opções-padrão rw, suid, dev, exec, auto, nouser e async.
Para mais informações sobre as opções
de montagem, consulte a man page do comando mount.
O quinto e o sexto campos são flags para os comandos dump e
fsck, respectivamente, e indicam as prioridades para que aquele
sistema de arquivos seja verificado periodicamente com esses comandos.
O valor 1 é o prioritário, seguido por 2, 3, e assim por
diante. Um valor 0 indica que os comandos dump e fsck não devem
fazer verificação periódica nesses volumes.
Mas e o mtab? Bem, o fstab é um arquivo de
configuração, o sistema não escreve nele,
só o lê. A responsabilidade de manter o fstab configurado
e atualizado é do administrador do sistema.
O mtab, por outro lado, é um arquivo de controle no qual o
sistema grava as informações sobre os sistemas de
arquivos atualmente montados. Experimente rodar o mount na linha de
comando, sem parâmetros, e veja o resultado. Agora, dê o
comando cat /etc/mtab. Notou alguma semelhança? (Só por
diversão, rode também o comando cat /proc/mounts. O que
achou?)
crontab
O crontab guarda as tarefas agendadas do servidor cron. O cron, por
sua vez, é um servidor de serviços agendados que executa
comandos ou inicia processos em horários previamente marcados.
Essas tarefas podem ser individuais, isto é, por usuário
e são gravadas em arquivos presentes no diretório
/var/spool/cron. O que estiver no arquivo de cada usuário
será executado como se o próprio usuário tivesse
emitido o comando, mesmo que ele não esteja logado na
máquina no momento. Por outro lado, as tarefas que devem ser
executadas pelo sistema sem depender de algum usuário
estão no (sim, ali mesmo) /etc/crontab. Essas tarefas
serão executadas como usuário root.
A sintaxe do crontab é bem simples. Cada linha do arquivo
indica um programa ou serviço a ser inicializado.
A linha está no seguinte formato:
mm hh dd mm(m) ss(s) comando
onde: mm, o campo minuto, é qualquer número entre 0 e
59; hh, o campo hora, é um número entre 0 e 23; dd, o
dia do mês, está entre 0 e 31. mmm, o campo mês,
pode ser um número entre 0 e 12, ou a abreviação
do mês com três letras em inglês (ou seja, jan, feb,
mar, apr, may, jun, jul, aug, sep, oct, nov, dec). sss, o campo dia da
semana, também pode ser um número entre 0 e 7 (sendo 0 e
7 domingo) ou a abreviatura de três letras do dia (também
em inglês: sun, mon, tue, wed, thu, fry, sat).
Um campo pode conter um asterisco (*), que sempre significa
"do primeiro ao último". Podem-se usar intervalos de
números. Um intervalo é um par de números
separados por um hífen. O intervalo especificado é
inclusivo. Por exemplo, 8-11 em uma entrada "horas"
especifica execução às 8, 9, 10 e 11 horas.
Podem-se usar listas. Uma lista é um conjunto de números
(ou intervalos) separados por vírgulas. Exemplos:
"1,2,5,9", "0-4,8-12".
O último campo (o resto da linha) especifica o comando a ser
executado. Toda a parte da linha correspondente ao comando será
executada por /bin/sh ou pelo shell especificado na variável
SHELL do arquivo cron (veja o Quadro 1).
Bem, para começar é isso. Na próxima
edição veremos os arquivos do /etc que cuidam da
manipulação de usuários. Aguardem!
Para saber mais
Running Linux, de Matt Welsh e Lar Kaufman OReilly www.oreilly.com
Man pages dos seguintes comandos e arquivos: cron, crontab, mount, fstab.
Quadro 1 Exemplo de um arquivo crontab
# usa /bin/sh para executar comandos, independentemente do que
# /etc/passwd diz.
SHELL=/bin/sh
#envia (por mail) toda saída para paul, independentemente de quem
# é o dono do crontab.
MAILTO=paul
#
# executa a 0h05, todo dia.
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# executa às 14h15 no dia primeiro de cada mês
15 14 1 * * $HOME/bin/monthly
5 4 * * sun echo "executa às 4h05 todo domingo"