Posts Tagged ‘Linux’

Dica do dia: Logando via ssh sem autenticação

dezembro 18, 2009

A dica de hoje vai ser bem rápida, até porque ela é bem simples.

Acessar servidores via ssh é algo que faz parte da nossa rotina, e ficar toda hora colocando a senha, enche o saco. Mas como fazer para não pedir a senha?

Basta fazer o seguinte:

1.Gere o par de chaves pública/privada, na sua máquina.

ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key: (pressione Enter)
Enter passphrase (empty for no passphrase): (pressione Enter)
Enter same passphrase again: (pressione Enter)

2.Mande a chave pública para o servidor que você irá acessar. Neste momento estamos copiando a chave para o arquivo authorized_keys (do servidor) sem sobrescrever o conteúdo anterior e ainda preservando as permissões corretas.

ssh-copy-id usuario@servidor

password: (informe a senha)

Pronto! Falei que seria rápido. 🙂

Agora é só digite o comando ssh usuario@servidor que você estará conectado no servidor, automaticamente, sem ter que informar a senha.

E para terminar, você pode criar um alias e assim, será possível logar no servidor com apenas um comando (ex. server.opala). 😀

P.S.: Há outra forma de logar no servidor com um comando (sem usar o alias), que foi explicada pelo Antonio nesse post.

Alias – “enganando” o Ubuntu

dezembro 13, 2009

Há pouco tempo atrás, descobri que podemos criar alias para executar comandos no terminal, ou seja, um atalho. Uma funcionalidade muito útil, e que torna a interação mais produtiva ainda no Linux.

Neste breve tutorial, irei explicar um pouco sobre essa funcionalidade, e utilizarei exemplos, testados no Ubuntu 9.10.

O que é o Alias?

alias é um comando capaz de criar um atalho customizado para um outro comando, geralmente utilizado para facilitar a interação.

Um exemplo clássico, é o comando ls, que na verdade é um atalho para ls –color.

Como usar?

O comando alias tem a seguinte sintaxe:

alias [-p] [name[=value] …]

Alguns exemplos de uso:

alias home=’cd /home/seu_usuário/’

alias servidor=’ssh root@192.168.0.100′

alias update=’sudo apt-get update’

alias fstab=’vim /etc/fstab’

Como vocês puderam perceber, a criação de alias permite fazer muita coisa, de uma maneira muito mais simples e rápida. Eu mostrei apenas alguns exemplos, como: acessar um diretório, acessar um servidor via ssh, atualizar o SO e editar um arquivo.

alias é uma funcionalidade útil para qualquer tipo de usuário, desde o usuário comum até um sysadmin. E para aqueles aficionados em atalhos, é interessante criar padrões para o nome do alias, para você não se perder, como por exemplo:

  • Acessar diretório: [nome da pasta a ser acessada]dir
    • musicasdir;
    • homedir.
  • Acessar servidores: [nome do servidor ou servidor do que ele é]server
    • webserver;
    • fuscaserver.

[Início Atualização 17/12/09]

Um padrão bem melhor, é o apresentado pelo Antonio, nos comentários:

Eu prefiro utilizar uma string que classificar o tipo de alias como prefixo do alias, exemplo:
~$: server.fusquinha
~$: dir.home

Uso assim pois desta forma fica fácil de ver os alias de mesma categoria no memento que vou utilizar pois a tecla tab faz o autocomplete, assim eu digito “server. + tab + tab” e o bash me lista todos os alias com o prefixo server.

Isto é só uma forma diferente de organizar os alias.

[Fim Atualização 17/12/09]

Para fechar o post, algo muito importante, como deixar permanente os alias criados, pois da forma que estamos criando, direto no terminal, eles durarão até a sessão ser encerrada.

No Ubuntu, eu descobri duas maneiras de fazer isso, uma porca e a outra certa. Então vamos primeiro ver a maneira porca, que  irá ajudar a descobrir a maneira certa.

Adicionar os alias no final (ou em qualquer parte, para ser de uma forma mais porca ainda) do arquivo bashrc (aliás, é nele que está o alias ls):

vim ~/.bashrc

E se você der uma olhada no arquivo, ele explica a maneira certa de adicionar os seus alias:

# Alias definitions.

# You may want to put all your additions into a separate file like

# ~/.bash_aliases, instead of adding them here directly.

Então agora que sabemos como é a maneira certa. vamos fazer:

touch ~/.bash_aliases (para criar o arquivo bash_aliases)

vim ~/.bash_aliases (agora é só colocar os seus alias nesse arquivo)

Depois de salvar o arquivo bash_aliases com os seus alias, basta reiniciar a sua sessão (reiniciando a sua máquina ou fazendo logout), que você já poderá utilizar os alias criados. 😀

E caso você tenha esquecido o nome completo de algum alias, você pode usar o tab (para completar), e se você esqueceu totalmente o nome do alias, é só executar o comando alias -p no terminal, para que serão listados todos os alias que o seu usuário pode usar. 😉

Notas:

Tutorial testado no Ubuntu 9.10.

Eu e o pinguim

dezembro 12, 2009

Neste post irei falar um pouco sobre a minha experiência e impressões sobre o sistema operacional Linux. Não serei nem um pouco técnico, até porque esse post é mais uma reflexão do que uma análise.

As pessoas que me conhecem, sabem que eu não sou um fanático pelo SO que tem como mascote o pinguim Tux. Também não sou um grande entusiasta do Linux, mas então qual seria a minha relação com o Linux? Acredito que no momento, sou um simples consumidor, e como todo bom consumidor sou bem crítico. 🙂

Antes, acho que é interessante, contar a minha história com o Linux, será  bem resumida:

  • O meu primeiro contato foi na faculdade, se não me engano, no terceiro semestre (no começo de 2007). Eu era totalmente leigo em Linux, e achava estranho utilizá-lo por linha de comando;
  • Ah.. na verdade o meu primeiro contato, foi quando eu usava os computadores públicos na Semasa, no centro de Santo André, mas acho que nem conta, como primeiro contato (rs), pois eu nem sabia o que era Linux (rs), só sabia que aquele SO era diferente (rs);
  • Depois aqui na Voice Technology tive um curto contato com o Linux, quando nós tivemos que fazer um teste de um script, e o ambiente de produção no qual o script era rodado era em Linux, mas precisamente a distribuição Fedora, então tive que instalar, e relembrar o que tinha aprendido na faculdade e também foi uma boa oportunidade para aprender coisas novas, como o gerenciador de tarefas agendadas crontab.
  • E por fim, veio o projeto Basix, e aí não teve jeito, foi a primeira vez que usei o Linux instalado na minha máquina mesmo, nada de máquina virtual. E a partir daí, que eu virei realmente um “consumidor” Linux. 😉

Muita coisa mudou desde 2007 até hoje, acho que posso dizer que hoje, os usuários e os profissionais de TI estão muito mais abertos a novas tecnologias, principalmente as soluções open-source.

Durante o tempo que trabalhei no projeto Basix, pude perceber o poder do Linux, e hoje, realmente acredito que ele é o futuro, e quando digo futuro, é o futuro no mundo desktop, pois em servidores o Linux já é realidade e DOMINA.

Momento caranguejo

Ao comprar o notebook, instalei o Windows XP e o Ubuntu 9.04, aí usava o Ubuntu no trabalho, e o Windows em casa, mas por causa do jogos que não rodam no Ubuntu.

O momento caranguejo, foi ao instalar o Windows 7 e tirar o Ubuntu. Confesso que gostei bastante do Windows 7, ele traz boas melhoras na usabilidade, mas ainda tinha que de vez em quando, apertar ctrl+alt+del para matar algum processo que estava travado. A instalação do Windows 7 ocorreu já quando tinha ido para outro projeto, e nesse ainda estamos definindo qual será o SO, a ser utilizado, então ainda estamos fazendo testes em Windows e Linux, mas acredito que no final iremos utilizar o Linux mesmo. 🙂

E uma das coisas que mais me incomodava no Windows 7 era ter que usar o putty, tanto que eu preferia subir uma máquina virtual com o Ubuntu, só para acessar os nossos servidores via ssh. Além disso, como os usuários de Windows sabem muito bem, esse é um mundo limitado e perigoso, usar anti-vírus também é algo muito ultrapassado (rs). No Windows, o usuário é protegido para não fazer nenhuma ação que possa ocasionar em danos no SO, o Windows é voltado para usuários comuns, e usuários que utilizam as tecnologias da Microsoft, e não era essa a minha realidade, eu não uso do Visual Studio, ou o SQL Server, todos os programas que eu uso, tem uma versão para Linux, exceto o Microsoft Office e o Fireworks, mas para esses eu posso usar uma máquina virtual. 🙂

Eu até comentei no twitter, que: ao usar o Windows eu sinto, q dei um passo para trás uahua … mas p/ trabalhar tem q ser o pinguim

Então, tomei uma decisão, instalar o Ubuntu 9.10 e “tacar fogo” no Windows 7, e fui que eu fiz. 🙂

O que mudou

Hoje me sinto muito mais a vontade usando o Ubuntu do que o Windows, e isso tanto no trabalho quanto em casa.

Abaixo, cito algumas vantagens e desvantagens do uso do Linux, para mim:

  • Vantagens
    • Você não se preocupa com vírus;
    • Com o tempo o seu SO não perde performance;
    • Os aplicativos também travam, mas dificilmente irá travar todo o seu SO;
    • Conhecimento, a cada dia você aprende algo novo usando Linux,;
    • Conexão remota com servidores de forma leve e estável via ssh;
    • Há distribuições que oferecem uma excelente usabilidade;
    • Há aplicações muito boas, exemplos: geditvimRhythmbox, crontab, etc;
    • Você tem total controle sob o seu SO;
    • Não “perco” tempo jogando;
    • Você não precisa gastar um centavo para usá-lo e muito menos ter que utilizar seriais.
  • Desvantagens
    • Nem todas as aplicações foram devidamente testadas, na distribuição que você usa;
    • Há distribuições demais, lógico que há o lado bom e ruim disso, mas eu acho que isso prejudica a adoção do Linux;
    • As versões ficam obsoletas em um curto espaço de tempo, comparado ao Windows;
    • Atualizar a sua versão pelo próprio apt-get, geralmente, faz com que algo pare de funcionar ou tenha um comportamento estranho;
    • Drivers ainda é um problema, e depende muito da sua “sorte” e do fabricante do seu PC/note/net, para mim não foi um grande problema, pois só faltou o driver do leitor óptico (o que não faz muita diferença).

Reflexões finais

Você não precisa usar o SO X porque fulano recomenda, ou porque a maioria das pessoas usam, você tem que usar o SO que melhor atenda as suas necessidades, e esse é um dos fatores que faz que o Windows ainda domine os desktops e o Linux domine os servidores. O Windows muitas vezes já vem de fábrica (eu mesmo comprei um Windows Vista sem querer, venda casada do caramba), e há muitos usuários que apenas usam o computador para tarefas básicas, e por isso eles não vão se dar ao trabalho de instalar um outro SO, e muito menos de aprender comandos.

E para usar Linux, você tem que ter em mente, que você irá sofrer, errar, mas você irá aprender e adquirir muito mais conhecimento do que se você usasse o Windows.

E em breve eu acredito que esse post ficará ultrapassado, pois cada vez mais o nosso “desktop” está na nuvem, eu mesmo mal uso o Open Office, até porque prefiro muito mais o Office, e uso o Google Docs.

Por fim, o que eu quero deixar claro é que você não deve ser um torcedor roxo de uma distribuição ou empresa, pois isso causa uma cegueira incrível. O Windows 7 é um SO muito bom, há muitas distribuições excelentes Linux, recomendo o Ubuntu. Portanto, experimente, até porque, no mínimo você irá ganhar uma opinião em relação aquele SO, e não ficará indo na onda das pessoas, e poderá se surpreender, assim como eu me surpreendi com o Linux. 😀

Primeiro Ensina aí! Cursos Grátis

junho 26, 2009

Pessoal,

No banner principal de nosso blog desde sua criação consta a frase “Compartilhando Conhecimento”. E é isto que temos tentado humildemente fazer nos últimos tempos. E é justamente para dar mais um passo neste caminho, iremos fazer nos meses de julho e agosto, o primeiro Ensina aí!

O Ensina aí! é uma sequência de cursos e palestras feitas por amigos e funcionários da Voice Technology. O público destinado é qualquer pessoa que deseje participar. O calendário de cursos do Ensina aí! ainda está em fase final de preparação.

Todos os cursos estão relacionados a algum conhecimento que é utilizado na empresa.

O professor, é alguém da nossa empresa que conheça e trabalhe com o assunto abordado. Como não somos professores / instrutores profissionais, chamaremos de “Ensinadores”…

Os cursos já confirmados são:

1. Scrum: Gerenciando e planejando projetos de software (10 horas).

Data: 20, 21 e 22 de julho. Das 19:00 às 22:30

Ensinador: André Pantalião

2. Introdução ao Teste de Software: uma abordagem prática (10 horas).

Data: 27, 28 e 29 de julho. Das 19:00 às 22:30

Ensinador: Fabrício Campos

3. Linux

Data: a ser confirmada

Ensinador: Adelson Junior

Ainda colocaremos mais palestras e cursos, se quiser participar de algum curso ou dar uma palestra.

Nesta primeiro evento, os participantes serão colabores e amigos da Voice Technology e pessoas indicadas por eles. Quer participar, mande e-mail para ensinaai@voicetechnology.com.br.

Quer participar do próximo Ensina aí? Mande e-mail para ensinaai@voicetechnology.com.br com o assunto “[Segundo Ensina aí!]”

Até mais,

André

Novidades do FileSystem Ext4

abril 4, 2009

O Ext4 é o sucessor do Ext3 (Extended 3), o qual é o file system mais popular no mundo Linux atualmente.
Em outubro de 2008 o “EXPERIMENTAL” do Ext4 no Kernel Linux foi removido, fazendo com que as mais novas distribuições como Ubuntu 9.04 Alpha e Fedora 11 Beta já disponibilizassem a opção de criar uma partição de disco baseada neste novo FileSystem e possivelmente as versões finais virão com o Ext4 como padrão.

Agora, o Ext4 é melhor que o Ext3? Bem, pelo que eu pude ver nas pesquisas que fiz, o Ext4 trás bastante melhorias e várias NOVAS funcionalidades em relação ao Ext3.

Algumas melhorias:
-Suporte a arquivos individuais de 16TB, contra 2TB do Ext3 (Isso com Blocos de 4k)
-Suporte a Tamanho de Sistema de arquivos de 1EB (ExaByte), contra 8TB (Com blocos de 4k)

Agora as Principais novas funcionalidades do Ext4 são:

Extents (Medida):
É o nome da feature que descreve como os dados serão “estabelecidos” (controlados) no disco para armazenar as informações de um arquivo.

O Ext3 usa um método indireto para acompanhar os blocos usados por um arquivo em particular, isso significa que, para cada arquivo ele terá que acompanhar cada um dos blocos pertencentes àquele arquivo. Ex: um arquivo de 100MB vai usar 25,600 blocos de 4KB, então o ext3 terá que acompanhar todos os 25,600 blocos e como eles estão ordenados.. (Nossa!!)
Já o Ext4 usa um tipo de medida (extens), que é uma série contínua de blocos, dessa maneira o Ext4 precisará apenas da informação de início e quantos blocos mais serão usados por essa medida, na qual o arquivo está.
Ganho: menos fragmentação pelo fato do uso de blocos contínuos. Mais performance ao apagar arquivos, pois existem menos informações de controle.

Journaling Checksumming:
No Ext3 as alterações feitas no file system não são efetivadas em tempo real. De tempos em tempos o file system “commita” (confirma) essas mudanças. O Journal é a lista dessas mudanças. Quando o sistema de arquivos se recupera de um crash, ele simplesmente dá um outro commit nesse ultimo journal, com isso voltando à um estado consistente.    O Journaling Checksumming (feature do Ext4) cria um checksum do journal, com isso é capaz de dizer se a área do journal está falhando. Melhora a confiabilidade.

Multi-Block Allocation:
O Ext3 aloca blocos para um arquivo um por vez. Para um arquivo grande, a função que faz essa alocação é chamada milhares de vezes. O Ext4 usa (como o próprio nome já diz) a alocação de múltiplos blocos por chamada da função. Isto melhora consideravelmente o desempenho, especialmente em arquivos grandes.

Delayed Allocation:
No Ext3, blocos são alocados tao logo quanto eles são necessários por uma função de escrita. Na verdade eles não vão ser precisos tão já, porque os dados podem estar no cache por algum tempo. Então o delayed allocation (atraso de alocação, em tradução livre) permite que os blocos possam ser alocados somente quando é realmente preciso escrever os dados. Isto pode realmente melhorar o desempenho porque durante esse tempo (esse “delay”) o alocador pode estar otimizando a alocação de blocos para minimizar a fragmentação e aumentar a performance.

Para não só ficar na ladainha, vou citar aqui um benchmark realizado por Jeffrey B. Layton, em 28 de Março 2009, para a revista Linux Magazine americana.

Ele criou quatro partições, duas usando Ext3 e duas usando Ext4. Em cada um dos Filesystems uma partição apelidada de DEFAULT e a outra PERFORMANCE.
A DEFAULT é uma partição formatada com os parâmetros default, na PERFORMANCE são algumas modificações na qual o objetivo é ilustrar o quanto você pode obter de performance realizando algumas alterações. Os comandos para a criação dos sistema de arquivos foram estes:

% mke2fs -t ext3 /dev/sda1
% mke2fs -t ext4 /dev/sdb1
% mke2fs -t ext3 /dev/sda1
% mke2fs -t ext4 /dev/sdb1

Na partição Ext3 PERFORMANCE os parâmetros de montagem foram estes:

/dev/sda1  /data_ext3   ext3    defaults,data=writeback,

noatime   0 0

Na Ext4 PERFORMANCE os parâmetros foram:

/dev/sdb1  /data_ext4   ext4    defaults,data=writeback,noatime,barrier=0,extents,journal_checksum    0 0

** Este “barrier=0” seria para desabilitar a função barries, o qual é desabilitada no Ext3, para deixar as coisas mais ou menos iguais.

Seguem os resultados obtidos pelo Jeffrey:

Benchmark Ext3 Ext4

Benchmark Ext3 Ext4

O que podemos extrair de cara é que o DEFAULT do Ext4 superou o Ext3 DEFAULT e inclusive o Ext3 PERFORMANCE em write, rewrite, read e reread.
Por este benchmark, dá pra se ter uma idéia que o Ext4 produz SIM mais performance que o Ext3.
E como não se encontra mais em EXPERIMENTAL, acho que vale a pena SIM usá-lo.

Abraços!

Artigo – Iptables básico

janeiro 29, 2009

Retirado do blog Techfree

Há algum tempo estou inclinado a escrever um post com os conceitos básicos sobre o iptables, mas porque? Participo de algumas listas de discussão e muitas vezes percebo que existem pessoas iniciantes que precisam saber o que estão fazendo com seus servidores, pois a maioria deles não vão além da “receita de bolo” que encontrou no Google. Sendo assim, segue abaixo uma breve introdução dessa poderossíma ferramenta que é o Iptables.

IPTABLES

O iptables nada mais é que uma interface utilizada para inserir regras de filtragens e modificação de pacotes, pois com base nessas regras o kernel efetua as ações devidas, mas necessariamente o módulo ip_tables.

Como é uma ferramenta em linha de comando, muitos dos iniciantes sentem um certo temor ao aprender, mas não há o que temer. É bem simples, basta ler e entender.

A linha de comando do iptables escrita é como uma ação que você deseja que seja tomada com um determinado pacote, para isso deverá fornecer parâmetros para o kernel identificar que pacote deseja fazer tal ação.

Exemplo:

Desejo que todos pacotes do ip 192.168.0.2 sejam bloqueados.

iptables -t filter -A INPUT -s 192.168.0.2 -j DROP

Entendeu? Não conhece as sintaxes do iptables ainda? Vamos para as básicas:

Tabelas

O parâmetro -t informa qual tabela será usada. Nesse post só tratarei de filter e em outro post NAT.

Filter é a tabela responsável por armazenar as regras para filtragem de pacotes propriamente dita. Bloqueio ou liberação.

Nat é a tabela responsável por armazenara as regras para modificação do pacote. Modificar a porta de destino, origem e afins.

sendo assim se desejar criar uma regra de filtragem apenas coloque -t filter, se for NAT coloque -t nat

Tipo de inserção

Se houver duas regras com ações distintas para o mesmo tipo de pacote? Depende da ordem de inserção.

Para adicionar uma regra há dois tipos de parâmetros que podem ser utilizados:

-A adiciona a regra no final da fila. Assim se houver muitas, essa será a ultima e se houver regra com parâmetro idênticos, essa nem será lida.

-I adiciona a linha onde desejar. Se omitir o local, será sempre adicionada no topo da fila.

Exemplo:

iptables -I INPUT 3 ….

Será adicionada na linha 3 da fila do INPUT.

Chain ou Fila

O nome correto é chain, mas vou chamar de fila para facilitar o entendimento.

Existem três tipo de fila na tabela filter; INPUT, OUTPUT e FORWARD.

INPUT

—> | Interface |

É a fila que é checada para pacotes que acessam o servidor por uma determinada interface.

OUTPUT

| interface | —->

É a fila que é checada para pacotes que saem do servidor por uma determinada interface.

FORWARD

—–|–interface–|—–>

É fila que é checada para pacotes que passam pelo servidor, ou seja, apenas são redirecionados.

Agora vamos a alguns parâmetros de identificação de pacotes.

O parâmetro abaixo determina:

– i   interface utilizada

-s   ip de origem do pacote

-d   ip de destino do pacote

-p  protocolo utilizado (tcp,udp,icmp)

Obs: Após o parâmetro -p é possível especificar  portas. Tanto de destino, como de origem.

–sport  porta de origem

–dport porta de destino

Existem outros parâmetros que podem ser utilizados, para maiores detalhes acesse essa página(Em inglês).

e por fim é necessário informar qual a ação a ser tomada pelo pacote.

Para isso utilizamos o -j

As ações mais usadas na tabela filter são ACCEPT e DROP.

ACCEPT aceita os pacotes que encaixam nos parâmetros especificados no comando e DROP ignora os pacotes, por fim rejeitando, mas com DROP o usuário não receberá retorno informando que está bloqueada, a requisição apenas será ignorada.

Por fim vamos fazer uma regra para assimilar:

iptables -A INPUT -s 192.168.0.10 -i eth1 -p tcp –dport 80 -j DROP

Traduzindo a regra; Todos os pacotes que têm como objetivo o servidor, como ip de origem 192.168.0.10, que acessarem pela interface eth1, utilizando o protocolo tcp, com porta de destino 80 (web) serão ignorados.

Pronto!

Agora vamos a alguns adendos da tabela filter.

o iptables tem algumas regras padrões, que se chamam políticas. Por padrão as políticas são totalmente permissívas. Assim todas elas já estão com a ação ACCEPT.

Para modificar é simples

iptables -P <chain ou fila> <ação>

exemplo:

iptables -P INPUT DROP

Dessa forma qualquer pacote que acessar a fila INPUT e não tiver nenhuma regra específica será aplicada a regra padrão descita na política. Nesse caso ignorar. Note que não é preciso utilizar o argumento “-j”, antes do DROP.

Maiores informações sobre o desenvolvimento do Iptables pode ser encontrado no site do projeto.