Para uma administração coerente do Linux é necessário lidar com os dispositivos de armazenamento e as ferramentas utilizadas para garantir a segurança e a integridade dos dados no sistema. Este capítulo mostrará como proceder com estas tarefas de manutenção, salientando o uso de ferramentas que ofereçam as informações necessárias para se avaliar o sistema e para corrigir os eventuais problemas que, porventura, venham a ocorrer.
Com o intuito de salvaguardar o sistema, o kernel e outros programas geram mensagens para que o administrador possa avaliar o seu funcionamento. Essas mensagens ficam guardadas em /var/log/ e podem ser acessadas em modo texto, bastando que sejam abertas com um editor de textos. O Linuxconf, porém, facilita esta pesquisa, apresentando-as em Estado -> Registros. No Linux, os registros são administrados pelo syslog. O daemon do syslog, syslogd, armazena os registros de diversos aplicativos locais e também de clientes remotos.
Para ler os registros do sistema no Linuxconf, deve-se acessar Estado -> Registros -> Registros do Sistema, onde ficarão disponíveis todos os registros.
A configuração do syslogd pode ser feita através do Linuxconf pelo menu Configuração -> Miscelânea -> Registros do Sistema. Serão mostrados todos os arquivos de registro e, para criar um novo arquivo, clique em Adicionar. Pelo exemplo é possível ver como se define o local aonde as mensagens serão armazenadas, de acordo com seu tipo.
Na opção Seleções pode-se definir como e quais mensagens são guardadas no arquivo indicado; esta opção consiste de dois sub-campos, sendo um campo de seleção e um campo de destino. O campo de seleção, por sua vez, consiste de duas partes: serviço e prioridade, separados por um ponto ".". Um serviço especifica o subsistema que produz a mensagem. Por exemplo, todas as mensagens do serviço de impressão utilizam o serviço lpr e todos os registros de programas de e-mail utilizam o serviço mail.
Uma prioridade define basicamente a que uma mensagem se destina, ou seja, qual a sua exatidão ou urgência. Ela pode ser apenas uma mensagem de depuração do programa (prioridade debug) ou pode ser uma mensagem de alerta (alert), entre outras prioridades. Além do exposto anteriormente, o syslogd entende as seguintes extensões: um asterisco "*" indica todos os serviços ou todas as prioridades, dependendo de que lado do ponto se encontra. A palavra none significa nenhuma prioridade para o serviço fornecido.
Veja a Figura 11-2, que mostra um exemplo de configuração do syslog.
É possível ver pelo exemplo, que os serviços e prioridades irão produzir registros a serem guardados no arquivo /var/log/messages. Isto indica que todas as mensagens que são marcadas com a prioridade info serão direcionadas para o arquivo /var/log/messages, porém mensagens marcadas com os serviços mail ou news não serão armazenadas. Após estas configurações, reinicialize o syslogd através do Linuxconf para que suas mudanças sejam efetuadas. Um outro modo de efetuar a configuração do syslog pode ser através do arquivo /etc/syslog.conf. Este arquivo define aonde as mensagens serão armazenadas, de acordo com seu tipo, como foi explicado anteriormente. Linhas em branco ou iniciadas por "#" são ignoradas.
Para que o syslogd releia seu arquivo de configuração é necessário enviar um sinal SIGHUP para ele. Para enviar esse sinal execute o comando:
# killall -HUP syslogd |
ou seja, todos os arquivos abertos serão fechados, o arquivo de configuração será lido novamente e o serviço syslog será reinicializado automaticamente. Existem outros sinais que podem ser enviados; a sintaxe básica para enviar um sinal para o servidor syslogd é a seguinte:
# kill -SINAL `cat /var/run/syslogd.pid` |
onde SINAL é um comando que executa uma ação. Verifique a lista dos principais sinais do syslog na página de manual (man syslogd). Uma lista de serviços e prioridades pode também ser encontrada na página de manual do arquivo de configuração do syslog.
# man syslog.conf |
O arquivo /etc/syslog.conf é utilizado para configurar o syslogd, no qual são especificadas as regras para registrar cada tipo de mensagem, como foi discriminado anteriormente.
As regras apresentam dois campos, seleção (selector) e ação (action) - campos que são separados por espaços ou tabulações. O campo seleção apresenta duas partes, facilidade e prioridade, separadas por um ponto, nas quais o campo seleção designa um padrão de facilidades e prioridades pertencentes a uma ação especificada. O campo facilidade informa ao syslog o tipo de aplicativo que originou a mensagem (e-mail, kernel, sistema de impressão, entre outros), e o campo prioridade a importância da mensagem.
Este é um exemplo do syslog.conf típico:
# Log all kernel messages to the console. |
Na configuração do syslog, para armazenar as mensagens em arquivos, o administrador do sistema pode configurá-lo para enviar todas as mensagens para um único arquivo ou dividi-las em vários arquivos, de acordo com a facilidade e prioridade. Ao separar as mensagens desta forma cada arquivo de log será mais coerente, mas o usuário deverá monitorar múltiplos arquivos. Direcionando todas as mensagens para um único arquivo, o administrador possuirá todas as informações em um único local, sendo que este arquivo será muito maior. Existe, também, a possibilidade de direcionar os logs para serem gravados em uma outra máquina, na impressora ou mostrados diretamente no vídeo, ampliando as possibilidades de manutenção e dinamizando o processo.
A integridade do sistema de arquivos é uma característica fundamental para o funcionamento adequado do sistema, e a sua verificação envolve o uso de ferramentas específicas, como fsck, o qual verifica o estado do disco rígido e corrige os problemas que porventura ocorram em ocasionais quedas de energia, desligamento acidental do sistema ou outro tipo de problema. Nestes casos, normalmente o fsck costuma corrigir automaticamente os erros na inicialização posterior ao ocorrido, mas existem casos em que esta manutenção terá de ser efetuada manualmente.
O fsck verifica e repara a integridade de um sistema de arquivos do Linux. Pode-se informar tanto o dispositivo a ser analisado como, por exemplo, /dev/hda1, como o ponto de montagem do sistema (por exemplo, /home). O fsck tem a capacidade de verificar simultaneamente sistemas de arquivos que se encontram em discos distintos. A sintaxe básica para o seu uso é a seguinte:
# fsck /dev/hda |
O fsck encontrará as falhas e inconsistências do sistema de arquivos e as reparará, mas o superusuário deverá ter permissões de leitura e escrita para isso, pois, caso contrário, será necessário acrescentar a opção -n para o caso de permissão de somente leitura.
Quando ocorrerem inconsistências no sistema de arquivos, o fsck avisará das modificações que deverá fazer, o que, normalmente implicará em perda de dados. A avaliação desta perda está disponível na saída de diagnóstico que o fsck apresentará.
A interatividade padrão do fsck está resumida a respostas do tipo sim ou não, mas, dependendo das opções, ele poderá ser ativado em opções não interativas. Consulte as páginas do manual (man fsck) para mais informações.
Dica: Recomenda-se utilizar o fsck em partições desmontadas para garantir a integridade do sistema.
Em alguns casos o sistema não inicializará, pois, provavelmente, terá arquivos corrompidos. Uma solução para isto é utilizar a opção do linux single (ver detalhes na seção Recuperando a Senha de Superusuário) e disparar o fsck com a opção -v, na qual o programa mostrará todas os problemas e modificações a serem feitas, esperando sempre por uma confirmação do usuário. A sintaxe é:
# fsck -v -c /dev/hda1 |
A opção -c verifica blocos defeituosos do dispositivo.
Com o Linuxconf é bastante simples instalar o Grub em um disco flexível e inicializar a máquina com ele. Acesse Configuração ->Inicialização -> Grub -> Instalação e opte por instalá-lo no disco flexível, preenchendo a opção Dispositivo com /dev/fd0.
Esquecer a senha de superusuário pode parecer, à primeira vista, um problema sem solução, já que se trata de uma situação extrema. Existe, em contrapartida, um forma de se solucionar este inconveniente.
Ao inicializar o computador, na tela de opções do Grub, deve-se selecionar a imagem do sistema operacional para o qual se deseja recuperar a senha e digitar e (edit) duas vezes, que habilitará a edição da linha referente à imagem. No final da linha deve ser inserida a frase init=/bin/bash, para habilitar o acesso para a linha de comando; em seguida, tecle a letra b (boot).
Ao aparecer a linha de comando, digite a seqüência abaixo:
# mount -o remount,rw / |
A senha do superusuário foi modificada.
No LILO basta que usuário digite, na opção do lilo, uma das seguintes opções:
LILO boot: linux single LILO boot: linux emergency |
Isto fará com que o usuário acesse o sistema sem que seja requerido nenhum tipo de senha. Em contrapartida, essas alternativas poderão deixar o sistema vulnerável a invasões.
Note que este tipo de invasão só será possível a alguém que tenha acesso físico à máquina. É muito importante zelar pela segurança física de servidores. Mesmo alguém sem conhecimentos de informática poderia abrir o computador e retirar o disco rígido, levando-o com todos os seus dados confidenciais.
Para se precaver de uma provável invasão do sistema por um usuário que não tenha a senha de superusuário deve-se tomar as seguintes precauções:
Grub
No Linuxconf, edita-se as opções gerais do Grub (Configuração -> Inicialização -> Grub);
Habilita-se uma senha, evitando-se que o grub seja acessado por um usuário sem autorização (Opções gerais -> Senha).
LILO
Deve ser feita uma cópia do arquivo de configuração do LILO /etc/lilo.conf;
Deve se incluir, então, as seguintes linhas no mesmo arquivo:
restricted |
Essa inserção deve ser feita logo após a linha que indica a imagem, algo como:
image=/boot/vmlinuz-2.4.20-26373cl |
Agora basta atualizar o LILO:
# lilo |
O linux single estará desativado em ambas as opções. Para recuperar a senha e poder utilizá-la basta acessar como um usuário comum (ou delegar esta tarefa para um usuário de extrema confiança) e acessar a opção no Linuxconf ou digitar:
$ cat /etc/lilo.conf |
A senha do linux single estará no campo Senha, no caso do Grub, ou na linha "password:", no caso do LILO.