terça-feira, 29 de maio de 2007

Configurando um despertador com o Cron e MP3

Acabou a pilha do seu despertador? Seu celular quebrou? O rádio-relógio queimou? Seus problemas acabaram! Aprenda agora uma maneira rápida e prática de fazer seu PC te acordar de manhã com o maravilhoso "Despartador Cron+MP3".


Ops acho que isso é um relógio de parede e não um despertador

Bem, propagandas estilo tele vendas à parte, vamos ao que interessa.
O Cron é uma ferramenta para agendar comandos, você pode agendar qualquer tipo de comando à qualquer hora do dia e ainda definir os dias do mês/semana que o comando será executado.
Para fazer seu despertador você vai precisar de:

- Cron; (Provavelmente você já tem)
- mpg321; (Player de Mp3 via linha de comando)
- Algumas MP3 de sua preferência;
- Um pouco de café (pode ser chá) e uma bolachinhas;

Pronto, com todo o material em mãos você já pode começar.
Primeiro vamos à uma pequena aula de Cron, existe um diretório chamado /etc/cron.d/ nele estão os arquivos com informações de comandos agendados, e é nesse diretório que você deve criar um arquivo chamado despertador, na verdade pode ser qualquer nome, mas assim fica mais fácil de identificar o arquivo depois. Há distribuições que os comandos agendados estão no arquivo /etc/crontab. Esses arquivos do cron tem +ou- essa cara:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

De minutos a dias da semana você deve preencher com números de acordo com cada campo, por exemplo, em minutos você preenche com números de 0 à 59, horas de 0 à 23, etc. Um caso especial são os dias da semana que podem ser preenchidos de 0 à 7 e, se você contar, verá qua são 8 números, isso porque o 0 e o 7 valem pelo domingo.
O usuário é o login do usuário que irá executar o comando, e o comando é o comando ué!
O mpg321 é um player de mp3 via linha de comandos e sua sintaxe básica é assim:

$ mpg321 musica.mp3

Agora você pode tomar o café e comer as bolachinhas, cuidado com os farelos!

Acabou? Ok, vamos lá. Lembra do arquivo chamado despertador que você criou? vamos editá-lo deixando-o assim:

10 6 * * 1-5 infog mpg321 /home/infog/musicas/desperta.mp3

Agora vou explicar o que vai acontecer: Às 6:10h da manhã o cron executará, com o usuário infog, o mpg321, e este recebe como parâmetro o arquivo desperta.mp3, é muito importante passar o caminho completo para o arquivo mp3. As duas * indicam que o comando será executado em todos os dias de todos os meses, já o 1-5 indica que o comando será executado de segunda-feira à sexta-feira, afinal de contas no sábado e domingo devemos dormir até tarde =)

Pronto, você acabou de configurar seu PC para te acordar, só não se esqueça de deixá-lo ligado, aproveite para fazer uns downloads durante a noite =D. Ahh se você tem um monitor (lcd) com caixinhas de som embutidas você não poderá desligar o monitor já que as caixinhas desligam junto com ele.

InFog

domingo, 27 de maio de 2007

Fork Bombs, "Magia das Trevas"

Hoje vamos falar de um assunto bem interessante, os Forks. Mais uma vez devo a idéia ao sr. Emphasis in Metal, e dessa vez também ao sr. [S|G]. Fork pode ter dois significados, um deles seria um novo projeto com base em um existente, podemos dizer que o IceWeasel é uma espécie de Fork do Mozilla Firefox, mas sem funcionalidades extras, apenas a troca de nome e a retirada de logotipos comerciais. O outro significado para Fork seriam as Fork Bombs, Bombas Fork, que, para quem programa, ou já tentou programar um dia, são as funções recursivas sem um controlador que as faça parar, são funções que ficam chamando elas mesmas até entupir a memória e acabar com o poder de processamento do computador. Acho que se o Lord Voldemort fosse um hacker ele as adoraria =)

Bem existem muitos artigos e tutoriais pela net falando disso então não vou dar explicações muito longas e repetitivas, mas vale colocar uns exemplos aqui, se você usa o bash no Linux você poderia usar a seguinte linha:

$ funcao(){ funcao|funcao& };funcao

Simples e fatal. Notaram o '$' no começo da linha? Isso mesmo não precisa ser root para fazer essas coisinhas do mal. Agora para aqueles que usam Perl ou C:

Perl:
perl -e "fork while fork" &

C:
#include

int main()
{
while(1)
fork();
}

Olhem o código C, ele usa um while(1), ou seja enquanto 1 for 1, chame a fork(), mas não há controladores para esse 1, ele será 1 eternamente, ou até a máquina resetar =)
E para quem acha que o Windows(r) está fora dessa se enganou, faça isso em uma batch dele:

:s
start %0
goto s

Salve como .bat e execute.

No Windows(r) eu não sei corrigir o problema, mas no Linux há uma solução, você precisa limitar o número de processos que uma funcão pode chamar, mas se você colocar um limite muito baixo alguns programas podem não funcionar e um limite muito grande pode fazer com que essas funções causem lentidão ao sistema. Um bom limite seria 100, é bem comum vocês encontrarem esse número nos artigos sobre Fork Bombs por aí.
Para colocar esse limite no Linux faça o seguinte:

Edite o arquivo

/etc/pam.d/login

Adicionando ou habilidando a linha:

session "tab" required "tab" pam_limits.so

Preciso dizer que o "tab" significa usar o botão TAB? E edite também o arquivo

/etc/security/limits.conf

Adicionando a linha:

hard "tab" nproc "tab" 100

Pronto você acabou de colocar um limite de 100 processos para os usuários, se você colocar, por exemplo, 3 processos, logar no bash, e chamar três vezes um programa qualquer, na quarta vez ele não irá funcionar. Entenderam então o porque de colocar um limite razoável de processos? Se não for assim o bash fica inutilizável =)
Grande parte desse post foi baseado em informações da Wikipedia
Bem crianças, é isso, até a próxima aqui no Tux Masters.

terça-feira, 22 de maio de 2007

Correção do Pacote Pidgin2.0.0 para Debian Etch

O pacote Pidgin2.0.0 para Debian Etch que eu disponibilizei há uma semana não estava resolvendo algumas dependências e graças à isso ele não exibia os protocolos das redes para conectar ou criar contas.



Bem eu fiz a correção da lista de dependências e agora está tudo certo. Apenas uma dica para a hora da instalação, como você instala com:

# dpkg -i pacote.deb

Ele não consegue baixar as dependências, então ele dará um erro, nessa hora basta você usar o comando:

# apt-get -f install

Ele irá baixar as dependências e o pidgin funcionará, só acho que ele não cria atalhos, mas aí é com você heheh =)

Baixe o novo pacote aqui


InFog

A Importância das Atualizações de Segurança

Todos que administram servidores têm uma preocupação em comum: Segurança. E muitas vezes problemas como invasões ou ataques não são conseqüentes de má configuração dos softwares servidores ou a falta de um firewall.
Imaginemos então a seguinte situação: Você instala, por exemplo, em uma rede de uma empresa um firewall que também abrigará um samba e um apache para compartilhar arquivos e intranet respectivamente. Então você adota uma boa solução de firewall, como o iptables, e à partir daí você está seguro e tranquilo. Alguns meses depois o pessoal da empresa te liga dizendo que está sem internet e não acessa as pastas compartilhadas, você tenta acessar a máquina e descobre que o acesso ssh com chave pública não funciona e a senha de root foi altera! E agora? Mas não estava tudo certinho? Tinha firewall e o SSH era apenas com Chave Pública! Como isso foi acontecer?
Daí você resolve pesquisar e descobre que há cerca de um mês foi encontrada e corrigida uma vulnerabilidade no SSH que aceitava determinada "chave pública mestre". E foi exatamente isso que foi usado contra o seu servidor, já que você ainda usava a versão de alguns meses atrás.
Ahhh InFog, mas isso não acontece, quem iria querer invadir um servidorzinho de empresa? Quer que eu lhe diga, ou você descobre sozinho? =)
Bem o quero dizer com toda essa história é que é muito imprtante se manter atualizado quanto às atualizações de segurança da sua distro, tanto faz se você administra um servidor ou usa apenas um desktop, podem haver falhas em qualquer tipo de software e, em geral, as atualizações no Mundo Livre são bem rápidas.
Eu uso Debian para servidores e desktops, por isso estou inscrito na lista de segurança da distribuição, então sempre que sai uma atualização de segurança eu verifico onde tenho esses tipos de softwares instalados e faço a atualização o mais rápido possível.
Então fica aqui um conselho para quem administra servidores ou mesmo usuários de desktop que queiram manter seus sistemas seguros e atualizados: Inscrevam seus e-mails nas listas de segurança de suas distribuições e faça as atualizações sugeridas sempre que possível. E se você ainda não tem uma escolha sobre distribuições, principalmente para montar servidores, estude bem antes de optar por uma, veja se o projeto tem esse tipo de preocupação e tente comparar a velocidade das equipes, ou desenvolvedores, na atualização dos pacotes específicos.

InFog

segunda-feira, 21 de maio de 2007

Novidade no TuxMasters: ChatBox!

Temos uma novidade bem legal no TuxMasters, é o ChatBox! Ele está na barra à direita logo abaixo das Campanhas.

Quer nos deixar um recado de forma simples? Mostrar aos amigos que você passou por aqui? Deixar sua marca? Então uilize essa novidade =)
Atenção: Os recados podem ser moderados à qualquer momento sem aviso, então procure deixar recados construtivos hehe.

sexta-feira, 18 de maio de 2007

Programação PHP, surpresa com o include()

No momento estou desenvolvendo um sistema em PHP, e para isso eu tive uma idéia bem simples no começo, mas agora ela começa a mostrar que é uma opção interessante.
Bem deixe-me começar dizendo que não sou webdesigner e nem estou acostumado à programar para esse tipo de ambiente, então eu escolhi o PHP pela semanhança ao C++ que tenho mais afinidade.



Então lá estava eu com um sistema para desenvolver e me perguntando como fazer, então tive a idéia que citei acima, eu fiz o index com tabelas e cada link da página chama ela mesma com uma variável para o GET, essa variável "$conteúdo" é a que define o que será exibido em uma determinada célula da tabela usando a função include(). Pois bem, eu precisava passar uma variável para uma dessas páginas chamas pelo include(), mas antes de tudo resolvi ver se a variável passaria para a página "automaticamente"... e passou! Com isso a coisa facilitou bastante =)
Achou pouco? Mas para alguém que, assim como eu, está se aventurando no php esse recurso é fenomenal :-)

InFog

terça-feira, 15 de maio de 2007

Novo Pidgin 2.0.0

Foi lançado recentemente o Pidgin 2.0.0. Esse é o Ex-Gaim, o projeto foi renomeado por questões jurídicas envolvendo a AOL e seu AIM.



Bem vamos ao que interessa: Usar esse ótimo IM que dá acesso à vários protocolos doferentes (Yahoo, Msn, Irc, etc) no Debian. Nos repositórios do atual Debian Stable a versão utilizada é o Gaim 2.0.0 beta 5, e no site do Pidgin não há pacotes Debian prontos. Então resolvi criar meus próprios pacotes e disponibilizá-los aqui para que mais pessoas possam instalar o Pidgin sem o sofrimento de compilar.
O pacote ainda é "beta" pois eu não adicionei todas as dependências, sugestões, ou disse que ele substitui o pacote gaim. Mas para quem estiver interessado em testar o Pidgin sem precisar compilar e tendo ele instalado pelo dpkg (fica mais fácil para gerenciar depois) eu acredito que seja uma boa idéia.

o pacote está aqui

Se alguém estiver interessado em distribuir o pacote em outro servidor fique à vontade, e se quiser me comunicar eu coloco o link aqui.

Boa sorte, e aguardo retorno sobre o pacote.

InFog

sábado, 12 de maio de 2007

Acesso SSH sem precisar digitar a senha e as facilidades administrativas desse recurso

Olá pessoal, um recurso muito interessante do SSH é a possibilidade de usarmos chaves no lugar de senhas para acessar outras máquinas. Dããã isso todo mundo já sabe e há toneladas de informações sobre isso na internet. Mas vou demonstrar aqui que esse recurso pode ser muito mais útil do que simplesmente acessar o servidor da sua rede sem o incoveniente de ficar digitando senhas.
Bem, vamos então ao básico, como configurar esse acesso. Logado na máquina que fará o acesso e com a conta do usuário que fará o acesso (isso ficou repetitivo não?) use o comando ssh-keygen:

$ ssh-keygen

Ele fará umas perguntas e mostrará os arquivos onde guardará as chaves, que são:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Essa id_rsa.pub é a sua chave pública, é como se fosse a impressão digital da sua máquina, e é ela que usaremos para acessar a outra máquina. Agora você deve copiar o conteúdo desse arquivo para o arquivo ~/.ssh/authorized_keys do usuário na máquina que será acessada.
Como a coisa funciona? Na hora em que você usa o comando ssh para logar em uma máquina o que acontece é mais ou menos isso:

$ ssh infog@debian

Sua Máquina: Tenta conectar à porta 22 da máquina remota.
Máquina Remota: Aceita a conexão.
SM: Verifica se a máquina remota é conhecida, checando o arquivo ~./ssh/known_hosts, se não for ela pergunta se você quer adicioná-la à lista. Se for conhecida ela checa a identidade da máquina remota. Isso é muito útil, imagine que alguém trocou a máquina que você acessava ou está usando o mesmo IP dessa máquina para capturar senhas, o ssh consegue saber se é a mesma máquina ou não e se não for ele te avisa, assim você pode, por exemplo, ligar para o local onde a máquina fica e perguntar o que houve. Continuando... Então rola um papo entre as máquinas:
SM: - Opa, e aí debian tudo bem, eu sou o infog e venho da máquina gnu.
MR: - Olá infog, tudo certo aqui. Ok, deixe-me ver sua impressão digital?
SM: - Ah, claro que sim, aqui está (~/.ssh/id_rsa.pub).
MR: - Obrigado, vou conferir, aguarde por favor. (Compara o id_rsa.pub com o ~/.ssh/authorized_keys, se a impressão estiver no authorized_keys o acesso é permitido):
MR: - Oi, desculpe pela demora, sua impressão confere com minha lista, seja bem vindo!
SM: - Obrigado!

Caso a impressão não esteja na lista o seguinte aconteceria:

MR: Poxa cara você não está na lista, podemos tentar com outra impressão? (Se você tiver outro tipo de chave ela será enviada).
SM: Eu não tenho outra impressão, o que faremos?
MR: Hum, você pode me mandar uma senha e eu comparo com a do usuário aqui. Pode ser? Digite aqui:
password:

Bem daí pra você sabe o que acontece.

Mas quais são as facilidades disso além de nãao digitar a senha? Imagine que você está com um problema em sua máquina e não esteja conseguindo resolver, então aquele cara que você conheceu no irc se oferece para ajudar, mas você não quer dar sua senha para ele e nem quer mudar a senha da máquina para algo como 123 para que ele acesse. Aqui você poderia pedir para ele enviar a chave pública dele, você coloca no seu authorized_keys, ele acessa e te ajuda, e depois disso você remove a chave do authorized_keys. Pronto ele te ajudou e nem sabe do tipo de senha que você usa e você pode autorizá-lo ou desautorizá-lo sempre que precisar.

Lembrem-se crianças, não vão sair adicionando qualquer um no seu authorized_keys e quando o fizer faça com um usuário que tenha permissões apenas para ajudar na solução do seu problema.

Bem, é isso. Boa sorte à todos e lembrem-se de ler o manual para obter mais recursos e aprender sempre mais sobre as ferramentas que você usa no dia-a-dia.

InFog

sexta-feira, 4 de maio de 2007

Note Turbinado Com Debian!

Chegaram meus adesivos "Debian" da Linux Mall, um é uma etiqueta "Designed For Debian" e o outro é um adesivo grande com o logo e o nome. Agora sim o note está "Endebianado". Chega de etiquetas "Designed for WXP"! Aqui estão algumas fotos =) Façam também, fica muito legal. O próximo passo é transformar as teclas "win" en tecla "tux" hehehe.


Aqui está a etiqueta grande =)


E esta é a "Designed for Debian".


Desculpem pela má qualidade das imagens.

InFog

quarta-feira, 2 de maio de 2007

Aptitude, uma ferramenta poderosa

Hoje vamos falar sobre o Aptitude.

O Aptitude é uma interface em modo texto para o sistema de pacotes do Debian GNU/Linux. Ele permite que o usuário/administrador veja as listas de pacotes e realize operações como instalação, atualização e remoção de pacotes. Ele tem diversas opções via linha de comando, mas o que pretendo mostrar aqui é a utilização de sua interface visual.

Este tutorial não visa ser algo como “A solução definitiva” ou “Aprenda tudo sobre o Aptitude aqui”, mas sim ser um ponto de começo para você que usa apenas o apt-get e sente falta de uma ferramenta que facilita um pouco a rotina de pesquisar pacotes e escolher o que você precisa.

Bem, vamos começar pelo começo, se você não tem o Aptitude, basta instalar com:

# apt-get install aptitude

Para entrar no Aptitude rode o comando:

# aptitude

Então será aberta uma tela como essa:


Aqui ele tem uns menus na parte de cima, listas de pacotes no meio e um espaço para descrições dos pacotes na parte de baixo.

Nos menus acima encontramos as opções do Aptitude, em Ações nós podemos:

  • Instalar/remover pacotes marcados (calma crianças já já vamos aprender a marcar os pacotes);

  • Atualizar a lista de pacotes (equivalente ao “apt-get update”);

  • Marcar os pacotes atualizáveis para que sejam atualizados;

  • Cancelar a instalação de novos pacotes;

  • Limpar o cache de pacotes (igual ao apt-get clean);

  • Limpar arquivos obsoletos;

  • JOGAR CAMPO MINADO!

  • Tonar-se root, caso você ainda não o seja;

  • e Sair.

Em desfazer podemos desfazer as marcações de pacotes (tipo um ctrl+z da vida).

Em pacotes temos as opções para marcar os pacotes na lista para atualizar, instalar, remover, fazer purge (remover tudo, inclusive arquivos de configuração), etc.

Acho que para este artigos precisaremos apenas destas opções mesmo, o resto você pode ler no manual do Aptitude.

Agora vamos aprender na prática! Vamos instalar algo e depois removê-lo, assim vocês verão como o Aptitude pode facilitar a vida.

Para esse exemplo vou instalar algo para poder brincar depois, vou instalar um jogo! Afinal, depois de escrever isso o melhor é relaxar, e nada como um bom joguinho para isso =P E o jogo escolhido foi o excelente Powermanga[1], um joguinho de nave bem divertido e viciante.

Estou usando o Debian Etch apenas com os repositórios oficiais e já atualizei minha lista de pacotes (apt-get update).

Com o Aptitude aberto nós temos que pesquisar pelo nome do pacote para isso use o menu Procurar->Encontrar ou simplesmente aperte “/” que aparecerá uma caixa com um campo onde você deverá digitar o nome do pacote ou parte do nome. Aqui eu digitei apenas “power” e dei , assim ele foi para o primeiro pacote que tem “power” no nome nesse caso o powersaved:

Para fazer o cursor avançar até o próximo pacote com “power” no nome use o menu Procurar=>Procurar Novamente ou a tecla “n”, você pode continuar apertando “n” até encontrar o Powermanga ou iniciar uma nova pesquisa (“/”) e digitar o nome completo. Quando você encontrar o pacote você pode “entrar” nele e ver a descrição, dependências, conflitos e versões disponíveis para instalação. Essas versões são mostradas apenas quando você tem duas versões Debian no seu sources.list, tipo Sarge e Etch, e há uma versão diferente do pacote para cada distro, caso você use apenas uma versão Debian a lista de versões mostrará apenas uma versão.

Se você está seguindo o exemplo você deve estar vendo uma tela como essa:

Como vocês podem ver aqui quase todas as dependências do Powermanga estão satisfeitas, falta apenas a powermanga-data, que está marcado de vermelho. Você pode instalar as dependências primeiro ou mandar instalar o pacote principal, pois o Aptitude marca as dependêcias para instalação também.

Tá bom InFog, mas como eu marco o pacote para instalação?

Para marcar o pacote para instalação coloque o cursor sobre a versão que você quer instalar, ou a única versão se for seu caso, e use o menu Pacote->Instalar ou use a tecla “+”, ao fazer isso o pacote será marcado de verde e as dependências serão resolvidas.

Vamos à instalação? Use o menu Ações->Instalar/Remover Pacotes, ou use a tecla “g”, o Aptitude mostrar as alterações que serão realizadas, e apertando “g” mais uma vez ele irá baixar os pacotes e fazer a instalação:

Prontinho, pacote instalado. Basta jogar! hehe.

Bem, vamos a remoção do pacote. Use a pesquisa para chegar ao pacote que você deseja remover, e com o cursor sobre o pacote use o menu Pacote->Remover, ou use a tecla “-”, após isso pressione “g” e veja confira as modificações que serão feitas, e aperte “g” novamente que o Aptitude removerá o pacote. Para sair do Aptitude use o menu Ações->Sair ou pressione “q”.

Boa sorte com o Aptitude, e para saber mais sobre ele veja o manual com:

$ man aptitude

Com ele a administração do seu sistema Debian (e derivados) ficará bem mais simples e divertida!

InFog

Links:

[1] http://linux.tlk.fr/games/Powermanga/