Nesta seção serão mostrados alguns serviços utilizados em um sistema, tanto em um servidor como em uma máquina cliente. Para verificar os outros serviços existentes, dirija-se ao diretório /etc/rc.d/init.d ou /etc/init.d (um link para o diretório anterior).
O crond é um serviço que permite a execução periódica de tarefas, sem assistência do administrador. É possível utilizar o crond para executar várias tarefas, como por exemplo:
Limpar diretórios de arquivos temporários como o /tmp e o /var/tmp.
Rotacionar arquivos de registro para evitar que se tornem muito extensos.
Verificar o funcionamento de outros serviços.
Para configurar um agendamento, é preciso verificar se, no mínimo, o pacote vixie-cron está instalado (se tiver dúvidas, leia no capítulo sobre rpm e apt para mais detalhes). É interessante instalar também o pacote crontabs, que cria automaticamente um arquivo crontab predefinido para o superusuário, usado para agendar execuções de vários programas.
O agendamento de tarefas pode ser feito através do Webmin. Para isso, clique no botão localizado em -> . Veja a Figura 7.3. Agendamento de uma Tarefa - Cron, que mostra um exemplo de tarefa agendada.
Neste exemplo, o superusuário irá executar um envio de e-mail para <usuario@provedor.com>, indicando o assunto Lembrete e com o texto do e-mail sendo "Spam é crime!". Esta tarefa será executada todos os dias do mês, todos os meses do ano, porém apenas aos domingos, segundas e terças-feiras, sendo que nesses dias um e-mail será enviado de três em três horas para a conta indicada.
É claro que as funções e envio e recebimento de e-mails devem estar funcionando para que este exemplo funcione. Em seguida, clique no botão para colocar esta entrada no cron.
Assim como funciona para o superusuário, também para usuários comuns você pode fazer este agendamento neste mesmo local. O processo de preenchimento é igual ao processo utilizado para o superusuário.
![]() | Dica |
|---|---|
Para selecionar as entradas desejadas nos horários personalizados, pressione a tecla Ctrl e selecione as opções desejadas. | |
O administrador do sistema também pode filtrar os usuários que poderão criar agendamentos. O link Controle de acesso as tarefas do cron permite esta configuração, que é auto-explicativa.
Se o serviço crond estiver parado, basta reinicializá-lo através do Webmin ( -> ). Se ele já estiver sendo executado, não é necessário reinicializá-lo, pois a tarefa será agendada automaticamente.
O agendamento das tarefas pode ser feito também através da linha de comando. Cada usuário do sistema pode executar o seu agendamento separadamente através do comando crontab. Caso exista o arquivo /etc/cron.deny, os usuários listados neste arquivo não poderão usar o comando crontab. Caso exista o arquivo /etc/cron.allow, somente os usuários listados neste arquivo terão acesso ao comando crontab.
A configuração do serviço crond também pode ser feita, somente pelo superusuário, através do arquivo /etc/crontab. Para agendar uma tarefa, pode-se especificar o minuto, a hora, o dia do mês, o mês e o dia da semana.
Tabela 7.1. Campos do Arquivo /etc/crontab
Campo | Valores permitidos |
|---|---|
minuto | 0-59 |
hora | 0-59 |
dia do mês | 1-31 |
mês | 1-12 (ou os nomes - em inglês) |
dia da semana | 0-7 (0 e 7 sendo domingo, ou nomes - em inglês) |
O campo pode conter um asterisco, o que significa que todos os períodos serão marcados, sejam eles horários, dias ou meses. Pode-se utilizar intervalos de números, que são indicados por dois números separados por um hífen. Por exemplo, 8-10 em uma entrada horas especifica execução às 8, às 9 e às 10 horas.
É possível utilizar listas, que são representadas por números (ou intervalos) separados por vírgulas, como nos seguintes exemplos: 1,2,5,6; 12-17, 21,23.
Um /número imediatamente após um intervalo especifica um passo no valor do número através do intervalo. Por exemplo, 0-23/2 pode ser usado no campo das horas para especificar que o comando deve ser executado a cada duas horas (0,2,4,6,8,10,12,14,16,18,20,22). Estes intervalos também são permitidos depois de um asterisco. Logo, se você simplesmente desejar que uma ação ocorra a cada duas horas use */2.
O último campo serve para especificar o comando, que será executado pelo interpretador de comandos especificado na variável SHELL do arquivo /etc/crontab.
Portanto, o formato de uma linha de comando no arquivo /etc/crontab segue basicamente a seguinte estrutura:
min hora dia_mês mês dia_semana comando |
ou seja, são seis campos, que poderão ser preenchidos de acordo com o que foi descrito anteriormente. Veja o Exemplo 7.2. Exemplo de Arquivo cron que mostra um exemplo do arquivo cron.
Exemplo 7.2. Exemplo de Arquivo cron
# usa /bin/sh para executar comandos, independentemente # do que o /etc/passwd diz. SHELL=/bin/sh # envia (por e-mail) toda saída para o usuário indicado, # independentemente de quem é o dono do crontab. MAILTO=joao # executa às 0h05, todo dia. 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # executa às 14h15 no dia primeiro de cada mês - a # saída é enviada para joao 15 14 1 * * $HOME/bin/monthly # executa às 22h00 em dias de semana. 0 22 * * 1-5 mail -s "São 22 horas" joao 23 */2 * * * echo "executa a 0h23, 2h23, ... todo dia" 5 4 * * sun echo "executa às 4h05 todo domingo" |
Se o serviço crond já estiver sendo executado, não será necessário reinicializá-lo, pois ele irá executar as tarefas agendadas automaticamente. Se ele não estiver sendo executado, pode-se executar o serviço para inicializar o serviço:
# service crond start Iniciando cron: [ OK ] |
![]() | Nota |
|---|---|
Para que usuários comuns agendem suas tarefas, o arquivo de cron pode ser criado através do comando crontab -e, que abrirá um editor de textos para a montagem das opções. O formato para este arquivo é igual ao formato do arquivo do superusuário (campos de horas, ação, etc.). | |
Para mais detalhes sobre comandos verifique as páginas de manual do cron (man crontab e man cron).
O atd é um serviço que executa comandos especificados em um determinado horário fornecido. Ele é muito similar ao crond, mas está limitado a uma única execução: o comando é executado em horário e datas fornecidas, mas não repetidas vezes como o cron.
É possível utilizar o Webmin para configurar o atd. Na página Sistema, selecione o ícone . Você verá uma tela como a da Figura 7.4. Agendamento de uma Tarefa - At:
Escolha o usuário que irá executar a tarefa, a data/hora da execução e qual é a tarefa/comando.
A opção Executar no diretório especifica onde o comando at será executado, e assim, o comando cd será executado antes do comando propriamente configurado. É importante observar que este diretório deve estar acessível para o usuário que irá executar os comandos, caso ele não seja o superusuário.
No campo Comandos a executar você deve colocar o comando que o at deve executar na data/hora especificada, e caso você deseje incluir vários comandos, basta colocá-los em linhas separadas, e o at irá executá-las na seqüência fornecida. Para terminar, clique em para finalizar o agendamento da tarefa.
Para utilizar o atd pela linha de comando, é usado o comando at, que aceita várias opções de agendamento. O superusuário pode usar este comando em qualquer caso. Para os outros usuários, a permissão para usar o comando at é determinada pelos arquivos /etc/at.allow e /etc/at.deny.
Suponha então que exista um script chamado baixar-kernel, com permissões de execução. Primeiramente, deve-se inicializar o serviço atd:
# service atd start Iniciando o servidor at: [ OK ] |
Após inicializado, o serviço estará pronto para receber uma tarefa para ser agendada através do comando at. Por exemplo, para agendar a execução do script anterior para às 4 horas da madrugada, deve-se fazer da seguinte maneira:
# at -f baixar-kernel 4:00 warning: commands will be executed using /bin/sh job 1 at 2004-04-17 04:00 |
O parâmetro -f faz com que o comando obtenha as informações do arquivo indicado (baixar-kernel). É claro que além de executar o serviço, você deverá também estar conectado à Internet neste horário, mas se você usar scripts de conexão, será extremamente simples adicionar no baixar-kernel o comando para efetuar a conexão antes de tentar baixar o kernel efetivamente.
Um outro exemplo bastante simples:
# at 18:00 at> ls /tmp > ~/teste_atd at> <EOT> warning: commands will be executed using /bin/sh job 4 at 2004-04-05 18:00 |
A diferença aqui é que é mostrado um prompt, onde o usuário pode digitar o comando para agendar; para finalizar o agendamento, basta pressionar Ctrl-D e se o serviço atd já estiver rodando, a tarefa já estará agendada.
Mais detalhes sobre o serviço e o comando poderão ser obtidos nas páginas de manual (man at e man atd).
O kernel e muitos programas do sistema produzem avisos, mensagens de erros e outros alertas. É importante que estas mensagens sejam armazenadas para que possam ser lidas a qualquer momento. O serviço responsável pelo arquivamento destas mensagens é o syslog. Ele pode ser configurado para gravar as mensagens em diferentes arquivos, de acordo com o nível de importância ou origem.
O syslogd é o serviço responsável por estas tarefas e sua configuração pode ser feita através do Webmin, ou através da configuração do arquivo. Os detalhes de sua configuração serão vistos em um capítulo posterior.
O serviço network auxilia a manutenção da rede, gerenciando todas as interfaces de rede configuradas para serem habilitadas durante a inicialização, e assim, gerencia a manutenção das interfaces de uma máquina para rede.
O pacote utilizado por este serviço é o initscripts. Ele contém scripts usados durante a inicialização do sistema para mudar níveis de execução (runlevels) e desligar o sistema corretamente. O pacote contém principalmente scripts que ativam/desativam as interfaces de rede que a máquina possui.
Para iniciar o serviço de rede, pode-se utilizar o Webmin (pelo caminho -> ) ou através da linha de comando, usando o service.
Portmap é um serviço que basicamente converte programas RPC[26] para o protocolo DARPA[27].
Quando um serviço RPC é inicializado ele envia através do portmap qual a porta que está “ouvindo” e quais os programas para os quais ele está preparado para servir. Quando uma máquina cliente deseja fazer uma chamada RPC, ela primeiramente irá contatar o portmap do servidor para determinar o número da porta pela qual os pacotes RPC devem ser enviados. Portanto, o portmap deve estar sendo executado a fim de receber chamadas RPC e deve ser inicializado antes dos servidores RPC serem invocados.
O portmap é utilizado por alguns serviços que necessitam de gerenciamento das conexões RPC, como por exemplo o NFS e NIS. É aconselhável deixar o portmap ser automaticamente executado, pois muitos serviços e programas precisam obrigatoriamente dele.
Para iniciar este serviço, pode-se utilizar o Webmin ou usar o comando service:
# service portmap start |
Quando instala-se o Conectiva Linux, por padrão, o superserver instalado é o xinet.
O xinet é um servidor de serviços de rede, e possui vários recursos, como os citados abaixo:
Controle de acesso baseado em destino e hora;
Redirecionamentos;
Grande capacidade de logs;
Ligar serviços a interfaces específicas;
Possibilidade de limitar o número de máquinas simultâneas em um determinado serviço.
Toda a configuração do xinet é feita através do arquivo /etc/xinetd.conf. O exemplo a seguir mostra algumas configurações que poderão ser utilizadas pelo arquivo /etc/xinetd.conf, sendo que as configurações inseridas dentro da sessão defaults serão aplicadas para todos os outros serviços configurados.
defaults
{
instances = 25
per_source = 10
log_type = SYSLOG authpriv
log_on_success = HOST PID USERID
log_on_failure = HOST RECORD USERID
}
|
instances: Esta opção controla o número de conexões simultâneas em um serviço e sua configuração pode acabar evitando um ataque do tipo DoS (Denial of Service) em seu serviço.
per_source: Controla o número máximo de conexões originadas de uma mesma máquina.
log_type: Indica como o xinetd irá logar (registrar) as requisições. eles podem ser direcionados para um arquivo, ou deixar que o sistema registre tudo (usando o SYSLOG).
log_on_success: Informa ao xinetd quais informações ele deverá capturar do usuário que conseguir logar.
log_on_failure: Indica quais informações deverão ser capturadas dos usuários que não conseguirem logar.
Caso o usuário queira configurar o serviço de telnet, por exemplo, ele poderá fazê-lo da seguinte maneira:
service telnet
{
flags = IPv4
log_type = FILE /var/log/telnet.log
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
bind = 200.1.1.20
redirect = 192.168.1.111 23
only_from = 192.168.1.0/24
} |
onde:
flags: Recebe as opções passadas em linha de comando para o daemon. No exemplo anterior, fala para o serviço telnet usar explicitamente o protocolo IPv4.
socket_type: Especifica o tipo de socket usado: dgram, stream ou raw.
protocol: Indica o protocolo usado pelo serviço.
wait: Diz ao xinetd se ele deve chamar o serviço sobre demanda ou não.
user: Usuário que executará o serviço.
server: Localização do daemon do serviço.
bind: O endereço IP ou nome da máquina especificado aqui será origem quando um serviço for redirecionado com o uso da opção redirect.
redirect: Nome ou IP da máquina que receberá a requisição do serviço.
only_from: Limita os endereços de IP que terão acesso a determinado serviço.
Para mais informações sobre a configuração do xinetd.conf e um arquivo exemplo, consulte a página de manual do arquivo executando o comando:
$ man xinetd.conf |
O xinetd também pode ser configurado pelo Webmin. Para isso, dirija-se a sua página de configuração, localizada através de -> .
Esta tela mostra as informações sobre os serviços configurados no xinetd, estejam eles sendo executados no momento ou não; para habilitar um serviço que está parado, clique sobre o seu nome, modifique o parâmetro da opção para Sim e inicie o xinetd () ou aplique as modificações, caso ele já esteja sendo executado.
Para criar um novo serviço, clique no link Criar um novo serviço internet e preencha as opções; é importante que você já possua todas as informações em mãos antes de iniciar a criação do novo serviço. Caso tenha dúvidas, poderá consultar a configuração dos outros serviços que já estão sendo administrados pelo xinetd. Clique no botão e reinicie o servidor, ou aplique as modificações.