Revista Do Linux
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Entrevista
 Corporativo
 Editoração
 Segurança
 Hardware
 Produtos
 Programação
 Sistema
 

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 — O’Reilly 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"

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

Política de Privacidade
Anuncie na Revista do Linux