Product SiteDocumentation Site

8.9. Outras Configurações: Sincronização de tempo, Logs, Compartilhando acesso…

Os muitos elementos listados nesta seção são importantes para quem quer dominar todos os aspectos de configuração de um sistema GNU/Linux. Eles são, contudo, tratados superficialmente e frequentemente vão te remeter à documentação.

8.9.1. Região

O "timezone", configurado durante a instalação inicial, é um item da configuração do pacote tzdata. Para modificá-lo, use o comando dpkg-reconfigure tzdata, o qual permite a você escolher o "timezone" a ser usado de maneira interativa. Sua configuração é armazenada no arquivo /etc/timezone. Adicionalmente, o arquivo correspondente no diretório /usr/share/zoneinfo é copiado para /etc/localtime; esse arquivo contém as regras que governam as datas aonde o horário de verão é ativado, para países que o usam.
Quando você precisar alterar temporariamente o fuso-horário (timezone), use a variável de ambiente TZ, a qual tem prioridade sobre a configuração padrão do sistema:
$ date
Thu Feb 19 11:25:18 CET 2015
$ TZ="Pacific/Honolulu" date
Thu Feb 19 00:25:21 HST 2015

8.9.2. Sincronização de Tempo

A sincronização de horário, o que pode parecer supérfluo em um computador, é muito importante em uma rede. Como os usuários não tem permissão de modificar a data e horário, é importante que essa informação seja precisa para prevenir confusão. Além do mais, ter todos os computadores em uma rede sincronizados permite melhor cruzamento de referencias de informação a partir dos logs de diferentes máquinas. Assim, em um eventual ataque, é mais fácil reconstruir a sequência cronológica das ações nas várias máquinas envolvidas no compromisso. Os dados coletados nas várias máquinas, para propósitos de estatística, não farão muito sentido se eles não estiverem sincronizados.

8.9.2.1. Para Estações de Trabalho

Como as estações de trabalho são reinicializadas regularmente (ainda que apenas para economizar energia), sincronizá-las pelo NTP na inicialização é o suficiente. Para fazer isso, simplesmente instale o pacote ntpdate. Você pode alterar o servidor NTP usado, se necessário, modificando o arquivo /etc/default/ntpdate.

8.9.2.2. Para Servidores

Servidores são apenas raramente reinicializados, e é muito importante que o horário do sistema deles esteja correto. Para manter permanentemente o horário correto, você deveria instalar um servidor NTP local, um serviço oferecido pelo pacote ntp. Na sua configuração padrão, o servidor irá sincronizar com pool.ntp.org e prover o horário em resposta as requisições vindas da rede local. Você pode configurá-lo editando o arquivo /etc/ntp.conf, sendo a mais significante alteração o servidor NTP ao qual ele se refere. Se a rede tem vários servidores, pode ser interessante ter um servidor local de horário o qual faz a sincronização com servidores públicos e é usado como fonte de horário para outros servidores na rede.

8.9.3. Rotação de Arquivos de Log

Arquivos de log podem crescer rapidamente e é necessário arquivá-los. O esquema mais comum é a rotação dos arquivos: o arquivo de log é arquivado regularmente, e apenas os últimos X arquivos são mantidos. logrotate, o programa responsável por estas rotações, segue as diretivas especificadas no arquivo /etc/logrotate.conf e em todos os arquivos dentro do diretório /etc/logrotate.d/. O administrador pode modificar esses arquivos, se ele quiser adaptar a política de rotação dos logs definidas pelo Debian. A página de manual do logrotate(1) descreve todas as opções disponíveis nesses arquivos de configuração. Você pode querer aumentar o número de arquivos retidos na rotação dos arquivos de log, ou mover os arquivos de log para um diretório específico, dedicado a arquivá-los ao invés de apagá-los. Você pode também enviá-los, por email, para arquivá-los em outro lugar qualquer.
O programa logrotate é executado diariamente pelo agendador de comandos cron (descrito em Seção 9.7, “Agendando Tarefas com cron e atd).

8.9.4. Compartilhando Direitos Administrativos

Frequentemente, vários administradores trabalham na mesma rede. O compartilhamento da senha do root não é muito elegante, e abre brecha para abusos devido ao anonimato que tal prática cria. A solução para esse problema é o programa sudo, o qual permite que certos usuários executem certos comandos com direitos especiais. Em seu caso mais comum de uso, o sudo permite que um usuário confiável execute qualquer comando como se fosse o root. Para fazer isso, o usuário simplesmente executa sudo command e se autentica usando sua senha pessoal.
Quando instalado, o pacote sudo dá todos os direitos de root para os membros do grupo Unix sudo. Para delegar outros direitos, o administrador tem que usar o comando visudo, o qual permite a ele modificar o arquivo de configuração /etc/sudoers (mais uma vez, isso irá invocar o editor vi, ou qualquer outro editor indicado na variável de ambiente EDITOR). Adicionando uma linha com usuário ALL=(ALL) ALL permite que o usuário em questão executar qualquer comando como root.
Configurações mais sofisticadas permitem autorizar apenas comandos específicos para usuários específicos. Todos os detalhes das variadas possibilidades são dados pela página de manual sudoers(5).

8.9.5. Lista de Pontos de Montagem

O arquivo /etc/fstab dá uma lista de todas as possíveis montagens que acontecem tanto automaticamente na inicialização quanto manualmente para dispositivos de armazenamento removíveis. Cada ponto de montagem é descrito em uma linha com vários campos separados por espaço:
  • dispositivo a ser montado: isso pode ser uma partição local (disco rígido, CD-ROM) ou um sistema de arquivos remoto (como o NFS).
    Esse campo é frequentemente substituído pela ID única do sistema de arquivos (a qual você pode determinar com blkid dispositivo) prefixada com UUID=. Isso protege contra mudanças no nome do dispositivo no evento de adição ou remoção de discos, ou se os discos forem detectados de maneira diferente.
  • ponto de montagem: esse é a localização no sistema de arquivos local aonde o dispositivo, sistema remoto, ou partição será montada.
  • tipo: esse campo define o sistema de arquivos usado no dispositivo montado. ext4, ext3, vfat, ntfs, btrfs, xfs são alguns exemplos.
    Uma lista completa dos conhecidos sistemas de arquivo está disponível na página de manual mount(8). O valor especial swap é para partições swap; o valor especial auto diz ao programa mount para detectar automaticamente o sistema de arquivos (o que é especialmente útil para leitores de disco e chaves USB, já que cada um pode ter um sistema de arquivos diferente);
  • opções: existem muitas delas, dependendo do sistema de arquivos, e elas estão documentadas na página de manual do mount. As mais comuns são
    • rw ou ro, significam, respectivamente, que o dispositivo será montado com permissão de leitura/escrita ou apenas leitura.
    • noauto desativa a montagem automática na inicialização.
    • nofail permite que a inicialização prossiga mesmo quando o dispositivo não esteja presente. Tenha a certeza de colocar essa opção para drives externos que podem estar desconectados quando você inicializar, porquê o systemd realmente garante que todos os pontos de montagem que tem que ser montados automaticamente estejam realmente montados antes de deixar o processo de inicialização continuar até o seu final. Note que você pode combinar isso com x-systemd.device-timeout=5s para informar o systemd para não esperar mais do que 5 segundos para o dispositivo aparecer (veja systemd.mount(5)).
    • user autoriza todos os usuários a montar esse sistema de arquivo (uma operação que, de outra forma, seria restrita ao usuário root).
    • defaults significa o grupo de opções padrão: rw, suid, dev, exec, auto, nouser e async, sendo que cada uma pode ser individualmente desabilitada após defaults bastando adicionar nosuid, nodev e assim por diante, para bloquear suid, dev e assim por diante. Adicionando a opção user reativa-a, já que defaults inclue nouser.
  • backup: esse campo é quase sempre configurado com 0. Quando ele é 1, ele diz a ferramenta dump que a partição contém dados que devem ser copiados para outro dispositivo para poderem ser recuperados, caso seja necessário (backup).
  • check order: esse último campo indica quando a integridade do sistema de arquivos deve ser checada na inicialização, e em que ordem essa checagem deveria ser executada. Se ele é 0, nenhuma checagem é conduzida. O sistema de arquivos raiz deve ter valor 1, enquanto outros sistemas de arquivos permanentes recebem valor 2.

Exemplo 8.5. Exemplo do arquivo /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0
A última entrada neste exemplo corresponde ao sistema de arquivos de rede (NFS): o diretório /shared/ no servidor arrakis é montado em /shared/ na máquina local. O formato do arquivo /etc/fstab está documentado na página de manual fstab(5).

8.9.6. locate e updatedb

O comando locate pode encontrar a localização de um arquivo quando você sabe apenas parte do nome. Ele envia o resultado quase que instantaneamente, já que ele consulta uma base de dados que armazena a localização de todos os arquivos no sistema; essa base de dados é atualizada diariamente pelo comando updatedb. Existem multiplas implementações do comando locate e o Debian escolheu o mlocate para seu sistema padrão.
O mlocate é suficientemente esperto para retornar apenas os arquivos os quais são acessíveis ao usuário que está executando o comando, mesmo que ele use uma base de dados que sabe sobre todos os arquivos no sistema (já que a sua implementação updatedb roda com privilégio de root). Para uma segurança extra, o administrador pode usar PRUNEDPATHS no /etc/updatedb.conf para excluir alguns diretórios de serem indexados.