Arquivo | fevereiro, 2012

Serviços do Sistema

12 fev

Inicialmente no artigo Inicialização do Sistema foi descrito todas as etapas que ocorre quando ligamos o computador até o momento que sistema operacional esteja pronto para uso. Descobrimos que no GNU/Linux o primeiro processo a ser executado é o init, e que ele é responsável por iniciar todos os outros serviços que serão carregados de acordo com o nível de runlevel configurado no arquivo /etc/inittab. O init por padrão inicia automaticamente um certo número de processos, para manter a segurança do sistema é extremamente importante termos conhecimento de quais processos estão sendo executados em nosso computador, muitas das vezes são processos que não iremos usar e podemos desativa-los para minimizar sua exposição a uma possível vulnerabilidade, ou então, um processo que precisamos e está desativado. Existe diferentes maneiras de está verificando e gerenciando os serviços do sistema em cada nível de runlevel. Nas distribuições derivadas do Red Hat isso pode ser feito das seguites maneiras: por uma interface gráfica chamada de Ferramentas de Configuração de Serviços, pelo utilitário Ntsysv, que é uma interface mais simples, e pelo Chkconfig, um utilitário modo texto muito fácil de ser usado. Essas ferramentas não modificam os scripts localizado dentro do diretório /etc/init.d, elas vão apenas adicionar, remover ou modificar os links simbólicos dentro dos diretórios rc[0 à 5].d. Vamos conhecer um pouco de cada uma delas e ver como que podemos usa-las.

A primeira delas é a mais fácil de todas.

Ferramentas de Configurado de Serviços: É o modo mais simples de modificar os serviços que serão inicializados pelo sistema, ideal para quem está começando a utilizar o sistema GNU/Linux. No CentOS para acessa-la basta ir no menu Sistema >> Administração >> Serviços
Na janela que se abre podemos ver do lado esquerdo os diverso tipos de serviços do sistema localizados no diretório /etc/rc.d/init.d, os que aparecem com o quadradinho marcado estão sendo inicializados no nível runlevel que está sendo mostrado na execução atual – Atualmente Executando No Nível de Execução 5. Se clicarmos em algum desses serviço irá aparecer uma breve descrição do serviço e o seu status. Se deseja modificar os serviços de outro nível runlevel basta ir no menu – Editar Nível de Execução – selecionar o nível runlevel desejado e fazer as modificações.

Ntsysv – O Ntsysv é uma interface mais simples do que a anterior, mas possui a mesma funcionalidade. É acessada pelo terminal digitando o comando #/usr/sbin/ntsysv como root ou podemos digitar #setup e navegar até serviços do sistema. Irá abrir uma janela azul mostrando uma lista com todos os serviços do sistema.
Podemos navegar através deles com as setas do teclado, ativar ou desativar um determinado serviço com a tecla “Space”. Após fazer as modificações aperte a tecla “Tab” e escolha “Ok” para salvar as modificações ou “Cancelar” para deixar tudo como estava, agora e aperte “Enter” para sair do Ntsysv.

Chkconfig – O utilitário chkconfig é muito simples de ser usando, e muito útil. Por exemplo se quiséssemos criar um script de firewall com regras personalizadas, e configurar esse script para ser executado automaticamente todas as vezes que o sistema for iniciado, como poderíamos fazer isso?. Uma das maneiras é criarmos um arquivo com as regras dentro de algum diretório, exemplo: /etc/regrasfirewall e depois abrirmos o arquivo rc.local localizado dentro do diretório /etc/rc.d/, que é um dos arquivos inicializado pelo init, e acrescentarmos a seguinte linha: . /etc/regrasfirewall referente ao caminho onde está localizado o script. Ou então, poderíamos otimizar esse processo colocando o arquivo regrasfirewall dentro do diretório /etc/rc.d/init.d junto com os demais script com serviços do sistema, dar permissão de execução com o comando chmod – #chmod 755 regrasfirewall – e depois usar o chkconfig para criarmos um link simbólicos dentro dos diretórios rc [1 à 5].d. Dessa forma poderíamos ativar e desativar o serviço regrasfirewall como qualquer outro pela interface gráfica ou pelo Ntsysv como explicado anteriormente.

Vamos executar esses passos.
Depois de criado o arquivo regrasfirewall precisamos acrescentar no script após o #!/bin/bash
as seguintes linhas:
#description:<descrição do serviço a ser configurado>
#chkconfig: 2345 90 91
#processname: <nome do processo criado>

. /etc/rc.d/init.d/functions # Determina as especificação das funções de script padrão de inicialização.

Obs: Não esqueça o ” . ” que existe antes da linha /etc/re.d/init.d/functions.

A primeira linha, que é um marcador para o chkconfig, informa que o script deve ser inicializado nos níveis de execução 2, 3, 4 e 5, com uma ordem de inicialização de 90 e uma ordem de finalização de 91.
A segunda linha é uma descrição do que o serviço em questão realiza.
Vamos usar o chkconfig para criar o link simbólicos nos diretórios rc [2 à 5].d através do comando:

#/sbin/chkconfig – -add regrasfirewall

Pronto … podemos verificar pela interface gráfica que o serviço regrasfirewall já está sendo listado junto com os demais serviços do sistema.

Essa verificação também pode ser feita usando o comando chkconfig da seguinte maneira:

# /sbin/chkconfig – -list regrasfirewall
regrasfirewall 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não

O comando retorna o nome do serviço e em quais níveis runlevels ele está ativo.
Se quiséssemos listar todos os serviços executaríamos o comando da seguinte maneira:

# /sbin/chkconfig – -list
acpid 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
anacron 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
apmd 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
atd 0:não 1:não 2:não 3:sim 4:sim 5:sim 6:não
auditd 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
autofs 0:não 1:não 2:não 3:sim 4:sim 5:sim 6:não
avahi-daemon 0:não 1:não 2:não 3:sim 4:sim 5:sim 6:não
avahi-dnsconfd 0:não 1:não 2:não 3:não 4:não 5:não 6:não
bluetooth 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
capi 0:não 1:não 2:não 3:não 4:não 5:não 6:não
conman 0:não 1:não 2:não 3:não 4:não 5:não 6:não
cpuspeed 0:não 1:sim 2:sim 3:sim 4:sim 5:sim 6:não
crond 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
cups 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não

Para desativar o serviço execute o comando:

#/sbin/chkconfig – -level 2345 regrasfirewall off

Para iniciar novamente:
#/sbin/chkconfig – -level 2345 regrasfirewall on

Para ativar apenas no nível Runlevel 3:
#/sbin/chkconfig – -level 3 regrasfirewall on

Obrigado a todos.

Fernando Mendonça
:wq

Anúncios

Montar Partição NTFS no CentOS

8 fev

Algumas distribuições Linux por padrão não é possível montar partições do tipo NTFS. No sistema CentOs por exemplo é preciso instalar alguns pacotes para que isso seja possível. Umas das maneira mais fácil e funcional que encontrei para está fazendo isso foi a de um artigo escrito pelo Eddie Magalhães no site http://www.vivaolinux.com.br. Estarei postando os passos descrito por ele.

Começaremos com as instalações e configurações dos repositórios  RPMforge no CentOS. O download do pacote  rpmforge-release pode ser feito através do site:

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge,

devemos escolher a versão do CentOS, podendo ser a 4, 5 ou 6. Para descobrir qual a versão do CentOS ou de alguma outra  distribuição derivadas do Red Hat, basta verificarmos o conteúdo do  arquivo  /etc/redhat-release. Exemplo:

[fernando@localhost ~]$ cat /etc/redhat-release
CentOS release 5.7

Nesse caso a versão do CentOS é a 5.7,devemos baixar o RPMforge 5

Depois de escolher a versão devemos escolher também a arquitetura do computador.Para descobrir a arquitetura, abra o terminal e  digite o comando:
$ uname -i

Exemplo:

[fernando@localhost ~]$ uname -i
i386

Depois de verificado essas informações faça o download do pacote.

Para i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

ou

Para x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Em seguida importe  a chave GPG DAG do repositório RPMforge. É recomendado a utilização dessa chave por questões de segurança, pois é através dela que verificamos a integridade  procedência do pacote.

Para importar a chave abra o terminal e digite o comando:

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Para verificar se a chave do pacote está correta digite o comando:

rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm

Se tudo estiver certo o comando irá retorna a mensagem:

rpmforge-release-0.5.2-2.el5.rf.i386.rpm: (sha1) dsa sha1 md5 gpg OK

Agora podemos instalar o pacote, para isso digite o seguite comando no terminal:
rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm

Depois de feito esses procedimentos devemos atualizar o repositórios do yum com o comando:

# yum check-update

atualizar o kernel do sistema com o comando:

# yum install kernel

e executar o comando a seguir para podermos copilar os modulos do pacotes ntfs-3g:

# yum install kernel-devel.

Agora podemos  finalmente instalar os pacotes ntfs-3g que dará suporte para montar partições do tipo NTFS.

# yum install fuse fuse-ntfs-3g dkms dkms-fuse

Pronto … basta reiniciar o computador que o sistema já terá suporte para montar as partições NTFS.

Inicializando o linux

2 fev

Existe uma sequência de etapas que são executada desde quando o usuário aperta o botão power do computador  até que o sistema operacional linux ou algum outro sistema esteja totalmente funcional e pronto para ser usado. Atualmente esse processo e feito automaticamente sem mesmo que o usuário perceba a complexidade existente por de trás de tal tarefa. Antigamente para inicializar um computador era necessário alimenta-lo com  uma fita de papel que continha um programa de boot ou carregar manualmente um programa de boot utilizando os controles de endereço do painel frontal.Os computadores de hoje são equipados com um software escrito em assenbly chamado de BIOS (Basic Input/Output System), esse software é gravado em uma memória ROM pelo fabricante da placa mãe, e é executado automaticamente todas as vezes que se liga o computador. Ele é responsáveis por ativar os recursos de hardware, após isso ser feito é chamado um novo programa  que também está gravada na memória ROM chamada de  POST(Power On Self Test), encarregado de testar o funcionamento dos recursos de hardware, exemplo: Unidade de disco, memória,processador, teclado, mouse. Após ser realizado todos os testes a BIOS carrega o  setor de boot (os primeiros  512 bytes do disco) para a memória, e executa o que encontra nele. Esse setor e conhecido como  MBR(Master Boot Record), na MBR fica localizado o gestor de arranque responsável por dar inicio ao carregamento da  imagem do kernel para a memória, ou o bootstrap, um pequeno programinha que carrega para a memória algum  gerenciador de boot, os mais conhecidos são o GRUB (Grand Unified Bootloader) e o LILO (Linux Loader), quando existe mais de um sistema operacional instalado no computador ambos permitem a escolha de qual sistema operacional irá ser inicializado, exemplo o Windows ou CentOs, e  na MBR também que fica tabela de partição do disco. Após o usuário escolher pelo gerenciador de boot qual sistema quer inicializar, o gerenciador carrega a imagem do kernel para a memória e este fica responsável por dar sequência na inicialização do sistema. Após isso ainda existe dois estágio no processo de inicialização, o primeiro é a inicialização do kernel propriamente dita, e o segundo a execução do programa init, o qual gerencia a ativação de todos os outros programas. O linux pode ter diferentes níveis de execução, chamados de runlevels. A configuração de qual nível será inicializado pelo init quando se liga o computador é  feita no arquivo /etc/inittab. No total são sete níveis, sendo cada um deles responsável por determinados tipos de serviço.
Nas distribuições derivada do Red Hat os scripts de execução de todos os serviços do sistema estão localizados no diretório /etc/init.d. O que determina quais serviços  serão inicializados em cada runlevel são os links simbólicos dentro dos diretórios  /etc/rc.d/rcx.d, onde “x” pode varia de 0 à 6 . Vamos executar o comando ls -l dentro do diretório /rc.d/rc5.d para ver uma parte de seu conteúdo.

[fernando@localhost rc5.d]$ ls -l

lrwxrwxrwx 1 root root 14 Jan 31 14:02 S55sshd -> ../init.d/sshd

lrwxrwxrwx 1 root root 14 Jan 31 14:01 S56cups -> ../init.d/cups

lrwxrwxrwx 1 root root 15 Jan 31 14:01 K15httpd -> ../init.d/httpd

lrwxrwxrwx 1 root root 18 Jan 31 13:58 S08iptables -> ../init.d/iptables

lrwxrwxrwx 1 root root 14 Jan 31 14:02 K89dund -> ../init.d/dund

lrwxrwxrwx 1 root root 18 Jan 31 13:59 K89netplugd -> ../init.d/netplugd

lrwxrwxrwx 1 root root 14 Jan 31 14:02 K89pand -> ../init.d/pand

lrwxrwxrwx 1 root root 15 Jan 31 13:58 K89rdisc -> ../init.d/rdisc

lrwxrwxrwx 1 root root 14 Jan 31 14:03 K91capi -> ../init.d/capi

lrwxrwxrwx 1 root root 23 Jan 31 14:02 S00microcode_ctl -> ../init.d/microcode_ctl

lrwxrwxrwx 1 root root 25 Jan 31 14:02 S04readahead_early -> ../init.d/readahead_early

lrwxrwxrwx 1 root root 15 Jan 31 14:03 S05kudzu -> ../init.d/kudzu

lrwxrwxrwx 1 root root 16 Jan 31 14:01 S07iscsid -> ../init.d/iscsid

lrwxrwxrwx 1 root root 19 Jan 31 13:58 S08ip6tables -> ../init.d/ip6tables

lrwxrwxrwx 1 root root 18 Jan 31 13:58 S08iptables -> ../init.d/iptables

lrwxrwxrwx 1 root root 18 Jan 31 14:01 S08mcstrans -> ../init.d/mcstrans

lrwxrwxrwx 1 root root 14 Jan 31 14:03 S09isdn -> ../init.d/isdn

lrwxrwxrwx 1 root root 17 Jan 31 14:01 S10network -> ../init.d/network

lrwxrwxrwx 1 root root 16 Jan 31 13:59 S11auditd -> ../init.d/auditd

Podemos observar que o conteúdo do diretório consiste em links simbólicos que apontam para os scripts que estão no diretório /etc/init.d. Esse por sua vez possui scripts que irão inicializar os diversos tipos de serviços  que estão instalados no  sistema. Exemplo: O serviço Samba está configurado para inicializar no runlevel 5, no diretório /etc/rc.d/rc5.d existe um link simbólico “S91smb”, apontando para o script “smb” dentro do diretório /etc/init.d, que está programado para inicializar o serviço samba.conf dentro do diretório /etc/samba/smb.conf. Outras distribuições usam lugares diferentes para armazenar os arquivos runlevels mas não foge muito do padrão.

A primeira letra dos nomes dos links simbólicos pode ser ou “S” ou “K“, indicando se o processo para o qual aponta deve ser ativado (Started) ou desativado (Killed) naquele nível do runlevel. O número que se segue a letra indica a ordem em que os processos devem ser encerrados ou ativados. Essas configurações podem mudar dependendo arquivo rc.d.
Nível 0:
Os scripts do nível 0 estão localizados no diretório /etc/rc.d/rc0.d. Esse nível é responsável pelo desligamento da máquina.
Nível 1:
Os scripts do nível 1 estão localizados no diretório  /etc/rcd/rc1.d. Esse nível ativa o modo de manutenção ou monousúario.
Nível 2:
Os scripts do nível 2 estão localizados no diretório /etc/rc.d/rc2.d. Esse nível ativa o modo multiusúario modo texto.
Nível 3:
Os scripts do nível 3 estão localizados no diretório /etc/rc.d/rc3.d. Esse nível entra em modo multiusuário modo texto com suporte a NFS.
Nível 4:
Os scripts do nível 4 estão localizados no diretório /etc/rc.d/rc4.d. Esse nível não é usando nas distribuições Debia e Red Hat.
Nível 5:
Os scripts do nível 5 estão localizados no diretório /etc/rc.d/rc5.d. Esse nível é responsável pelo carregamento do ambiente gráfico.
Nível 6:
Os scripts do nível 6 estão localizados no diretório /etc/rc.d/rc6.d. Esse nível é responsável pela reinicialização da máquina.

Normalmente os computadores pessoais utilizam o runlevel nível 5, já os servidores que não precisam de interface gráfica utilizam o runlevel nível 3. Os níveis 0 e 6 não pode ser usados na configuração de inicialização caso contrário o sistema nunca será carregado. Os níveis de execução dos runlevel podem ser mudados com o computador em funcionamento basta executar o comando init x, onde x varia de 0 à 6. O arquivo de configuração do runlevel  é o /etc/inittab, para mudar o nível que o sistema irá executar basta modificar a linha id:5:initdefault:. No exemplo está inicializando com o runlevel nível 5, que carrega a interface gráfica. Poderíamos coloca para inicializar no runlevel nível 3 basta mudar o número deixando da seguinte maneira id:3:initdefault:.