segunda-feira, 29 de junho de 2009

Visão Geral da Árvore de Diretórios

Inicialmente para falar da árvore de diretórios, é importânte saber que existe um padrão para a estrutura de diretórios no Linux, cujo o nome é (FHS - Filesystem Hierarchy Standart), mas nem todas as distribuições seguem a risca as especificações da FHS.
A FHS organiza a estrutura do sistema por meio de duas categorias principais:

  • "Compartilháveis" ou "Não Compartilháveis".
A separação entre dados compartilháveis e não compartilháveis é de utilizar em um ambiente de rede, onde o compartilhámento de dados visa a redução de dados em disco.

  • "Variáveis" ou "Estáticos".
A ideia de diretórios estáticos ou não é para facilitar a integração e funcionamento do sistema, além de aumentar a segurança dos dados, permitindo proteger diretórios estáticos com permições mais restritas.

Descrições mais detelhadas dos diretórios.

/bin

É nesse diretório que são armazenados os binários do sistema, não pode estar em uma partição separada. Neste diretório não pode conter sub-diretórios; Padrão FHS.

/boot

Nesse diretórios estão contidos os arquivos de boot, componentes essenciais para a inicialização do Linux, além do kernel. Este diretório ppode ser montado em outras partições sem problemas.

/dev

Os dipositivos do sistema ficam armazanados no /dev. Este diretório não pode ser montado em outras partições.

/







TAR

O Tar é a ferramenta de becape mais difundida no mundo Linux. Ele é capaz de arquivar vários arquivos em um só.

Para compactar os dois arquivos:
prog01.c prog02.c

basta:
tar -cvzf programas.tar.gz prog01.txt prog02.txt .

Para descompactar esses dois arquivos:
tar -xzvf programas.tar.gz

Mario Uzae
E-mail: mariouzae@gmail.com

Comando Periódicos - cron

Os administradores de redes Linux periodicamente precisão executar determinado programas; Para isso existe o agendamento cron que pode programar a execução de tais programas em determinada hora. Por exemplo o administrador quer limpar os diretórios que contenham arquivos temporários antigos (/tmp e /var/tmp), evitando assim que o disco rígido fique cheio; ele pode criar um script que faça esta limpeza através do cron, o administrador determina em que data, hora e minuto deseja que seja executado este script. O cron é um programa que roda em background (daemon) ou seja, o init se encarrega de iniciar este serviço que pode ser configurado diretamente no arquivo /etc/crontab.

Entendendo o arquivo /etc/crontab

Esse é o arquivo principal do cron, Somente o usuários root pode edita-lo. O cron possui entradas de agendamento padrão da seguinte maneira:

m h d M s usuário comando

Significado dos campos:
m Minuto (0 a 60)
h Hora (0 a 23)
d Dia do mês (1 a 31)
M Mês do ano (1 a 12)
s Dia da semana (0 a 7)

Exemplo, no caso desmostrado abaixo vou pedir que o cron execute uma tarefa de apagar todos os arquivos que estão no diretório /tmp em determinado horário:

Primeiramente vou editar o arquivo /etc/crontab, logo após vou me deparar com o layout padrão. Não se esqueça que as datas e horas em de ser compativéis ao seu sistema atual.
m h dom mon dow user command
55 20 29 6 1 root rm /tmp/*

saia salvando do arquivo crontab e depois da hora em que você especificou para deletar os arquivos, verifique se o agendamento foi executado com sucesso.
A partir daí só depende de sua necessidade e criatividade para criar agendamentos úteis como uma rotina de becape ou um agendamento para desligar o computaodor. (:>

Mario Uzae
E-mail: mariouzae@gmail.com

Syslog - Sistema de Log do Linux

A verificação de logs é muito importante para os administradores de sistema *nix, pois nos arquivos de logs é que vemos os avisos, mensagens de erro, e outros alertas. Para que seja possível verificar todos estes alertas o linux armazena estas informações em um arquivo chamado syslog, que geralmente fica contido no diretório /var/log/syslog. O programa syslog pode ser configurado para arquivar diferentes mensagens no arquivo de acordo com o nível de importância ou origem. Geralmente estas mensagens com um nível de importância maior se refere as mensagens mais visualizadas ou que realmente interessa ao administrador. Você pode configurar o syslog no diretório /etc/syslog.

Mario Uzae
E-mail: mariouzae@gmail.com

Acesso a partir de terminais

Os acessos a partir de console, o seja, sem ambiente gráfico, é disponibilizado pelo getty que pode oferecer até 64 instâncias de console. O init inicia uma instância distinta do getty para cada terminal, no qual o acesso é permitido, a partir daí o getty lê o nome de usuário e senha digitados que roda o programa de login que verifica se os nomes e senhas estão corretos, logo após a verificação do programa de login, este mesmo programa inicia o shel do usuário que pode ser o bash, sh, entre outros. O Kernel não tem conhecimentos de acessos de usuários, pois tudo é controlado pelos programas do sistema.

Mario Uzae
E-mail: mariouzae@gmail.com

quinta-feira, 25 de junho de 2009

Entendendo o Kernel - Ínicio

Entendendo o Kernel

O Kernel é o núcleo do sistema que conversa diretamento com o hardware.
Além de trocar mensagens diretamento com o hardware ele("kernel") é responsável
por todo o gerenciamento dos recursos do sistema operacional, inclusive de definir as formas
de operações com todos o periféricos, gerenciamento de memória, interrupções e outros.

Suporte a Hardware no Linux

Para que um determinado software funcione corretamente, é necessário que o Kernel possua suporte ao mesmo.
O Kernel do linux pode suportar dispositivos de hardware das seguintes maneiras

-> Kernel (built-in)
: Desta maneira o código que disponibiliza o funcionamento do hardware é implementado diretamente ao código no Kernel.

-> Kernel (modular): O Kernel oferece suporte aos dispositivos de hardware através
de módulos, que podem ser ligado e desligado de acordo com sua necessidade de uso do tal
dispositivo. O Kernel de forma modular fica mais enxuto, ou seja, inicia somente o que você necessita deixando o sistema como um todo mais rápido e de até economia de energia.

Versões númericas do Kernel

Para verificar a versão atual do Kernel no sistema, é usado o comando uname -r para exibir as númerações da versão.
Cada número tem um significado que irá ser tratado com mais detales abaixo:

user@debian5:~$ uname -r
2.6.26-1-686
A B C D

Onde:
A – VERSION: Número principal (raramente muda).
B – PATCH LEVEL: Indica mudanças importantes no funcionamento do kernel do Linux. Se ímpar, indica um kernel experimental, se par, então é um kernel considerado estável (”de produção).
C – SUBLEVEL: Sua evolução indica o suporte a novos dispositivos, bem como correção de bugs e pequenos melhoramentos no sistema.
D – EXTRA VERSION: Usado quando desejamos diferenciar duas compilações de um kernel de mesma versão, afim de construírem de módulos separados.

Outras opções que podem ser utilizadas com o comando uname:

-a (lista todas as informações)
-s (lista o nome do kernel)
-n (lista o hostname)
-v (versão do kernel)
-m (lista a arquitetura do cpu)
-p (tipo do cpu)
-i (plataforma de hardware)
-o (sistema operacional)


Diretório dos módulos do sistema

Os módulos já compilados no Kernel são armazenados no diretório /lib/modules/
Neste diretório contém os módulos que estão organizados sob uma estrutura comum, Alguns arquivos e diretórios seguem a seguir:

->modules.alias - Possui uma lista dos módulos em relação aos dispositivos de hardware.
->modules.dep - Possui uma árvore de dependencias dos módulos.
->modules.pcimap - Armazena informações sobre todos os dispositivos PCI.
->modules.symbols - Possui a lista dos símbolos internos dos módulos.
->modules.usbmap - Armazena o mapa de dispositivos USB conhecidos.
Kernel/ - Contém todos os módulos compilado no sistema.
Kernel/Drivers/ - Contém todos os módulos que carregam os módulos de hardware.

Listando Módulos Carregados

lsmod - Exibe os módulos carregados pelo sistema.

Dica: Para ver o tamanho que o módulo ocupa na memória execute $ cat /proc/modules

Alguns módulos depende do outros módulos para funcionar, para ver se certo módulo possui depêndencias execute, $ lsmod |grep cdrom

Obter informações sobre o módulo
$ modinfo cdrom
ou para mostrar somente o local que está o módulo:
$ modeinfo -F filename cdrom

Descarregando Módulos
rmmod ide_cd
rmmod cdrom

Carregando Módulos
modprobe -v ntfs

Listando e pesquisando módulos disponíveis

modprobe -l - lista todos os módulos disponíveis
modprobe -l "*tcp*" - neste caso lista todos os módulos com o nome tcp

Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 15 de junho de 2009

Adicionando Usuários em Massa

Este script pega o arquivo "master.passwd.txt" que contém o arquivo passwd separando o nome do usuário e a senha criptografados e separados por vírgulas. Depois separa estas linhas e adiciona os usuários.

#/bin/bash

IFS='
'
for LISTA in `cat master.passwd.txt | cut -d , -f 1`
do
senhausuario=`cat master.passwd.txt | grep $LISTA | cut -d , -f 2`
listagem=`echo $senhausuario | egrep '[ ]'`
/bin/groupadd grupo
/usr/sbin/useradd $LISTA -s /bin/bash -d /home/$LISTA -p $senhausuario -g grupo
/bin/mkdir -p /home/$LISTA

done

exit 0

Mario Uzae
e-mail: mariouzae@gmail.com