quinta-feira, 12 de janeiro de 2012

[2012] Aula 4

Olá pessoas...
A aula de hoje começou com a apresentação de Rodrigo sobre NTP. Achei boa a apresentação :)
Faça download dos slides da apresentação aqui.
Irei colocar aqui os principais pontos abordados na apresentação.

NTP - Network Time Protocol
O NTP é um protocolo para sincronização dos relógios dos computadores baseado no UDP para sincronização de um conjunto de computadores em redes de dados com latência variável, permitindo manter o relógio de um computador com a hora sempre certa e com grande exatidão.

Importância
É importante do ponto de vista de segurança de redes que os relógios dos computadores estejam sincronizados. Investigações relacionadas a incidentes de segurança tornam-se impossíveis caso os servidores envolvidos e os diversos arquivos de log discordem entre si em relação às estampas de tempo dos eventos.
Para algumas aplicações exatidão da ordem de segundos pode ser suficiente. Para outras, é necessário manter os relógios com diferenças na ordem dos milisegundos entre si e em relação à hora certa. Por exemplo, a sincronização de servidores DNS é muito importante.

Tempo: formas de medição
* Sol;
* Rotação da Terra;
* Translação da Terra;
* Rotações dos elétrons;
* Cristais de quartzo (principal matéria prima do computador);

Propriedades do relógio
* Exatidão
* Monotonicidade
* Sincronização
* Sintonização

Funcionamento NTP
Os servidores NTP formam uma topologia hierárquica, dividida em camadas ou estratos numerados de 0 a 16. O estrato 0 representa a referência primária de tempo, que é geralmente um receptor do Sistema de Posicionamento Global (GPS) ou um relógio atômico. O estrato 16 indica que um determinado servidor está inoperante.
O estrato 0, ou relógio de referência, fornece o tempo correto para o estrato 1, que por sua vez fornece o tempo para o estrato 2 e assim por diante. O NTP é então, simultaneamente, servidor (fornece o tempo) e cliente (consulta o tempo), formando uma topologia em árvore.

Tipos de associações possíveis
* permanentes
* priorizáveis
* efêmeras ou transitórias
* cliente-servidor
* modo simétrico
* broadcast ou multicast

Veja mais aqui.

Em seguida foi dado início a aula utilizando os slides que estão aqui. Foi uma continuidade dos assuntos trabalhados na aula 3.

Sistema de arquivos
Única hierarquia de diretórios: / (raiz)

Rogério mandou fazermos o teste do comando mount na partição que criamos ontem, mas como ontem tínhamos formatado ela como uma partição swap, tivemos antes de formatá-la para uma partição com sistema de arquivos ext3 por exemplo, pois partições swap não podem ser montadas/desmontadas utilizando os comandos mount/umount e sim os comandos swapon/swapoff. Então fizemos o seguinte:

mkfs -t ext3 /dev/sdb1
mount /dev/sdb1 /mnt


O comando mount sem parâmetros mostra as partições montadas no sistema.

Por default as partições já são montadas no modo leitura e escrita.

Alguns comentários dentre as opções de montagem:
* async/sync: No modo sync as informações são gravadas imediatamente, já no modo async o sistema escolhe o melhor momento para realizar as gravações. O modo sync tem perda de desempenho quando comparado ao modo async, entretanto o risco de perda de dados é menor, propiciando maior segurança aos dados.
* auto/noauto: Refere-se à montagem durante o boot.
* dev/nodev: Refere-se à permissão para criação de dispositivos do tipo dev na partição. Aumenta segurança do sistema.
* exec/noexec: Refere-se à permissão para execução de binários na partição. Também aumenta a segurança do sistema.
* suid/nosuid: Refere-se à permissão da presença de arquivos com bit s. Arquivos que tenham o bit s ativado indicam que todos os que acessarem esse arquivo o estarão fazendo com os privilégios do proprietário do arquivo. Entenderemos isso melhor na aula de shell script.
* user/users: A opção user permite que apenas o usuário que montou o sistema de arquivos o desmonte. Já a opção users permite que qualquer usuário monte e desmonte o sistema de arquivos.

Qual a importância de desmontar?
Quando um dispositivo está montado no Linux, todas as informações vão sendo guardadas num buffer que o Linux espera ficar cheio para realizar a transferência para o disco. Assim, quando fazemos unmount dizemos pro Linux que não temos mais nada a acrescentar no disco e ele se obriga a realizar a transferência mesmo com o buffer parcialmente cheio.
Por exemplo, se você remover um pen drive sem desmontá-lo, poderá depois ver que alguns arquivos não foram copiados ou salvos, ou não por completo, causando erros.
Antigamente no linux, só era possível retirar um cd do driver após desmontar a unidade.

No Linux todos dispositivos são devidamente desmontados antes do desligamento.

Ao editar o nome do dispositivo no arquivo de configuração do sistema de arquivos do /etc/fstab, podem ocorrer problemas na detecção dos nomes dos dispositivos. Se você tiver mais de um controlador de discos SATA/SCSI ou IDE, eles são adicionados em ordem aleatória. Isso pode resultar em nomes como hdX e hdY fazendo rodízio a cada boot. O mesmo vale para sdX e sdY. Para solucionar esse problema é recomendado utilizar a nomeação persistente através da UUID.
Para visualizar a UUID de cada dispositivo você pode executar os seguintes comandos:
cat /etc/fstab
ou
ls -l /dev/disk/by-uuid (lista completa, mais recomendado)

Na configuração do sistema de arquivos em /etc/fstab, manter o 3º campo como auto, permite identificar automaticamente o sistema de arquivos.

O 5º campo da configuração do sistema de arquivos em /etc/fstab, corresponde à freqüência de dump, deixá-lo como 0 significa que não será realizado backup do sistema de arquivos, deixá-lo como 1 significa que será realizado backup do sistema de arquivos.

NFS é um exemplo de sistema de arquivos de rede.

Como fazer com que um dispositivo seja montado automaticamente no boot?
Para isso temos que editar o arquivo /etc/fstab. Façamos o seguinte:
vim /etc/fstab
Em seguida, coloca o cursor na última linha do arquivo, digita o e o vim entrará em modo de edição. No arquivo adicionamos a linha a seguir:
/dev/sdb1 /mnt ext2 defaults 0 0
Teclamos ESC e digitamos :x para sair e salvar. Feito isso, reiniciamos a máquina virtual e as novas configurações serão aplicadas. Para verificarmos os dispositivos montados usamos o comando mount.

/usr é um exemplo de diretório em que os dados são compartilháveis.

A imagem do kernel é um tipo de dado estático pois é alterada apenas quando o sistema é atualizado.

Sobre a árvore de diretórios
O Linux tem uma estrutura de diretórios peculiar, objeto de uma série de padronizações e similar à que pode ser encontrada em versões comerciais de Unix.
E quem garante que cada distribuição de Linux vá obedecer aos padrões existentes?
Ninguém. Mas os usuários esperam isso – desrespeitar os padrões significa que softwares desenvolvidos levando em conta os padrões existentes não irão funcionar na sua distribuição.
O desrespeito aos padrões pode levar a problemas sérios: uma versão relativamente antiga de uma distribuição de Linux bastante usada no Brasil gravava seu arquivo de definição de fusos horários dentro do diretório /usr. Quando algum administrador de sistemas experiente optava por gravar o diretório /usr em uma partição ou disco separado (respeitando o padrão), o arquivo deixava de estar disponível durante o boot. Resultado? Um erro difícil de identificar, que resultava em
problemas principalmente durante o horário de verão.
Assim, as distribuições que desejam participar do mercado corporativo tendem a aderir aos padrões, evitando causar problemas desnecessários aos administradores.
Da mesma forma, desenvolvedores de software devem respeitar e levar em conta os padrões existentes na estrutura de diretórios do sistema.
Fonte: Introdução ao Linux (Capítulo 9 - Quem garante?)

Bash é um shell.

Segundo a documentação oficial, o /root é um diretório opcional, mas é considerado recomendável por questões de segurança.

Nos sub-diretórios /sbin, /usr/sbin e /usr/local/sbin apenas o usuário root tem permissão de escrita e correspondem aos locais onde encontram-se os utilitários usados pela administração do sistema. Já nos sub-diretórios /bin, /usr/bin e /usr/local/bin qualquer usuário pode ter permissão de escrita. Isso é definido pela variável de ambiente denominada PATH. Mesmo alterando essa variável de ambiente, pode ser possível ter permissão de leitura, mas não de gravação.

Os sub-diretórios /usr e /usr/local possuem a mesma hierarquia.

Segundo a documentação oficial, os sub-diretórios /var/tmp e /tmp tem a mesma finalidade, porém após a inicialização do sistema, o sub-diretório /tmp tem seus arquivos apagados, ao passo que os arquivos do sub-diretório /var/tmp tem seus arquivos mantidos após a inicialização.

Não deu para realizar a prática por falta de tempo, fica para amanhã!!!

E assim terminou a aula 4 :)

Nenhum comentário:

Postar um comentário