domingo, 26 de outubro de 2008

Utilizando aplicativos do VI (editor)

Utilizando aplicativos do VI (editor)

Procurar uma palavra: ESC + /palavra Exemplo: /procurar

Ir para linha desejada: ESC + :numero da linha Exemplo: :100
  • gg = Vai para o início do texto;
  • gzão - shift + g = Vai para o fim do texto;
  • j = desce o cursor;
  • i = Para escrever;
  • x = Sobe o cursor;
  • w = cursor para direita.
Outra dica legal é com o comando LESS, você pode colocar a porcentagem para visualizar o texto, muito útil na verificação de logs gigantes que você tem que ficar no PAGE DOWN por um tempão e você só queria ir para o fim da página. Ex:
  • ESC + A porcentagem que você quer;
  • ESC + 1% - Inicio do texto;
  • ESC + 50% - Metade do texto;
  • ESC + 100% - Fim do texto.
Copiar linhas:
  • ESC + dd (Recorta a frase que você quer copiar);
  • ESC + p (Cola a frase).
Nos dois comandos acima tem que ter um macete para sua utilização, por exemplo, você primeiro usa o ESC + dd (que recorta), se você quiser manter o que foi copiado, use o ESC + u. Agora que vem a dica, imagine se você recorta a frase, quer deixar ela no mesmo lugar e precisa colar essa frase (que você copiou) em outro local e para isso você precisa abrir uma linha????

Faça assim:
  • ESC + dd - recorte depois;
  • ESC + u - deixa a frase onde estava;
  • Aperte INSERT, abra linha que você quer colar (não digite nada porque senão você perderá o que você copiou);
  • Aperte ESC + p para colar e pronto!!!
Obrigado ao Viva o Linux e Fábio pelas dicas nos errinhos.

Lucas Rocha
Administrador de Redes em Linux
Artigo protegido pelas leis GPL (GNU/LINUX) com divulgação
gratuita e mantendo a divulgação do autor

segunda-feira, 13 de outubro de 2008

Tutorial sobre scripts de inicialização do Linux

Excelente tutorial encontrado em :

http://dicaslinux.linuxsecurity.com.br/?modulo=artigos&acao=ver&registro=7

Ele ajuda a fazer scripts que autoexecutam com o iniciar ou desligar do pc

Autor :
Rodrigo P. Telles - telles@hypermall.com.br

SYSV-Scripts


Eu tenho percebido que algumas pessoas estão tendo problemas para adicionar scripts de controle de ações durante o BOOT e HALT do linux, então resolví escrever esse pequeno how-to sobre o assunto.

Em primeiro lugar é preciso entender o esquema do SYSV.

O SYSV está incluído na maioria das distribuições Linux (principalmente as que estão baseadas no RedHat) e funciona na seguinte estrutura de diretórios:

    /etc/rc.d
/etc/rc0.d --> 0 - halt
/etc/rc1.d --> 1 - Single User
/etc/rc2.d --> 2 - Multiusuário, sem NFS
/etc/rc3.d --> 3 - Modo multiusuário completo
/etc/rc4.d --> 4 - Não usado
/etc/rc5.d --> 5 - Start em X11
/etc/rc6.d --> 6 - Reboot
OBS: Dependendo da versão do SYSV e da distribuição esse esquema pode aparecer no diretório "/etc/rc.d/"

Dentro desses diretórios curiosamente só existem links simbólicos que apontam para o script real que deve estar em "/etc/rc.d/init.d/", e os links também curiosamente começam com "S" ou "K" seguidos de um número no formato decimal (2 casas - Ex: 10,85,99,etc) e o nome pelo qual o SYSV o identificará.

Ex: S95gpm
Esse formato siginifica:
S --> Start
K --> Stop
95 --> Sequência que o script será executado em tempo de BOOT.
Ou seja, se o link for "K10gpm" ele será o décimo script executado com o parâmetro "stop" (K10gpm stop) em tempo de BOOT, e se for "S10gpm" ele será o décimo script executado com o parâmetro "start" (S10gpm start), sendo assim o SYSV entende que alguns scripts são ou precisam ser executados antes ou depois de outros scripts. Ficou complicado ?
Um exemplo que pode ser citado sobre essa ordem são os scripts que precisam de networking (rede) já funcionando para poderem ser startados:

Ex:

/etc/rc3.d/S20network --> Start de número 20
/etc/rc3.d/S25squid --> Start de número 25

Essa sequência está correta, pois o DAEMON (Servidor) Squid (Proxy) precisa que os serviços de rede já estejam funcionando para poder startar com sucesso.
A numeração inversa dos scripts faria com que o script do squid falhasse:

/etc/rc3.d/S25network --> Start de número 25
/etc/rc3.d/S20squid --> Start de número 20

Nesse esquema significa que todo link/script (executável - rx) que estiver dentro do diretório:

"/etc/rc0.d" será executado no "HALT" com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

"/etc/rc1.d" será executado em "Single Mode" (Safe Mode) com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

"/etc/rc2.d/" será executado em "Multiusuário, sem NFS" com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

"/etc/rc3.d" será executado em "Multiusuário completo" com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

"/etc/rc4.d" não será utilizado.

"/etc/rc5.d" será executado em "X11" (modo gráfico - com as novas distribuições que utilizam instalação gráfica isso é comum) com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

"/etc/rc6.d" será executado em "Reboot" com o parâmetro referente a sua letra (S ou K) em uma sequência determinada (05,10,etc).

Acho que agora você deve estar começando a entender essa bagunça toda de letras, números e diretórios certo ?
Espero que sim...mas também deve estar se perguntando como inserir um script em todos esse diretórios de uma vez só, e como deve ser esse script ?

Certo, vamos ao que interessa agora.

Construindo scripts compatíveis com o SYSV:

1 - O script precisa começar (primeira linha) com

#!/bin/bash
ou
#!/bin/sh

2 - O script precisa ter a seguinte linha
# chkconfig: 2345 85 15
É isso mesmo, mais números :^)

Essa linha significa:
chkconfig --> aplicação que vai adicionar o script no SYSV 2345 --> níveis (diretórios) aonde o link para o script vai ser adicionado para start
85 --> sequência de "start"
15 --> sequência de "stop"

Vale lembrar que os níveis que não forem adicionados para start (S) serão automaticamente marcados para stop (K), no nosso caso será 016 (0,1 e 6).

3 - O script precisa ter uma descrição

# description: Aqui você coloca a descrição do seu script

4 - O script pode executar o script de funções do sistema

[ root@localhost /]# "/etc/rc.d/init.d/functions" para poder mostrar as mensagens de "OK", "FAILED" e "PASSED", existem outras funções que podem ser utilizadas, recomendo uma breve "fuçada" nesse script.

Lembre-se que isso é opcional, mas o seu uso é recomendado.

4- O script precisa ter sessões de "start" e "stop" (outras são opcionais).

OBS: Todas as linhas que tem sustenido (#) no início precisam realmente estar comentadas.

Agora vamos escrever um script de exemplo que apenas mostra mensagens no console, como "Isso é um teste..." e "Isso não é um teste...":
#!/bin/bash
#
# chkconfig: 235 65 40
# description: Esse script é apenas um exemplo de scripts SYSV
#
. /etc/rc.d/init.d/functions #<-- essa linha é opcional #Se você optar por não utilizar essa linha, substitua #o comando "gprintf" por "printf". case "$1" in start) gprintf "Starting %s services: " "meuscript" printf "Isso é um teste..." echo ;; stop) gprintf "Stoping %s services: " "meuscript" printf "Isso não é um teste..." echo ;; restart) #<--opcional $0 stop $0 start ;; *) gprintf "Modo de usar: %s {start|stop|restart} " "meuscript" exit 1 esac exit 0
Salve esse script com o nome "meuscript".

Esse comando coloca o arquivo no diretório "/etc/rc.d/init.d/" com as permissões necessárias.

[ root@localhost /]# install -o root -g root -m 755 meuscript /etc/rc.d/init.d/

Agora vamos incluí-lo no SYSV em uma tacada só, utilizando o utilitário chkconfig que está presente em praticamente todas as distribuições que suportam SYSV.

[ root@localhost /]# chkconfig --add meuscript

Ufa, o script está pronto para ser utilizado no SYSV, se você possuir o utilitário "ntsysv" que também está disponível em praticamente todas as distribuições execute-o e verá o seu script listado e marcado para start.

Agora você pode rodar o seu script no BOOT/HALT ou então no próprio console:

/etc/rc.d/init.d/meuscript

Modo de usar:
[ root@localhost /]# meuscript {start|stop|restart}
[ root@localhost /]# /etc/rc.d/init.d/meuscript start
Starting meuscript services: Isso é um teste...

[ root@localhost /]# /etc/rc.d/init.d/meuscript stop
Stoping meuscript services: Isso não é um teste...

[ root@localhost /]# /etc/rc.d/init.d/meuscript restart
Stoping meuscript services: Isso não é um teste...
Starting meuscript services: Isso é um teste...
Você também pode utilizar o chkconfig para gerenciar os seus scripts:

chkconfig meuscript off --> desabilita o start no BOOT
chkconfig meuscript on --> habilita o start no BOOT
chkconfig --del meuscript --> remove o meu script do SYSV

[ root@localhost /]# man chkconfig para maiores informações.

É interessante você rodar cada um desses comandos e depois se dirigir aos níveis de diretórios que você escolheu (235) e verificar quais são as mudanças feitas para um melhor entendimento.

Ex:
[ root@localhost /]# chkconfig --add meuscript
ls -l /etc/rc.d/rc0.d/
...
K40meuscript ->
../init.d/meuscript

Parece familiar ?

...ls -l /etc/rc.d/rc1.d/
...
K40meuscript -> ../init.d/meuscript

Parece familiar ?
...
ls -l /etc/rc.d/rc2.d/
...
S65meuscript -> ../init.d/meuscript
...
ls -l /etc/rc.d/rc3.d/
...
S65meuscript -> ../init.d/meuscript
...
ls -l /etc/rc.d/rc4.d/
...
S65meuscript -> ../init.d/meuscript
...
ls -l /etc/rc.d/rc5.d/
...
S65meuscript -> ../init.d/meuscript
...
ls -l /etc/rc.d/rc6.d/
...
S65meuscript -> ../init.d/meuscript
...
Agora rode "chkconfig meuscript off" e verifique novamente os diretórios, aí sim você vai entender porque é interessante utilizar scripts compatíveis com SYSV.

Espero que esse artigo seja de utilidade para todos.
Rodrigo P. Telles - telles@hypermall.com.br




Uma pequena observação para o Ubuntu sobre o arquivo /etc/rcS.d :

Os scripts nesse diretório começam com a letra S e são executados quando o sistema inicia, mesmo em single user. (rc1) Os scripts são simbólicos e apontam para /etc/init.d/ .
Para disabilitar ums script neste diretório renomeie-o para que comece com a letra K

A partir do S40 , todos os sistemas de arquivo estão montados e a rede está disponível, todos os drivers já foram inicializados.
Depois do S60 , o relógio já foi setado , o NFS já foi montado e o sistema de arquivos já está limpo.

Minhas impressões do Ubuntu 8.10 beta - the Intrepid Ibex

Utilizei o Gerenciador de Atualização semana passada para atualizar meu ubuntu para o 8.10 beta . Fantástico, agora o nautilus tem abas, e o firefox crasha menos nada de "terminal" no menu aplicativos, ainda temos o velho "Consola" em português de Portugal.

Temos agora a opção de Encriptar as pastas que é muito fácil de ser usada. Se você não tiver uma chave própria basta ir em "Chaves e senhas" e criá-la;

O ícone sair da sessão não tem mais todas aquelas opções , só fechar sessão e trocar de usuário.




Entretanto uma coisa me deixou encucado. Hoje ao ligar o pc (que demorou um bocado para iniciar) noto que existem uns 20 processos estranhos de nome :

bruteBR01 até bruteBR99 (pulando alguns numeros)

fazendo uma busca identifiquei o programa que respondia por esses processos . Ele era uma pasta escondida em

/etc/.dat/brutebr2

a pasta continha :

bruteBR0 bruteBR15 bruteBR25 bruteBR35 bruteBR45 bruteBR55 bruteBR65 bruteBR75 bruteBR85 bruteBR95
bruteBR1 bruteBR16 bruteBR26 bruteBR36 bruteBR46 bruteBR56 bruteBR66 bruteBR76 bruteBR86 bruteBR96
bruteBR10 bruteBR17 bruteBR27 bruteBR37 bruteBR47 bruteBR57 bruteBR67 bruteBR77 bruteBR87 bruteBR97
bruteBR100 bruteBR18 bruteBR28 bruteBR38 bruteBR48 bruteBR58 bruteBR68 bruteBR78 bruteBR88 bruteBR98
bruteBR101 bruteBR19 bruteBR29 bruteBR39 bruteBR49 bruteBR59 bruteBR69 bruteBR79 bruteBR89 bruteBR99
bruteBR102 bruteBR2 bruteBR3 bruteBR4 bruteBR5 bruteBR6 bruteBR7 bruteBR8 bruteBR9 ips.txt
bruteBR103 bruteBR20 bruteBR30 bruteBR40 bruteBR50 bruteBR60 bruteBR70 bruteBR80 bruteBR90 libcrypto.so.2
bruteBR11 bruteBR21 bruteBR31 bruteBR41 bruteBR51 bruteBR61 bruteBR71 bruteBR81 bruteBR91 libssh.la
bruteBR12 bruteBR22 bruteBR32 bruteBR42 bruteBR52 bruteBR62 bruteBR72 bruteBR82 bruteBR92 libssh.so
bruteBR13 bruteBR23 bruteBR33 bruteBR43 bruteBR53 bruteBR63 bruteBR73 bruteBR83 bruteBR93 run
bruteBR14 bruteBR24 bruteBR34 bruteBR44 bruteBR54 bruteBR64 bruteBR74 bruteBR84 bruteBR94 sc

bom , minha impressão leiga é de que isso seja um script para ataque usando força bruta, ou seja existe um arquivo com uma faixa de ip (o ips.txt) e os arquivos brute são processos que atacam esses ips e retornam para um endereço de email(que está nos arquivos) os ataques com sucesso.

Me parece que esses processos começaram assim que eu fiz o update para o 8.10.

Se alguém notou esses processos também, gostaria de saber se também foi após ter instalado o 8.10 ou seja se estão relacionados os casos.

Por segurança eu instalei o clamav, removi a pasta com os scripts o que desativou o seu iniciamento automático e solucionou o problema.