quinta-feira, 29 de julho de 2010

Administração de contas de usuários

A manutenção de contas de usuários é uma atividade rotineira na administração de servidores, e talvez a mais importante quando se fala em Segurança da Informação. 
'Se o sistema é vulnerável qualquer um pode entrar"
O controle de acesso à recursos, que são baseados nos grupos e usuários do sistema está ligado a este controle de contas de usuários. O mesmo banco de dados de usuários e grupos podem ser utilizados para controlar acesso a recursos tais como: acesso à Internet, banco de dados, arquivos e diretórios, etc.
Nosso foco então passa a ser, neste momento, o estudo das permissões de arquivos e diretórios, tanto no meio gráfico quanto via console.
    Como já foi dito em sala de aula, é plenamente possível e muito mais fácil criar uma conta unica que possa ser compartilhada com várias pessoas, porém, assim como ocorre em outros sistemas operacionais (como o windows por exemplo), só aconselhamos isso quando o computador em questão for utilizado em casa por exemplo, ou que o usuário que vai utilizá-lo seja uma unica pessoa.
    Porque não usar conta unica nos outros casos? Bem, tudo por uma questão de segurança. Isso tornaria a auditabilidade do sistema, ou seja porcurar erros e culpados, muito mais difícil, e este é um problema grave de segurança - e bastante comum em servidores mal administrados. Resumindo: uma conta do sistema é sempre para um usuário nunca para um departamento inteiro; existe o controle de grupos para isto.
    No Sistema Operacional Linux, existem várias formas de armazenar as contas de usuários e grupos, no que se refere a este estudo, iremos focar na forma mais simples e mais utilizada: os arquivos /etc/passwd, /etc/group e /etc/shadow. Outra mais sofisticada e mais voltada para corporações, são os diretórios, que estruturam os dados de forma semelhante aos diretórios (pastas) do seu sistema de arquivos, compartilhando e centralizando a informação de usuários de toda a empresa através do protocolo LDAP (Lightweight Directory Access Protocol). Mais informações sobre o protocolo LDAP, bem como sua implementação no Linux, o OpenLDAP pode ser encontrado em: http://www.openldap.org.

Simplificando antes de tudo    Vamos procurar mostrar um exemplo bem simples de criação de conta e configuração de senha, sem explicar muito os detalhes e mostrando onde são armazenadas estas informações.
    Para criar um usuário no sistema com o comando useradd, digite o comando useradd como descrito abaixo, vamos usar o nome josue para criar a nova conta.
root]#useradd josue

    Quando você executa este comando está criando um usuário com o nome definido por josue. para verificar a criação do usuário execute 'tail /etc/passwd' e 'tail /etc/shadow'. Os detalhes dos formatos destes arquivos vamos ver posteriormente. Se você tentar efetuar logon com a conta josue, ainda não será possível, pois não foi atribuida uma senha para este usuário, e por questões de segurança ela se encontra desativada, até que se atribua a senha inicial.
    Para atribuir uma senha inicial ou modificar uma já existente, digite o comando:

root]#passwd josue

ATENÇÃO: Tenha cuidado com este comando, pois se o nome do usuário não for informado - executando-se somente passwd - será alterada a senha do super-usuário ou do usuário corrente.

Efetue logon em outra console com a conta que foi criada


login: fulano 
passwd:********

No próximo artigo vamos aprofundar nos arquivos de configuração de usuários.
 
 

quarta-feira, 7 de julho de 2010

Pontos de Montagem

O acesso as partições existentes em seus discos rígidos e disquetes no Linux são através de diretórios. Esses  diretórios são usados para acessar (montar) partições,  e são chamados de Pontos de Montagem. Veremos isso mais adiante.

Identificação de discos e partições

Como já falamos, os dispositivos existentes em seu computador (como discos rígidos, disquetes, tela, portas de impressora, modem, etc) são identificados por um conjunto especial de arquivos que ficam no diretório /dev.

Ao digitar o comando ls /dev  você vai identificar vários arquivos especiais que se encontram dentro do diretório, onde cada um deles identificam um dispositivo especifico do sistema operacional. Observe a figura ao lado que mostra uma lista de dispositivos de um determinado sistema.


Quanto a identificação especificamente de discos rígidos no Linux é feita da seguinte forma:

     /dev/hda1
         |    | || 
         |    | ||_Número que identifica o número da partição no disco rígido.
         |    | |
         |    | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...).
         |    |
         |    |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT).
         |
         |_Diretório onde são armazenados os dispositivos existentes no sistema.

Abaixo algumas identificações de discos e partições em sistemas Linux:

/dev/fd0 - Primeira unidade de disquetes.
/dev/fd1 - Segunda unidade de disquetes.
/dev/hda - Primeiro disco rígido na primeira controladora IDE do micro (primary master).
/dev/hda1 - Primeira partição do primeiro disco rígido IDE.
/dev/hdb - Segundo disco rígido na primeira controladora IDE do micro (primary slave).
/dev/hdb1 - Primeira partição do segundo disco rígido IDE.
/dev/sda - Primeiro disco rígido na primeira controladora SCSI ou SATA.
/dev/sda1 - Primeira partição do primeiro disco rígido SCSI ou SATA.
/dev/sdb - Segundo disco rígido na primeira controladora SCSI ou SATA.
/dev/sdb1 - Primeira partição do segundo disco rígido SCSI ou SATA.
/dev/sr0 - Primeiro CD-ROM SCSI.
/dev/sr1 - Segundo CD-ROM SCSI.
/dev/xda - Primeiro disco rígido XT.
/dev/xdb - Segundo disco rígido XT.

É sempre bom relembrar que, as letras de identificação de discos rígidos podem ir muito além de hdb, no meu micro, por exemplo, a unidade de CD-ROM está localizada em /dev/hdg (Primeiro disco - quarta controladora IDE).

É importante entender como os discos e partições são identificados no sistema, pois será necessário usar os parâmetros corretos para montá-los.
Qualquer dúvida utilize os comentários do blog para perguntar

terça-feira, 6 de julho de 2010

Representação de Dispositivos

É primordial para o profissional que vai atuar em redes conhecer os conceitos e sintaxe para os "dispositivos" dentro do Linux. Mas afinal o que são esses dispositivos:
Dispositivos são componentes de hardware, e ao mesmo tempo do sistema operacional que são compartilhados com o kernel. Podemos citar como exemplo de dispositivos o CDROM, Modens, Impressoras, Disco rígidos etc. No sistema operacional Linux, os dispositivos são tratados como um tipo especial de arquivos, que estão localizados no diretório /dev. Digite o comando  ls /dev  no prompt do linux e você terá uma lista de todos os dispositivos que se encontram dentro da pasta /dev.


Cadê o "C:\" ?


Bem, essa é uma pergunta que todo aluno iniciante do Linux faz. Para entender melhor devemos lembrar que o Linux é outro sistema operacional, por tanto está sujeito às suas próprias regras de sintaxe. É preciso deixar para traz velhos conceitos do windows e suas limitações. Portanto, quando estiver estudando o Linux procure esquecer dos conceitos do windows para entender o novo. Lembre-se você está aprendendo um novo conceito, o Linux não é uma adaptação do windows, é outro sistema operacional.
No caso do Linux não existe a conceituação de unidades de disco como no windows. Os dispositivos de armazenamento como os HD's, são montados em uma pasta e tratados como arquivos especiais.
a sintaxe para os dispositivos seguem a regra /dev/xyzn onde /dev é a pasta onde se encontram os arquivos dos dispositivos e as letras xyzn indicam qual é o dispositivo. Veja o gráfico abaixo:

No que se refere às letras xyzn por definição temos em xy o tipo de dispositivo:

quarta-feira, 30 de junho de 2010

Inicialização de um Sistema Operacional

A função do Sistema Operacional (SO), passa pela carga e execução de programas (softwares) na memória. Bem, se pensarmos que o sistema operacional é um conjunto de programas, fica a pergunta "mas quem cararega o sistema operacional?". Para entender como isso funciona, basta lembrar da BIOS (Basic Input Output System - Sistema Básico de Entrada/Saída). Dentro da BIOS, que fica instalado na placa mãe do computador, possui um software (programa) denominado gerenciador de partida, é ele quem vai dar a caraga no sistema operacional. Por se tratar de um programa configurável, através do gerenciador de partida podemso controlar todo o processo de inicialização do SO, desde o momento que se liga a máquina até a solicitação de login.
Iniciando o Sistema
Assim como existem vários tipos de hardware, existem também vários tipos de programas de boot, isso significa que todo o processo depende do hardware em uso não do sistema operacional, que no nosso caso trabalhamos com a tecnologia de arquiteturas x86 da Intel, onde, ao inicializar o sistema, será executado uma operação chamada Flash RAM. O processo é executado em uma area de memória, mais precisamente no endereço 0xFFFF0, por isso quando essa porção da memória está com defeito, não se inicia o sistema operacional. A primeira coisa que a BIOS executa é o Power On Self Test (POST), cuja função principal é a verificação do hardware e a enumeração e inicialização dos dispositivos locais. A seguir será então, a BIOS procura por dispositivos ativos e válidos na CMOS (boot device), para, assim, inicializar o sistema operacional. Os dispositivos de boot podem ser disquetes (muito raro hoje em dia), discos rígidos (HD's), flash drivers (Pendrive), dispositivos de rede, e outros. No que se refere ao Linux, ele é inicializado a partir de um disco rígido, onde o MBR (Master Boot Record - "Registro de Inicialização Mestre") armazena o gerenciador de partida (ou gerenciador de boot). Observe na Figura abaixo como é a sequencia de inicialização do sistema.


Sequência de boot

De forma simplificada observe como é feita a inicialização do Linux:

1. A BIOS executa o código do MBR: A BIOS (programa armazenado na memória ROM) é o primeiro programa a ser executado. Logo após ser carregado, ele executa um gerenciador de partida que sempre possui uma localização padrão: o primeiro setor do primeiro cilindro do seu dispositivo de boot, conhecido como MBR.
2. O código do MBR carrega o setor de boot : O código da MBR executa o código de um setor de boot que pode ser de qualquer SO específico que, por sua vez, pode estar localizado na mesma partição do MBR ou em outra partição do disco (o próprio MBR é um tipo de setor de boot). Por isso, uma das funções mais importantes do MBR é permitir escolher um setor de boot específico de vários outros disponíveis nas partições do disco rígido.
Esse é conhecido como primeiro estágio do gerenciador de boot.
3. O código do setor de boot carrega o SO: O código do setor de boot tem a função de carregar um SO específico da partição em que está instalado. Cada SO possui características  próprias de boot. Esse também é conhecido como segundo estágio do gerenciador de boot.
4. O SO inicializa-se: A inicialização do SO realiza vários procedimentos necessários para alcançar o pleno funcionamento. Vejamos alguns dos principais: reconhecimento de hardware pelo kernel, carga  os drivers de dispositivo, verificação da integridade dos discos, configuração regional (idioma, formatos de data e hora), configuração da rede, inicialização dos serviços e disponibilização de terminais virtuais - getty (tela de login).