Emergindo grandes pacotes em hardwares fracos com o auxílio de outro computador no Gentoo Linux

Posted by demoncyber | Dicas, Linux | Tuesday 23 September 2008 02:17

Artigo publicado pelo aaron no vivaolinux

Referência:

Emergindo grandes pacotes em hardwares fracos com o auxílio de outro computador no Gentoo Linux

Autor: Aaron Kim Binner da Silva <aaron.binner at gmail.com>
Data: 22/09/2008

Os hardwares utilizados e a configuração do kernel

A idéia é montar o sistema de arquivos do “PC 1″ em uma pasta em “PC 2″ e fazer CHROOT nesta mesma pasta, podendo assim compilar os pacotes necessários utilizando o hardware do “PC 2″ e economizar tempo.

O primeiro PC é um AMD Duron 750 MHZ, 128 MB de ram. Duas placas de rede, sendo uma ligada diretamente à internet e outra ligada ao outro PC através de um cabo cross-over. De agora em diante o chamaremos de PC1.

O “auxiliar” é um notebook acer aspire 5050 (AMD Turion 64 2.2Gz 1GB de ram). O chamaremos de PC2.

Ambos rodam Gentoo Linux.

Para compartilhar a conexão com a internet precisaremos do IPTABLES e o módulo IPTABLE_NAT, e precisaremos também do NFS para podermos montar o hd do PC1 no PC2.

Preparando o seu kernel (versão 2.6)

Certifique-se de que estas opções estão habilitadas no seu kernel:

Networking —>
Networking options  —>
[*] Network packet filtering framework (Netfilter)  —>
[*]   Advanced netfilter configuration
[*]     Bridged IP/ARP packets filtering
IP: Netfilter Configuration  —>
<M> IPv4 connection tracking support (required for NAT)
[*]   proc/sysctl compatibility with old connection tracking
<M> IP Userspace queueing via NETLINK (OBSOLETE)
<M> IP tables support (required for filtering/masq/NAT)
<M>   “recent” match support
<M>   “ttl” match support
<M>   “addrtype” address type match support
<M>   Packet filtering
<M>     REJECT target support
<M>   LOG target support
<M>   ULOG target support
<M>   Full NAT
<M>     MASQUERADE target support
<M>     REDIRECT target support
<M>     NETMAP target support
<M>     Basic SNMP-ALG support
<M>   Packet mangling
<M>     ECN target support
<M>     TTL target support
<M>     CLUSTERIP target support (EXPERIMENTAL)
<M>   raw table support (required for NOTRACK/TRACE)
<M> ARP tables support
<M>   ARP packet filtering
<M>   ARP payload mangling

Estas opções devem estar habilitadas em ambas as máquinas:

File Systems —>
Network File Systems —>
<M> NFS file system support
[*]   Provide NFSv3 client support
<M> NFS server support
[*]   Provide NFSv3 server support

Na dúvida acabei marcando alguns módulos a mais, afinal nunca se sabe quando se vai precisar deles. Se necessário recompile o seu kernel. :)

Compartilhando sua conexão

Com o kernel devidamente configurado, agora basta carregar o módulo iptable_nat e instalar o pacote iptables.

PC1 – ligado diretamente à internet

$ emerge net-firewall/iptables

Se você preferiu marcar as opções no kernel como módulos, agora basta carregar o módulo:

$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Substitua “eth0″ pela sua placa de internet.

Agora sua conexão está compartilhada com todas as outras placas de rede instaladas na máquina.

Você pode agora configurar suas placas com o ip fixo através do comando “ifconfig” ou colocar um servidor DHCP rodando.

Optei pela segunda opção. Para configurar um servidor DHCP precisaremos do pacote net-misc/dhcp.

$ emerge dhcp

Agora edite o arquivo /etc/dhcp/dhcpd.conf. Este é um exemplo de configuração:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.201;
option domain-name-servers 200.177.250.10, 200.204.0.10;
option routers 192.168.254.4;
option broadcast-address 192.168.0.255;
}

Só isto já é suficiente para funcionar o servidor DHCP.

Inicie o serviço:

# /etc/init.d/dhcpd start

PC2 – auxiliar

Basta se conectar via DHCP e verificar o seu DNS em /etc/resolv.conf, se tudo correu bem, agora o PC1 deve estar compartilhando a conexão com o PC2 (não se esqueça de utilizar um cabo cross-over para ligar os dois PCs).

Colocando a idéia em prática

Para podermos colocar toda essa gambiarra pra funcionar precisaremos do pacote nfs-utils instalado em ambos os PCs, então:

# emerge nfs-utils – execute nas duas máquinas

Ao instalar este pacote poderá haver problemas com “Blocked Packages”, caso isso aconteça:

# emerge –buildpkgonly –nodeps PACOTEBLOQUEADO && emerge -C PACOTEBLOQUEANDOAINSTALAÇÃO && emerge –usepkgonly PACOTEBLOQUEADO

Agora basta pôr tudo para funcionar.

PC1 – duron 750

Edite o arquivo /etc/exports, ele provavelmente estará em branco, adicione esta linha:

/ “IP_DO_PC2″ (rw,no_root_squash,sync,no_subtree_check)

Inicie o serviço:

# /etc/init.d/nfs start

PC2 – laptop

# /etc/init.d/nfsmount start
# mkdir /pcmanco
# mount “IP_DO_[PC'1']“:/ /pcmanco -o rsize=1024,wsize=1024,rw
# mount -t proc none /pcmanco/proc -o nodev,nosuid,noexec
# mount -o bind /dev /pcmanco/dev
# mount -t devpts none /pcmanco/dev/pts -o nosuid,noexec,gid=5,mode=620
# mount -o bind /tmp/ /pcmanco/var/tmp/portage
# mount -t tmpfs none /pcmanco/dev/shm -o nodev,nosuid,noexec
# mount -o bind /usr/portage /pcmanco/usr/portage

Faça o CHROOT!!

(substitua o asterisco pelo arch do respectivo processador EX:. i386 ou i486)

# setarch * chroot /pcmanco /bin/bash

Pronto, agora você pode emergir pacotes com grande velocidade até em um pentium 100 com 16MB de ram e ainda ganhar tempo.

Espero ter ajudado.

Referências

  • Share/Bookmark

Novidades Slackware-current (15/09 – 22/09)

Posted by demoncyber | Anuncio, Dicas, Linux, slackware | Monday 22 September 2008 16:05
Keep it Simple...

Keep it Simple...

Muitos pacotes atualizados principalmente os do KDE 4.1, suporte ao bluetooth atualizado, assim como os do X nesta semana. De interessante temos os seguintes pacotes que foram substituidos e adicionados.

intltool: pacote para internacionalização dos autoconfs

bin86: removido

dev86-0.16.17: está substituindo o compilador de assembly bin86 (então depedências podem
ser modificadas cuidar)

gnome-icon-theme-2.23.92-noarch-2.tgz: corrigido problema no anitgo pacote de teste.

slacktrack:atualizado

Acho que é isto de interessante esta semana :) , fica sempre O.O a questão de investir algum tempo brincando com o slacktrack que substitui o checkinstall mas… alguma hora faço isso :)

  • Share/Bookmark

A guerra dos browsers

Posted by demoncyber | Artigo, Dicas | Monday 22 September 2008 14:00
Browser Wars

Browser Wars

Este documentário me fez refletir sobre como o chrome pode afetar a historia do mundo da internet mais uma vez assim como  a netscape já o fez, mas agora sem fazer dos erros das outras grandes empresas se sentindo superiores.

Pena o documentário não ser mais atual e trazer outras partes das historias como a influência do catedral e bazar, do Eric Raymond para fazer com que a netscape se tornasse gratuita e assim criando a mozzila, e depois com o Dave Hyatt e Blake Ross que pegou e reformulou o código do mozilla e criou o firefox que cresceu como a netscape dominando mercado, e por fim hoje temos o nascimento do chrome, falta também a historia de browsers importantes que apareceram neste período como safari da mac, konqueror, browsers inovadores como o opera que criou as abas nos browsers, o cliente de torrent integrado sem contar uma ótima ferramenta de downloads e uma aparência sempre muito limpa. Bom quem sabe fica para um próximo.

Documentário alvo do post :)

http://www.discoverybrasil.com/internet/show.shtml

História um pouco mais atualizada da guerra dos browsers

http://en.wikipedia.org/wiki/Browser_wars.html

Agradecimentos Walmer por indicar o vídeo :)

  • Share/Bookmark

Como instalar o zenmap de várias maneiras

Posted by demoncyber | Dicas, Linux, Programação, slackware | Wednesday 17 September 2008 23:49
Zen... Map...

Zen... Map...

Como instalar o zenmap de várias maneiras

Bom me empolguei em auxiliar um cara no fórum do slackware :) e fiz muitas formas de instalar o znmap no slackware :) . O mais interessante é o script que fiz que sincroniza com a ultima versão do znmap lançada, baixa compila e instala (la moda do gentoo)

Code: 
wget http://repository.slacky.eu/slackware-12.1/libraries/pysqlite/2.4.1/pysqlite-2.4.1-i486-1sl.tgz
wget http://repository.slacky.eu/slackware-12.1/database/sqlite/2.8.17/sqlite-2.8.17-i486-2sl.tgz
installpkg pysqlite-2.4.1-i486-1sl.tgz
installpkg sqlite-2.8.17-i486-2sl.tgz

ou

Code:
slapt-get install pysqlite

Pegando o pacote oficial da versão estável do slackware:

Code: 
wget http://packages.slackware.it/package.php?q=12.1/nmap-4.60-i486-3
installpkg nmap-4.60-i486-3

Utilizando gerenciador de pacote

Code:
slapt-get install nmap

Compilando o pacote

Code:
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap-4.60.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild

Pegando o rpm da ultima versão e convertendo e instalando

Code:
wget http://nmap.org/dist/zenmap-4.76-1.noarch.rpm
rpm2tgz zenmap-4.76-1.noarch.rpm
instalplkng zenmap-4.76-1.noarch.tgz

Compilando o nmap com a ultima versão (4.76)

Para compilar e criar o pacote você deve alterar o nmap.Slackbuild em uma linha com a versão que você quer. A obviamente também baixando o arquivo com a versão que você quer do site

Altere o arquivo nmap.Slackbuild a linha que tem

Code:
VERSION=${PKGVERSION:-4.60}

para

Code:
VERSION=${PKGVERSION:-4.76}
Code: 
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget http://nmap.org/dist/nmap-4.76.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild

Criando script para sincronizar com a ultima versão do znmap direto no servidor
vamos lá fazer um script para ficar sincronizando com o servidor baixar e compilar a ultima versão. Fim não tem mais o que fazer eu acho hauuha )

Code:
wget http://nmap.org/dist/
NAME_VERSION_UPDATE=`grep "nmap.*\.tar\.bz" index.html | cut -f 6 -d '"' | tail -n 1 | sed "s/\.tar\.bz2//g"`
VERSION_UPDATE=`echo $NAME_VERSION_UPDATE | cut -f 2 -d -`
NAME_VERSION=`ls -w 1 /var/log/packages | grep nmap | sed "s/-i.*$//g"`
VERSION=`echo $NAME_VERSION | cut -f 2 -d -`

for i in `seq 2`
do
cmp1=`echo $VERSION_UPDATE | cut -f $i -d . `
cmp2=`echo $VERSION | cut -f $i -d . `

echo $VERSION_UPDATE
echo $VERSION

if(( $cmp1 > $cmp2 ));then
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
sed "s/4.60/$VERSION_UPDATE/g" nmap.SlackBuild > nmap.SlackBuild2 && mv nmap.SlackBuild2 nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget http://nmap.org/dist/nmap-$VERSION_UPDATE.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild
upgradepkg /tmp/nmap-$VERSION_UPDATE-i486-3.tgz
fi
done

Obs: achei a página do nmap muito bagunçada muito colorida )
Obs2: seria legal mudar o slackdesc )

Marco Carvalho de Oliveira

Colméia Grupo de Pesquisa em Software Livre

  • Share/Bookmark

A mágica do rsync

Posted by demoncyber | Artigo, Dicas, Linux | Monday 15 September 2008 06:22
SYNC-ME

SYNC-ME

A mágica do rsync
Este artigo apresenta o aplicativo rsync e algumas dicas de como utiliza-lo. Vamos lá!

Rsync de acordo com o wikipedia
rsync is a software application for Unix systems which synchronizes files and directories from one location to another while minimizing data transfer using delta encoding when appropriate. An important feature of rsync not found in most similar programs/protocols is that the mirroring takes place with only one transmission in each direction. rsync can copy or display directory contents and copy files, optionally using compression and recursion” – Wikipedia sobre Rsync

Ok, mas porque rsync é uma solução mais interessante do que copiar os arquivos na mão e quais são as suas vantagens?
- A sua compressão e o algoritmo de transferência delta-transfer aumenta o desempenho para as transferências
- Pode manter todo as permissões do arquivo
- Pode se utilizar de uma transferência de arquivos segura ( via ssh)

Como faço para instalar?

Acesse a página do projeto e baixe o seu código fonte e compile . http://rsync.samba.org/download.html, ou você pode se utilizar de algum pacote pronto para o seu sistema operacional. Atualmente é difícil encontrar algum sistema operacional baseado no UNIX que não traga essa mágica ferramenta por padrão. Em nosso caso vamos tratar da instalação sendo feita em um Debian lenny:

apt-get install rsync

Certo mas como configurar o daemon do rsync?

Bom o rsync tem um arquivo de configuração padrão chamado rsyncd.conf que fica dentro do diretório /etc. Segue um modelo de estrutura do arquivo:
- Ocultar texto das mensagens anteriores -

#/etc/rsyncd.conf

#Opções Globais
uid = nobody
#habilita para usar um usuário com permissões mínimas chamado nobody
gid = nobody
#habilita para usar um grupo com permissões mínimas chamado nobody
motd file = /etc/rsyncd.motd
# arquivo de mensagem do dia quando logar para a transferência de arquivo
log file = /var/log/rsyncd.log
# arquivo de log de copias e do sistema
pid file = /var/run/rsyncd.pid
# arquivo que mantém o pid do daemon
lock file = /var/run/rsync.lock
#arquivo de trava criando para não abrir vários processos do rsync
use chroot=yes
# habilita o uso do change root o que dá um nível mais alto de segurança a cópia do arquivo que está sendo executada

#Opções Globais

#Opções dos caminhos

[nome_do_meu_caminho_compartilhado]
# Nome dado a especificação do caminho compartilhado
path = /rsync_files_here
#caminho compartilhado
comment = Meu diretório compartilhado pelo Rsync
# comentário sobre o caminho compartilhado
read only = yes
# especifica se o compartilhamento é somente para leitura
list = yes
# habilita a listagem do módulo
auth users = username

#Opções dos caminhos

# Fim arquivo /etcrsyncd.conf

O que é mais necessário além de um bom arquivo comentado para explicar o funcionamento? D

Para rodar o daemon do rsync depois do arquivo de configuração pronto somente é necessário usar o parâmetro –daemon.

rsync –daemon

Estrutura do comando para utilização:

rsync [opções] origem destino

Agora vamos a nossa coleção de mágicas

Sincronia de diretório local: rsync -ravzp /home/usuario/ /home/bkp/
Sincronia de arquivos locais para um servidor: rsync -ravzp /home/usuario/ usuario@192.168.0.5:/home/bkp/
Sincronia de arquivos do servidor para uma maquina local: rsync -ravzp usuario@192.168.0.5:/home/bkp/ /home/usuario/
Listando o diretório: rsync -ravzp usuario@192.168.0.5:/home/bkp/

-r recursivo
-a mantém a estrutura de forma idêntica
-v modo de verbose o qual apresentada os dados do que está sendo executado
-z comprime o arquivo durante a transferência ( aumenta a velocidade de cópia )
-p preserva as permissões

Mais explicações sobre os parâmetros pode-se encontrar em man rsync =p

Espero que este Artigo ajude o pessoal a sincronizar os seus projetos, abraços e até a proxima (Demoncyber)

Ferramenta gráfica para sincronização de arquivos grsync

Dados técnicos:
Licença GNU
Porta 873

Site do projeto

http://samba.anu.edu.au/rsync/

Referência:

http://samba.anu.edu.au/ftp/rsync/rsync.html

http://everythinglinux.org/rsync/

http://en.wikipedia.org/wiki/Rsync

http://www.opbyte.it/grsync/

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=338

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8011

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=882


Marco Carvalho de Oliveira
Ciência da Computação – UDESC – Joinville
COLMÉIA – Grupo de Pesquisa em Software Livre

  • Share/Bookmark

Pesquisa em arquivos pdf de forma recursiva no Linux com Slackware

Posted by demoncyber | Dicas, Linux, Programação, slackware | Monday 15 September 2008 06:21
GREP-ME ? o0

GREP-ME ? o0

Certo dia um professor me procurou perguntando como ele poderia fazer uma busca recursiva em vários arquivos de pdf em várias pastas para saber se existia uma determinada expressão neles, utilizando shellscript e aí está a resposta.

Processo adotado:
- Converter arquivos pdf em texto
- Fazer a busca por expressão regular no arquivo com a expressão requisitada
- Escrever em um outro arquivo os documentos que contém a expressão procurada

Para converter um arquivo de pdf para texto devemos utilizar uma biblioteca de conversão e um programa chamado pdftotext tome cuidado para não trocar pdftext por pdftxt -.- sim eu vivo escrevendo trocado . Desde a versão 12 o slackware adotou como padrão a biblioteca Poppler desenvolvida por Derek Noonburg então para tanto é necessário checar se a você possui esta biblioteca instalada caso não você pode instalar baixando do link abaixo.

http://packages.slackware.it/package.php?q=12.0/poppler-0.6.2-i486-1_slack12.0

Lembrando que nas versões anteriores ao slackware 12 como a 11 o pacote que continham o programa xpdftotext era o xpdf-utils

Nota: caso você não utilize o slackware você pode procurar em sua ambiente pela mesma biblioteca

Estrutura do comando do xpdf

pdftotext [opções] <PDF-arquivo> [<texto-arquivo>]

Exemplo:

pdftotext teste.pdf /tmp/teste.txt

Pesquisa no texto

Para fazer a pesquisa em texto podemos utilizar o programa grep ( convenhamos qualquer distribuição linux possui D ), ele usa como base expressões regulares para busca como referência para aprendizado sobre expressões regulaes recomendo o livro do Aurélio Marinho Jargas segue o link:

http://guia-er.sourceforge.net/

Estrutura do comando do grep

grep [OPÇÃO]… PADRÃO [ARQUIVO]…

grep marco /tmp/teste.txt

Por fim segue o script que chamei de procura-recursiva:

——–

#!bin/bash

IFS=$’\n’

#seta o separador de comandos para quebra de linha isto é para resolver caso tenhamos a indesejável utilização de espaços nos nomes dos arquivos

MYTMP=/tmp/procura-recursiva/

# pasta utilizada pelo programa

rm -rf $MYTMP

mkdir $MYTMP

for files_pdf in `find -type f | grep “\.pdf$” | sed “s/\.//”`

do

LOC_FILE=`pwd`$files_pdf

# diretorio onde se encontra o arquivo seguido do seu nome

NAME_FILE=`basename $files_pdf`

# nome dp arquivo pdf analizado

FIND_FILE=$MYTMP$NAME_FILE.txt

# Arquivo temporário de pdf em forma de texto para ser utilizado na busca rescursiva

pdftotext $LOC_FILE $FIND_FILE

# Converte o arquivo pdf para um arquivo de texto para executar a busca

grep $1 $FIND_FILE >> /dev/null

# Procura no arquivo de texto e joga o resultado para o buraco negro

if [ $? = 0 ]

then

#verifica se a busca foi bem sucedida caso sim imprime que foi econtrada a palavra chave no arquivo

echo “Expressao encontrada no arquivo $NAME_FILE”;

fi

done

Para executar o script basta executar o comando:

bash procura-recursiva expressao

———

Lembrando que apesar deste artigo ser baseado para o Slackware e explicado como executar em outras distros, caso use este documento como referência colocar os créditos. Se perguntarem porque shell? resposta é por que não shell?

D espero que tenham gostado sugestões e críticas:

e-mail: demoncyber@gmail.com
marco@colmeia.udesc.br

Referência

http://www.dicas-l.com.br/dicas-l/20050226.php
http://thobias.org/doc/sosed.html
man find
http://packages.slackware.it/package.php?q=12.0/poppler-0.6.2-i486-1_slack12.0
http://guia-er.sourceforge.net/


Marco Carvalho de Oliveira
Certificate Linux Professional I – LPI
Colméia – Grupo de Pesquisa em Software Livre
Joinville – UDESC – Ciencia Da Computação

  • Share/Bookmark

Tunning Firefox

Posted by demoncyber | Dicas, Hacking | Monday 15 September 2008 06:19
CLICK-ME

CLICK-ME

Este artigo visa mostrar algumas dicas colhidas na net para otimizar o firefox, para ajudar à todas aquelas pessoas que acham o Firefox pesado tornar ele mais rápido. A necessidade disto veio por causa de um dos projetos o qual esta ferramenta estava consumindo muito processamento e memória.

Segue as configurações mudadas e os processo que utilizamos no projeto.( Lembrete antes de fazer as alterações faça backups )

Inicialmente trabalhamos com a sessão de configuração do firefox que pode ser acessada por about:config dentro do seu browser.

Flags modificadas para obter melhor desempenho:

Nome:content.notify.interval
Type: Integer
Value: 2000000
Chave: Teve que ser criada manualmente

- Diminui o intervalo de renderização das paginas do firefox

Nome:content.notify.ontimer
Type: Boolean
Value: true
Chave: Teve que ser criada manualmente

- É uma chave dependente para ativar o content.notify.interval

Nome: browser.tabs.closeButtons
Type: interger
Value: 0 (valor opcional, você pode tentar outros valores citados acima) (valor padrão: 1) (valores opcionais: 0, 1, 2, 3)

- Aqui vem uma das partes que as pessoas não percebem mas consome bastante memória e desempenho botão de fechar nas abas com a opção 0 este botão somente aparece na janela corrente.

Nome: browser.cache.memory.enable
Status: user set
Type: boolean
Value: false

- A chave milagrosa a que deixa o firefox rápido pra caramba, esta chave habilita o cache de memória do firefox nada de ficar sobrecarregando e criando firefox utilizando 100 ou mais de ram.

Nome: browser.sessionhistory.max

Nome: browser.sessionhistory.max_total_viewersStatus: user set
Type: integer
Value: 0 (valor opcional, desativa o cache completamente)

- Reduz o tamanho do cache de memória do histórico .

Para fazer com que estas flags sejam ativas para todos o usuários do firefox é necessário mudar os arquivos que mantém a configuração:

No arquivo defaults/pref/firefox.js altere a linha para o valor 0

pref(”browser.tabs.closeButtons”, 0);

E inseridas as linhas no final do arquivo

pref(”content.notify.ontimer”,true);
pref(”content.notify.interval”,2000000);

No arquivo /usr/lib/firefox/greprefs/all.js

pref(”browser.cache.memory.enable”, false);
pref(”browser.sessionhistory.max_total_viewers”, 0);

Pronto agora você está com o seu firefox Tunado esse sim é um 2.0 XD

Agradecimentos ao Cidoloco e a sua publicação no fórum do slackbr, a comunidade do Slackware e principal ao autor do artigo na computerworld.

Referências:
http://www.slackbr.org/forum/viewtopic.php?t=15050
http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9020880&pageNumber=1


Marco Carvalho de Oliveira
Certificate Linux Professional I – LPI
Colméia – Grupo de Pesquisa em Software Livre
Joinville – UDESC – Ciencia Da Computação

  • Share/Bookmark

Como configurar o file type do seu firefox

Posted by demoncyber | Dicas, Hacking, Linux | Monday 15 September 2008 06:19
CLICK-ME

CLICK-ME

Eis que um colega que está começando a utilizar Slackware me pergunta porque quando ele mandava abrir um arquivo pdf pelo firefox ele não abria, e responde porque o Slackware não vem com isto configurado é apenas um caso de configurar o mimetype ou filetype, daí lhe falo vai lá edit->preferences aba content e clica no botão Manage em File Types, e aí em seguida que nasce o problema aquele X.X trubisco não serve para editar e adicionar um novo file type de jeito maneira, aquilo me revoltou … ( como devem perceber estes artigos ultimamente sobre firefox é porque não gosto dele mesmo… ) então instalei um plugin de firefox que fazia isto resolvi fazer engenharia reversa no bichinho para descobrir qual arquivo precisava alterar e enfim achei que é o mimeTypes.rdf, seguindo na minha procura encontrei mais sobre como configurar ele em um dos sites da mozilla que está nas referências do texto.

Atributos

RDF:about – identificador ( Atributo especial pertencente a raíz )

NC:description – O nome do tipo de arquivo que será mostrado dentro da janela de download
NC:fileExtension – Extensão do arquivo que será manipulado
NC:value – O tipo do MIME de arquivo a ser manipulado
NC:path – caminho da aplicação que será usada para abrir este arquivo
NC:useSystemDefault – true (usa o sistema padrão do seu window manager para este tipo de MIME) ou false (define uma ação diferente para especificar no arquivo qual programa usar)
NC:saveToDisk – true (ação padrão que é baixar o arquivo) ou false ( não baixa o arquivo na máquina)
NC:alwaysAsk – true (perguntar qual a ação ao tratar deste tipo de arquivo) or false (não pergunta ação)
NC:editable – true (entrada pode ser modificada pelo usuário) ou false (entrada como travado)
NC:prettyName – um curto nome da aplicação que será usada para abrir

———————————————————

Cabeçalho do arquivo

Esta é a sessão inicial do seu arquivo de configuração, mantém o cabeçalho indicando onde estão os arquivos de padrão da sintaxe xml do arquivo rdf a ser utilizado.

<?xml version=”1.0″?>
<RDF:RDF xmlns:NC=”http://home.netscape.com/NC-rdf#”
xmlns:RDF=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>

</RDF:RDF>

/.mozilla/firefox/identificador.defaults/mimeTypes.rdf

———————————————————

Identificador do tipo de arquivo

Neste exemplo estamos criando um identificador global “office/pdf” para o nosso arquivo, passando os atributos de identificação explicados acima.

( NC:handlerProp – Apesar de ter procurado em muitos sites e nas rfcs do MIME não encontrei o atributo handlerProp e o meu empenho em fazer engenharia reversa nos arquivos de especificação do xml utilizado para analizar o arquivo de xml em questão já estavam no máximo -.-, nota eu acredito que o handlerProp serve para apontar para o identificador que contém o recurso do manipulador da especificação descrita)

<RDF:Description RDF:about=”urn:mimetype:office/pdf”
NC:fileExtensions=”pdf”
NC:description=”PDF Files”
NC:value=”office/pdf”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:office/pdf”/>
</RDF:Description>

———————————————————

Identificador do manipulador do tipo de arquivo

Neste exemplo estamos criando o manipulador do tipo de arquivo identificador global “office/pdf” para o nosso arquivo, passando os atributos de identificação explicados acima.

( NC:externalApplication – Apesar de ter procurado em muitos sites e nas rfcs do MIME não encontrei o atributo externalApplication e o meu empenho em fazer engenharia reversa nos arquivos de especificação do xml utilizado para analisar o arquivo de xml em questão já estavam no máximo -.-, nota eu acredito que o externalApplication serve para apontar o identificador que contem o recurso de aplicativo externo)

<RDF:Description RDF:about=”urn:mimetype:handler:office/pdf”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:office/pdf”/>
</RDF:Description>

———————————————————

Identificador do programa externo utilizado para

<RDF:Description RDF:about=”urn:mimetype:externalApplication:office/pdf”
NC:path=”/usr/bin/kpdf” />

———————————————————

Identificador pertencente a raíz que serve para adicionar os identificadores utilizados pelo webbrowser
- Mostrar texto das mensagens anteriores -

<RDF:Seq RDF:about=”urn:mimetypes:root”>
<RDF:li RDF:resource=”urn:mimetype:image/png”/>
<RDF:li RDF:resource=”urn:mimetype:office/pdf”/>
</RDF:Seq>

———————————————————
Segue um exemplo concluído

<?xml version=”1.0″?>
<RDF:RDF xmlns:NC=”http://home.netscape.com/NC-rdf#”
xmlns:RDF=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<RDF:Description RDF:about=”urn:mimetype:office/pdf”
NC:fileExtensions=”pdf”
NC:description=”PDF Files”
NC:value=”office/pdf”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:office/pdf”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:externalApplication:image/png”
NC:path=”/usr/bin/gimp”
NC:prettyName=”Gimp” />
<RDF:Description RDF:about=”urn:mimetype:handler:image/png”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:image/png”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:externalApplication:office/pdf”
NC:path=”/usr/bin/kpdf”
NC:prettyName=”KPDF” />
<RDF:Description RDF:about=”urn:mimetype:image/png”
NC:fileExtensions=”png”
NC:description=”PNG Image”
NC:value=”image/png”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:image/png”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:handler:office/pdf”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:office/pdf”/>
</RDF:Description>
<RDF:Seq RDF:about=”urn:mimetypes:root”>
<RDF:li RDF:resource=”urn:mimetype:image/png”/>
<RDF:li RDF:resource=”urn:mimetype:office/pdf”/>
</RDF:Seq>
</RDF:RDF>

Espero que tenham gostado =] ….

” Existem aqueles que se contentam em apenas resolver os problemas e existem aqueles que não se contentam resolver sem entender ….” – Demoncyber

Referências:
(Lidas na integra)
http://en.wikipedia.org/wiki/MIME – wikipedia sobre mime
http://www.iana.org/assignments/media-types/ – lista completa de mime media types
http://kb.mozillazine.org/MimeTypes.rdf – exemplo e documentação sobre o arquivo configurado
http://www.w3schools.com/media/media_mimeref.asp – referência para o padrões MIME

RFS
( Obs nenhuma destas RFS foram lidas apenas foi procurado pelos campos chaves os quais não foram encontradas as documentações referentes )

http://www.rfc-editor.org/rfc/rfc2047.txt

http://www.rfc-editor.org/rfc/rfc822.txt

http://www.rfc-editor.org/rfc/rfc2045.txt

http://www.rfc-editor.org/rfc/rfc2046.txt

http://www.rfc-editor.org/rfc/rfc2047.txt

http://www.rfc-editor.org/rfc/rfc2048.txt

http://www.rfc-editor.org/rfc/rfc2049.txt

  • Share/Bookmark

Como verificar as conexões abertas no seu Linux de várias maneiras

Posted by demoncyber | Artigo, Dicas, Hacking, Linux, Programação | Monday 15 September 2008 05:56
CLICK-ME

NO CLICK-ME THIS TIME :/

Este artigo foi publicado no blog do Colméia , no fórum do slackbr e no vivaolinux :) e por fim público aqui

Como verificar as conexões abertas no seu Linux de várias maneiras

Estivemos com um problema em um projeto que precisava verificar se o serviço xdmcp estava aberto, porém ele não é um processo independente, ele fica interligado ao X, kdm, gdm, xdm, para tanto a solução mais cabível era procurar saber se a porta estava aberta na máquina.

Sim, talvez pudesse existir outras maneiras de resolver isso, mas esta se fez mais interessante. A clássica solução que me veio a cabeça foi usar o netstat, mas pensei em porque não ir mais a fundo e como resultado venho por este artigo mostrar algumas coisas que aprendi.

As formas que executei este processo foram:

  • Geek hacker ninja style form – procura no proc pelas conexões abertas (mais interessante e a que mais aprendi);
  • Status network – usa o comando de status de rede para listar;
  • Open Files – Procura baseado nos arquivos abertos o que está ligado a porta.

Geek hacker ninja style form

A forma mais baixo nível e estilosa =], vamos aos arquivos de kernel analisar suas saídas, está é a base utilizada por programas como o netstat, o qual converte os dados deste e mostra com uma saída personalizada. Foi publicado um artigo antes explicando sobre a conversão de bases, então não vou abordar este assunto aqui.

O arquivo em questão utilizado é o /proc/net/tcp.

Exemplo de /proc/net/tcp:

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode

0: 9E00A8C0:D3FD E1D7BCCD:1F4A 01 00000000:0003163C 00:00000000 00000000  1000        0 383991 1 cb042500 102 12 4 2 100

1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 626508 1 c299db80 750 0 0 2 -1

Onde:

  • sl: O número de identificador da linha.
  • local_address: O endereço local e o número da porta do socket. O endereço local está codificado em little-endian em quatro seqüências de números em hexadecimal, isso significa que o byte mais importante é listado primeiro e você necessita fazer a inversão da ordem dos bytes para converter para o endereço de IP. O número da porta é um hexadecimal simples utilizado pelo programa.
  • rem_address – O endereço remoto e o número da porta do socket. O endereço local está codificado em little-endian em quatro seqüências de números em hexadecimal, isso significa que o byte mais importante é listado primeiro e você necessita fazer a inversão da ordem dos bytes para converter para o endereço de IP. O número da porta é um hexadecimal simples.
  • st: Status do socket (depois de muita busca encontrei onde estava o padrão de código daqui e o porque do valor ficar com 0A – segue tabela de referência no final).
  • tx_queue rx_queue: O tamanho de transmissão e recebimento das filas de pacotes.
  • tr tm->when: tr é o campo que indica se o medidor de tempo está ativo para este socket. Um valor zero indica que o medidor de tempo não está ativo. O tm->when indica tempo que o sock está sendo utilizado em jiffies (usado basicamente para debug).
  • retrnsmt: Campo de informação interna do socket do kernel (usado basicamente para debug).
  • uid: O uid do usuário dono da conexão.
  • time-out: Campo de informação interna do socket do kernel (usado basicamente para debug).
  • inode: Um número encriptado de identificação do socket para o sistema de arquivos do Linux (não encontrei qual é a criptografia utilizada aqui).

Achei a representação padrão do cat do arquivo /proc/net/tcp muito extensa, então refiz ela na horizontal para melhor explicar o exemplo acima e traduzi alguns dados:

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode

0: 9E00A8C0:D3FD E1D7BCCD:1F4A 01 00000000:0003163C 00:00000000 00000000  1000        0 383991 1 cb042500 102 12 4 2 100

1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 626508 1 c299db80 750 0 0 2 -1

sl : 0 – linha indicadora da primeira conexão

local_address: 9E00A8C0:D3FD – convertendo fica 192.168.0.158:151775

rem_address: E1D7BCCD:1F4A – convertendo fica 205.188.215.225:8010

st: 01 – TCP ESTABELISHED – conexão estabelecida

tx_queue rx_queue: 00000000:0003163C – fila de dados transmitidos

tm->when retrnsmt: 00:00000000 00000000 – dados utilizados para debug

uid: 1000 – id do usuário dono da conexão

timeout: 0 – dado utilizado para debug

inode: 383991 1 cb042500 102 12 4 2 100 – identificador criptografado

sl : 1 – linha indicadora da primeira conexão

local_address: 00000000:0016 – convertendo fica localhost:22

rem_address: 00000000:0000 – não tem ninguém conectado

st: 0A – TCP_LISTEN – escutando conexão

tx_queue rx_queue: 00000000:0003163C – fila de dados transmitida

tm->when retrnsmt: 00:00000000 00000000 – dados utilizados para debug

uid: 1000 – id do usuário dono da conexão

timeout: 0 – dado utilizado para debug

inode: 383991 1 cb042500 102 12 4 2 100 – identificador criptografado

Status network

Podemos ver as conexões abertas através do comando netstat. O mesmo é um programa de estatísticas de rede utilizado amplamente para este fim. Não tem muitos segredos e as informações que ele mostra são muito legíveis. Alguém percebeu a similaridade com um outro arquivo no modo que as informações aparecem? :)

# netstat -tl – lista as conexões abertas de tcp em modo de escuta

# netstat -t – lista as conexões tcp estabelecidas

# netstat -p – lista os programas que estão usando a conexão

# netstat –numeric-ports – não converte o número da porta para ser listado

# netstat –numeric-hosts – não converte o número de ip para nome do host

Comando que resolveu meu problema:

# netstat -t -l -p –numeric-ports

Open Files

Vendo as conexões abertas através do comando lsof. O comando lsof lista os arquivos abertos, através disto vamos procurar o arquivo aberto relacionado às portas tcp.

Obs.: Ele pode pegar muitas informações interessantes sobre os arquivos abertos, mas não é escopo deste artigo. :)

Sintaxe: lsof -i protocolo

Exemplo:

# lsof -i tcp

Tabela de dados para o status do socket – versão do kernel 2.6.21.5 Slackware Linux 12

st status socket values
significado valor
TCP_ESTABLISHED 01
TCP_SYN_SENT 02
TCP_SYN_RECV 03
TCP_FIN_WAIT1 04
TCP_FIN_WAIT2 05
TCP_TIME_WAIT 06
TCP_CLOSE 07
TCP_CLOSE_WAIT 08
TCP_LAST_ACK 09
TCP_LISTEN 0A
TCP_CLOSING 0B
TCP_MAX_STATES 0C

Ambiente de teste

  • Slackware 12.0
  • kernel 2.6.21.5

Conclusão

Estas foram apenas algumas maneiras, devem ter mais. Espero que tenham gostado e que algum dia isto seja útil a alguém =], bom para mim foi um grande aprendizado.

(Desculpe qualquer erro de português :X)

Definições

jiffy – medida utilizada para representar o uso de uma tarefa em chamadas de interrupção no processador (medida em um Linux com kernel 2.6.13 em um Intel 386 é de 4 ms ou 1/250 avos de um segundo)

Referências

  • Share/Bookmark

Configurando sua rede sem fio no Slackware

Posted by demoncyber | Dicas, Linux, slackware | Monday 15 September 2008 05:50
CLICK-ME *__*

CLICK-ME *__*

Outro dia ajudei um cara no fórum do slackbr que estava com dúvida que envolvia como configurar uma rede WAP na unha, então me propus a fazer isso e inclusive um pacote para o Slackware :)

Sobre configurar na mão eu utilizo um script pessoal que deixo na minha pasta /usr/sbin/tdc.connect

Code:
#!/bin/bash
ifconfig ath0 down
iwconfig ath0 essid tdc
iwconfig ath0 key chave_criptografada
dhclient ath0

Daí sempre que preciso usar a minha rede wireless chamo com bash tdc.connect

Bom mas o seu caso é WPA… é diferente de WEP mas vamos a ele )

Primeiramente faca backup destes dois arquivos

Code:
/etc/wpa_supplicant.conf
/etc/rc.d/rc.inet1.conf

ps: não quero ninguém me culpando porque não fez backup :=]

Seguido disto você tem que gerar a sua arquivo que vai manter a senha criptografada do seu wpapsk o comando é bem simples

Code:
wpa_passphrase repCasa minha_frase_magica_de_senha > /etc/wpa_supplicant.conf

obs: caso o arquivo /etc/wpa_supplicant.conf já esteja configurado você pode pular este passo

Seqüenciado você deve criar o seu script de configuração de rede WAP  eu chamaria de repCasa.connect ou wpa_person

Code:
#!/bin/bash
ifconfig ath0 down
iwconfig ath0 essid repCasa
wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -B -D wext
dhclient ath0

Depois de criado o script copie ele para o diretório /usr/sbin e sete as permissões

Code:
cp  ./repCasa.connect
chmod 750 ./repCasa.connect

obs: não se esqueça de dar permissão de execução ao arquivo do script
wext ou madwifi ( a maioria é wext caso não funcione tente madwifi )
depois do script pronto não se esqueça de comentar as linhas do rc.inet1.conf ) pode acontecer eu sou bem esquecido

Sempre que você precisar você pode chamar como root repCasa.connect que ele vai conectar
Bom também tem a opção de utilizar no seu caso o wpa_gui que é um configurado gráfico para a rede wireless com criptografia wpa nem vou explicar pois ele é muito simples.

Bom já que me empenhei com isso vamos aos passos para fazer o pacote ) ninja do nosso micro_projeto

Vamos criar a estrutura de pastas do nosso pacote

Code:
mkdir /tmp/wpa_person-0.1-noarch-1
cd /tmp/wpa_person-0.1-noarch-1
mkdir -p usr/sbin/
mkdir install/

Agora vamos copiar os arquivos do nosso pacote.
Bem o de configuração de rede a gente já fez o repCasa.connect ou wpa_person ali em cima apenas temos que copiar ele para a pasta:

Code:
cp repCasa.connect /tmp/wpa_person-0.1-noarch-1/usr/sbin/

Conteúdo arquivo slack-desc

# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

|—–handy-ruler——————————————————-|
wpa_person: wpa_person (Um wpa script personalizado)
wpa_person:
wpa_person: Este e um wpa script personalizado ajudado pelo demoncyber no
wpa_person: slackbr.org/forum :) . Lembrar antes de usar o programa rodar o
wpa_person: wpa_passphrase.
wpa_person:
wpa_person: post: http://www.slackbr.org/forum/viewtopic.php?f=196&t=17197
wpa_person: contact: demoncyber@gmail.com ou marco@colmeia.udesc.br
wpa_person:
wpa_person:
wpa_person:
Conteudo do arquivo slack-desc que deve ser copiado pra /tmp/wpa_person/install/

Arquivo slack-required

Code:
wpa_supplicant >= wpa_supplicant-0.5.10-i486-1

Conteúdo do arquivo slack-required que deve ser copiado pra /tmp/wpa_person-0.1-noarch-1/install/
obs: coloquei como requerimento esta versão pois foi a de uso de teste

Configurar as permissões dos arquivos

Code:
chown root.root -R /tmp/wpa_person-0.1-noarch-1
chmod +x /tmp/wpa_person/usr/sbin/wpa_person

gerar o pacote

Code:
makepkg wpa_person-0.1-noarch-1.tgz
cp wpa_person-0.1-noarch-1.tgz /tmp
installpkg /tmp/wpa_person-0.1-noarch-1.tgz

Sim eu sei que me animei para responder ) mas não custava nada, o mais interessante deste procedimento é a questão de portabilidade e organização junto com o sistema do seu pacote. Espero que tenha gostado, caso algo não funcione post ai tento ajudar quando eu puder

Referência

http://www.slackbr.org/forum/viewtopic.php?f=196&t=17197

/etc/rc.d/rc.wireless – configurador de rede wireless no slackware
man wpa_supplicant – manual do programa para configurar a wpa
man wpa_passphrase – manual do programa para gerar a senha da wpa
http://www.guiadohardware.net/tutoriais … gina3.html - ótimo tutorial sobre wireless apontado para a parte de wpa

  • Share/Bookmark
Next Page »
Get Adobe Flash playerPlugin by wpburn.com wordpress themes