Qual Linux estou usando?

Hoje fui contratado para reconfigurar um Apache. Problema de virtual host. Mas quando caí no shell, a primeira coisa que me perguntei foi: onde está o httpd.conf? Isso depende da distribuição, se ele foi instalado através de um gerenciador de pacotes. Pra descobrir qual distribuição estamos usando é bem facil:

cat /etc/*release
cat /etc/motd
cat /etc/issue
uname -a

Esses 4 comandos vão te dar uma pista bem próxima, senão exata, de qual distribuição estamos falando. ;)

Eu sei que a dica é simples, mas é o tipo de coisa tão simples que a gente nunca se preocupa em aprender!

Tutorial: Acessando remotamente via VNC um computador com linux que está protegido por um firewall que não é controlado por você, usando túnel ssh

Sim, eu tenho controle sobre o firewall da minha empresa. Mas a questão é: e se eu não tivesse? E se eu fosse um funcionário de outro departamento senão o de informática e precisasse terminar um serviço de casa? Se minha estação de trabalho fosse Windows seria fácil. A solução seria usar o LogmeIn. Mas FELIZMENTE, é Ubuntu. Então vamos lá.

  • Ingredientes:

1. PC no trabalho, com o Ubuntu e o compartilhamento de Área de Trabalho ativado:

Sistema > Preferencias > Área de Trabalho Remota

Deixe como na figura abaixo, setando sua própria senha, é claro:

Preferências da Área de Trabalho Remota

Não esqueça de setar uma senha!

2. PC da minha casa, com Ubuntu e os pacotes openssh-server e xtightvncviewer instalados

Como root, instale os pacotes:

apt-get install openssh-server xtightvncviewer

  • Procedimento

A mágica funciona assim: você faz uma conexão ssh para o PC da sua casa. Com alguns parâmetros passados na linha de comando do ssh, você consegue fazer com que o ssh-server da sua casa fique escutando em uma determinada porta XXXX com o IP 127.0.0.1, e todo tráfego para o IP 127.0.0.1 na porta XXXX no PC da sua casa será direcionado pelo túnel ssh que liga o PC da sua casa ao PC do seu trabalho (em uma porta específica).

Pareceu complicado? Vamos ver na prática!

1. Do PC do seu trabalho, execute o comando:

ssh -C -N -R 5905:localhost:5900 seuusuario@ip.da.sua.casa

E misteriosamente, nada acontece… o prompt fica piscando…

A explicação:

-C Ativa a compressão dos dados trafegados pela conexão do ssh

-N Faz com que nenhum comando seja executado ao estabelecer a conexão. Ou seja, você não vai cair num shell na sua casa

-R 5905:localhost:5900 Aqui está a mágica. Esta opção diz que todo tráfego realizado em direção ao PC da sua casa, na porta 5905, será redirecionado pelo túnel para o PC do seu trabalho, na porta 5900 (porta padrão do VNC)

Obs.: Por default, o openssh-server da sua casa vai ficar escutando na porta que você indicou apenas na interface de loopback (127.0.0.1 ou localhost)

2. Agora vá pra casa! Quando chegar lá, presumindo que você também instalou o xtightvncviewer como eu escrevi, rode o comando:

xtightvncviewer -encodings tight -quality 7 -compresslevel 9 -depth 8 localhost::5905

Digite a senha que você setou nas Preferências da Área de Trabalho Remota e… Voilá!

Linux: Os 15 comandos que os iniciantes precisam saber

1. Super usuário – sudo e su

Uma das características principais de segurança do linux é seu sistema de permissão, que restringe bastante quem pode fazer o que. Muitos comandos e operações só estão disponíveis para o usuário root. Se você obter uma resposta como “permissão negada” ao tentar fazer alguma coisa através da linha de comando, você precisa deixar o sistema saber que você tem permissão para fazê-lo, se tornando o super usuário (você vai precisar entrar com a senha de root).

Existem 2 maneiras distintas de se fazer isso. A primeira é o sudo, que permite um usuário a rodar certos comandos pré-definidos com permissões de super usuário. Isso é útil se, por exemplo, você quer que um usuário seja capaz de instalar um programa, mas não tenha a permissão de realizar qualquer outra tarefa de super usuário. Ter acesso ilimitado como root pode permitir que um usuário danifique o sistema se ele não souber o que está fazendo.
O comando sudo só funciona para executar 1 comando de cada vez, da seguinte forma:

sudo comando-para-executar

Ex.: editando um arquivo de configuração do sistema

sudo vim /etc/fstab

O sistema vai pedir a sua senha. A senha que você vai digitar fica invisível, logo, não se desespere se o que você estiver digitando não aparecer. Por default, o comando sudo será bastante limitado à quais comandos são permitidos.

A outra maneira, que eu uso a todo momento, é o comando su. Este comando vai criar uma sessão como root no console atual, dando a você permissões ilimitadas sobre o sistema. Use este comando com muito cuidado!
O seu uso é muito simples. Tudo o que você precisa fazer é digitar su e apertar ENTER.

su

Quando você acabar de realizar todas as tarefas como root, digite exit para finalizar a sessão.

2. Mudando de diretório – cd

Navegar pelos seus arquivos utilizando comandos pode parecer meio complicado, mas é bem fácil, uma vez que você se acostuma com isso. Esse comando, assim como alguns próximos neste artigo, vai permitir que você navegue pelo seu HD através do console sem perder muito tempo.

Para mudar de diretório você deve usar o comando cd, que significa Change Directory.
Ex.:

cd /home

cd /etc

cd /var/log

cd .. Este comando vai te levar para 1 diretório acima do atual

3. Listando arquivos e diretórios – ls

É claro que o maior propósito de se navegar pelo seu HD é a possibilidade de ver quais arquivos/diretórios existem. Usando o comando ls você pode ver o conteúdo do diretório atual (ou qualquer caminho especificado, vide exemplo). Existem dezenas de opções úteis no comando ls, o que significa que você pode dizer ao comando como se comportar quando executado, apenas incluindo um pouquinho de informação extra no comando. Exemplos:

ls Mostra todos os arquivos/pastas EXCETO as escondidas

ls -a Mostra todos os arquivos/pastas, incluindo as escondidas

ls -l Lista com mais detalhes

ls -s Mostra o tamanho dos arquivos

ls -sh Mostra o tamanho dos arquivos numa forma simples de ler

ls -lh Combina -l e -sh

ls –help Lista todas as opções disponíveis

4. Copiando – cp

O comando cp é usado para copiar um arquivo ou diretório.

cp arquivo-origem.txt caminho/de/destino/arquivo.txt

cp -f origem destino Este comando vai forçar sobrescrever no destino sem perguntar.

cp -r pasta-de-origem destino Este comando vai copiar um diretório inteiro, assim como seu conteúdo recursivamente.

cp –help Mostra todas as opções disponíveis.

Lembre-se: Você pode usar mais de uma opção de cada vez. Por exemplo, você pode usar -fr para forçar sobrescrever o destino enquanto faz uma cópia recursiva.

5. Mover – mv

O comando mv funciona de forma parecida ao comando cp, exceto que ele vai deletar os arquivos de origem uma vez que a duplicação estiver completa.

mv arquivo-de-origem.txt caminho/de/destino/arquivo.txt

mv -f origem destino Força sobrescrever sem perguntar.

mv -r pasta-de-origem destino Vai mover o diretório e seu conteúdo recursivamente.

mv –help Mostra todas as opções disponíveis.

6. Deletar – rm

O comando rm é usado para deletar arquivos e diretórios. Sempre seja cauteloso com este comando, especialmente quando você usar a opção force ou recursive.

rm arquivo.txt

rm -f arquivo.txt Força deletar sem pedir confirmação.

rm -r diretório Deleta o diretório e seu conteúdo, recursivamente. USE COM ATENÇÃO!

7. Criar um diretório – mkdir

Criar um diretório é fácil com o comando mkdir:

mkdir nome-do-diretório

8. Criar um novo arquivo – touch

O comando touch vai criar um novo arquivo vazio, ou, se o arquivo já existe, o comando vai atualizar o status acessado/modificado do arquivo.

touch nome-do-arquivo

9. Editor de Texto – vim

O editor de text vim é bem rápido e leve, porém, pode ser um pouco complicado aprender seus comandos. Existem diversos sites que explicam seus comandos. Clique aqui para ver uma lista de sites com informações dobre o Vim.

10. Exibir o conteúdo de um arquivo – cat

Esse comando é bastante simples, mas muito útil para ver rapidamente o conteúdo de um arquivo sem precisar usam um editor.

cat nome-do-arquivo

11. Buscando strings – grep

O comando grep é um pouco mais complexo, mas faz por merecer estar na lista dos 15 principais comandos do linux que você tem que aprender com seu coração! O comando grep vai procurar um arquivo, texto ou qualquer outra entrada e retornar quaisquer linhas que contenham a string que vc especificar. Digamos que você precisa procurar dentro de um arquivo de log por todos os erros que tenham a ver com o mysql. Ao invés de ter que ler todo o arquivo para achar as linhas que você precisa, o grep faz isso por você!

grep ‘mysql’ arquivo-de-log.log

grep -i ’string’ arquivo Busca a string ’string’ sem se importar com maiúsculas/minúsculas.

grep ’string’ arquivo1 arquivo2 arquivo3 Procura em vários arquivos

comando | grep ’string’ Procura a a string “string” na saída de texto retornada pelo comando “comando”.

grep –help Lista todas as opções disponíveis. E são muitas…

12. Permissões de arquivos – chmod

Algumas vezes você precisa mudar as permissões de um arquivo para que outros usuários e grupos possam ler, escrever ou executar-lo. Existem 2 comandos que servem para isso. O primeiro é o chown, que muda o dono/grupo do arquivo.

chown novo-usuarios arquivo

O segundo comando é o chmod, que permite que você modifique as permissões do arquivo. Exemplos simples:

chmod +x arquivo

chmod 755 arquivo

Para mais informações sobre como usar o comando chmod para mudar permissões específicas baseadas em usuários e grupos, veja este artigo do Wikipédia sobre o chmod.

13. Tabela de processos – top

O comando top é muito útil. Ele vai mostrar os processos que mais consomem recursos, assim como algumas informações como o uso de CPU, uptime, usuários e uso de memória.

14. Ligar/Desligar – shutdown

shutdown now Desliga o sistema imediatamente.

shutdown -t 10 Desliga o sistema em 10 segundos.

shutdown -r now Reinicia o computador.

15. Iniciando e parando serviços

Este comando permite que você inicie, pare ou reinicie serviços do sistema.

/etc/init.d/nome-do-serviço [start|stop|restart]

Ex:

/etc/init.d/httpd start

/etc/init.d/mysql stop

Como restringir alguns usuários do Zimbra a enviar e/ou receber emais para apenas o domínio local

Certa vez um cliente me pediu para restringir apenas alguns usuários do Zimbra a enviar e receber emails apenas para o domínio do correio da empresa. Fuçando na internet, não achei uma documentação que explicasse como fazer ambas as restrições, apenas cada uma separadamente.
Infelizmente, as inúmeras soluções existentes no Wiki do Zimbra não coexistem em paz. Fui procurar ajuda na documentação oficial do Postfix. Resolvi meu problema e vou postar aqui como.
Este tutorial é baseado no Zimbra Colaboration Suite 5.0.14 Open Source.

PS.: Tudo é feito com o usuário zimbra. Para utilizar este usuário, logue-se como root e digite:

su – zimbra

Edite o arquivo /opt/zimbra/conf/zmmta.cf

Procure a linha:

POSTCONF virtual_transport   LOCAL postfix_virtual_transport

Logo abaixo a ela, adicione as seguintes linhas:

POSTCONF smtpd_sender_restrictions          FILE postfix_sender_restrictions.cf
POSTCONF smtpd_restriction_classes          restringe_envio,restringe_recebimento
POSTCONF restringe_envio                    FILE postfix_restringe_envio.cf
POSTCONF restringe_recebimento                    FILE postfix_restringe_recebimento.cf

Agora crie o arquivo /opt/zimbra/conf/enviar com o seguinte conteúdo:

contarestrita@dominiodaempresa.com.br restringe_envio

Crie o arquivo /opt/zimbra/conf/receber com o seguinte conteúdo:

contarestrita@dominiodaempresa.com.br restringe_recebimento

Crie o arquivo /opt/zimbra/conf/dominios com o seguinte conteúdo:

dominiodaempresa.com.br OK

Troque o “dominiodaempresa.com.br” pelo seu domínio do correio.

Edite o arquivo /opt/zimbra/conf/postfix_recipient_restrictions.cf e adicione isto NA PRIMEIRA LINHA DO ARQUIVO:

check_recipient_access hash:/opt/zimbra/conf/receber

Crie o arquivo /opt/zimbra/conf/postfix_restringe_recebimento.cf com o seguinte conteúdo:

check_sender_access hash:/opt/zimbra/conf/dominios, reject

Crie o arquivo /opt/zimbra/conf/postfix_restringe_envio.cf com o seguinte conteúdo:

check_recipient_access hash:/opt/zimbra/conf/dominios, reject

Crie o arquivo /opt/zimbra/conf/postfix_sender_restrictions.cf com o seguinte conteúdo:

check_sender_access hash:/opt/zimbra/conf/enviar

Pra finalizar, crie os db’s dos arquivos “enviar“, “receber“, e “dominios” para que o postfix possa lê-los:

cd /opt/zimbra/conf
postmap enviar
postmap receber
postmap dominios

Reinicie o MTA do zimbra:

zmmtactl stop
zmmtactl start

Vou explicar para que servem os 3 arquivos principais:

  • /opt/zimbra/conf/dominios

Lista dos domínios permitidos para os usuarios contidos nos arquivos enviar e receber

  • /opt/zimbra/conf/enviar

Lista dos usuários que só podem enviar emails para os domínios contidos em /opt/zimbra/conf/dominios. Separe cada usuário por linha, respeitando a sintaxe do arquivo.

  • /opt/zimbra/conf/receber

Lista dos usuários que só podem receber emails dos domínios contidos em /opt/zimbra/conf/dominios. Separe cada usuário por linha, respeitando a sintaxe do arquivo.

Espero ter ajudado :)

Virtualização com XEN no Debian Etch

  • INTRODUÇÃO

O objetivo deste tutorial é mostrar as instruções passo a passo para instalar o XEN em um Debian Etch pré instalado (sistema básico) e com os repositórios corretamente configurados. Todos os programas utilizados se encontram no repositório do Etch, logo, não será feito uso de arquivos externos, tão pouco será necessário compilar alguma coisa.

Antes de começarmos, vamos a algumas definições utilizadas neste tutorial:

Dom0 -> Máquina hospedeira (host), onde será instalado o Xen Hypervisor

DomU -> Máquinas virtuais, abreviando Unprivileged Domain

LVM -> Acrônimo para a expressão inglesa Logical Volume Management para designar um padrão de gerenciamento de partições em disco IDE/SCSI/FC. Foi desenvolvido inicialmente pela IBM, seguindo-se outras empresa e instituições, como HP e a Open Group.

Ao contrário do método tradicional de particionamento, a implementação LVM cria um grande disco virtual, que pode inclusive ter mais de um dispositivo de armazenamento, e divide em partições virtuais. A grande vantagem é permitir o redimensionamento das áreas de modo dinâmico, ou seja, com o sistema operacional sendo utilizado. (fonte Wikipédia http://pt.wikipedia.org/wiki/LVM)

  • INSTALAÇÃO

Depois de se logar em um console (modo texto) como ROOT, vamos começar com o Kernel, libc e todas as ferramentas necessárias para o funcionamento do XEN:

lab04est011:~# apt-get install linux-image-2.6-xen-vserver-686 xen-hypervisor-3.0.3-1-i386-pae xen-tools xen-linux-system-2.6.18-4-xen-vserver-686 linux-headers-2.6-xen-vserver-686 libc6-xen bridge-utils lvm2

Agora já temos o XEN Hypervisor instalado, assim como o seu Kernel “patcheado”.

Antes de dar o boot no novo Kernel é necessário alterar algumas configurações em /etc/xen/xend-config.sxp para que a rede das máquinas virtuais funcionem em modo bridge

lab04est011:~# vim /etc/xen/xend-config.sxp

Altere a linha

(network-script network-dummy)

para

(network-script network-bridge)

Agora vamos reiniciar o sistema pelo Kernel do XEN.

lab04est011:~# reboot

Dentro do novo sistema, vamos conferir como ficaram as interfaces de rede pelo comando ifconfig:

lab04est011:~# ifconfig
eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:E0:7D:FB:DA:26
inet end.: 172.16.1.66 Bcast:172.16.1.255 Masc:255.255.255.0
endereço inet6: fe80::2e0:7dff:fefb:da26/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:345 errors:0 dropped:0 overruns:0 frame:0
TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:37628 (36.7 KiB) TX bytes:15052 (14.6 KiB)

lo Encapsulamento do Link: Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACKRUNNING MTU:16436 Métrica:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

peth0 Encapsulamento do Link: Ethernet Endereço de HW FE:FF:FF:FF:FF:FF
endereço inet6: fe80::fcff:ffff:feff:ffff/64 Escopo:Link
UP BROADCASTRUNNING NOARP MTU:1500 Métrica:1
RX packets:492 errors:0 dropped:0 overruns:0 frame:0
TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:47544 (46.4 KiB) TX bytes:16658 (16.2 KiB)
IRQ:19 Endereço de E/S:0xe400

vif0.0 Encapsulamento do Link: Ethernet Endereço de HW FE:FF:FF:FF:FF:FF
endereço inet6: fe80::fcff:ffff:feff:ffff/64 Escopo:Link
UP BROADCASTRUNNING NOARP MTU:1500 Métrica:1
RX packets:111 errors:0 dropped:0 overruns:0 frame:0
TX packets:345 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:15052 (14.6 KiB) TX bytes:37628 (36.7 KiB)

xenbr0 Encapsulamento do Link: Ethernet Endereço de HW FE:FF:FF:FF:FF:FF
endereço inet6: fe80::200:ff:fe00:0/64 Escopo:Link
UP BROADCASTRUNNING NOARP MTU:1500 Métrica:1
RX packets:202 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:20653 (20.1 KiB) TX bytes:0 (0.0 b)

lab04est011:~#

peth0 -> interface utilizada para fazer o bridge entre as interfaces virtuais e a interface real

vif0.0 -> interfacel utilizada para que o Dom0 se comunque com a rede.

xenbr0 -> bridge que contém peth0 e vifX.Y

Cada interface de rede de cada máquina virtual criada terá uma interface correspondente no Dom0, chamada de vifX.Y, onde X representa o domínio e Y o número da placa de rede da máquina virtual. Resumindo, a primeira interface de rede da terceira máquina virtual se chamaria vif2.0 no Dom0. A segunda interface de rede da primeira máquina virtual se chamaria vif1.1 no Dom0. E por aí vai… lembre-se que a contagem começa com 0 (zero).

  • CRIANDO O SISTEMA BASE (MODELO)

Vamos gerar um sistema base do Debian e usá-lo como modelo para esta e futuras máquinas virtuais que venham a ser criadas. Para fazer isso, utilizamos a ferramenta debootstrap.

O debootstrap cria uma instalação do Debian (apenas sistema base) em um diretório. Vamos criar uma pasta para receber este sistema base.

lab04est011:~# mkdir base

O debootstrap precisa de uma fonte para baixar os arquivos do sistema básico do debian. Podemos usar o próprio CD1 de instalação do Debian, ou até mesmo um repositório online. Neste tutorial vamos utilizar o CD1 do Debian.

Insira o CD1 do Debian Etch na unidade de cdrom e monte-o em /mnt:

lab04est011:~# mount /dev/cdrom /mnt

Agora vamos criar o sistema base na pasta “base”. Esta operação pode demorar um pouco:

lab04est011:~# debootstrap etch base file:/mnt

E desmontamos o cdrom

lab04est011:~# umount /dev/cdrom

Precisamos configurar alguns arquivos da base que não veem configurados pelo debootstrap. Vamos utilizar os arquivos do Dom0, copiando-os para a base e alterá-los quando necessário, na hora de copiar a base para a partição da máquina virtual:

lab04est011:~# cp /etc/fstab base/etc

lab04est011:~# cp /etc/hosts base/etc

lab04est011:~# cp /etc/apt/* base/etc/apt/

lab04est011:~# cp /etc/network/interfaces base/etc/network/

É preciso copiar os módulos do Kernel do XEN para o sistema base:

lab04est011:~# cp -arpv /lib/modules/2.6.18-6-xen-vserver-686 base/lib/modules/

  • CRIANDO AS MÁQUINAS VIRTUAIS

O primeiro passo é criar os volumes lógicos que vão abrigar as máquinas virtuais. Desmonte a partição que vai receber os volumes lógicos, caso ela esteja montada. Neste exemplo é /dev/hda3.

lab04est011:~# umount /dev/hda3

Obs.: Não podemos esquecer de remover eventuais entradas desta pastição no arquivo /etc/fstab !

Preparando a partição para receber os volumes lógicos:

lab04est011:~# pvcreate /dev/hda3

Criando o grupo lógico chamado VM:

lab04est011:~# vgcreate vm /dev/hda3

Agora vamos criar as partições que vão abrigar nossa primeira máquina virtual (vou chamá-la de VM1). Por questões didáticas de simplificação, criarei a máquina virtual utilizando todos os arquivos em uma única partição. Logo, teremos apenas duas partições: / e SWAP.

Criando a partição “/” com 2Gb em /dev/vm/vm1.raiz:

lab04est011:~# lvcreate -L2G -n vm1.raiz vm

Criando a partição SWAP, com 512Mb em /dev/vm/vm1.swap:

lab04est011:~# lvcreate -L512M -n vm1.swap vm

Criando o sistema de arquivos EXT3 na partição “/”:

lab04est011:~# mkfs.ext3 /dev/vm/vm1.raiz

Setando a partição /dev/vm/vm1.swap como swapspace:

lab04est011:~# mkswap /dev/vm/vm1.swap

Agora vamos montar a partição raiz da máquina virtual em /mnt

lab04est011:~# mount /dev/vm/vm1.raiz /mnt

E copiar o sistema base para a partição

lab04est011:~# cp -arpv base/* /mnt/

Precisamos configurar alguns arquivos na máquina virtual. Mas antes, vamos dar um chroot em /mnt

lab04est011:~# chroot /mnt

Agora vamos atualizar o sistema

lab04est011:~# apt-get update

lab04est011:~# apt-get upgrade

Instalar o pacote libc6-xen, que resolve o bug das mensagens do kernel

lab04est011:~# apt-get install libc6-xen

Agora vamos configurar o /etc/fstab

lab04est011:~# vim /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda2 / ext3 defaults,errors=remount-ro 0 1
/dev/hda1 none swap sw 0 0
/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

Este é o arquivo é uma cópia do /etc/fstab do Dom0, lembra? Precisámos editá-lo para que se adeque à realidade da nossa máquina virtual, que possui apenas 2 partições (raiz e swap). Altere o arquivo para que ele fique como o abaixo:

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda2 / ext3 defaults,errors=remount-ro 0 1
/dev/hda1 none swap sw 0 0

Porque escolhemos /dev/hda1 para swap e /dev/hda2 para raiz?? As partições criadas não eram /dev/vm/vm1.raiz e /dev/vm/vm1.swap???

Calma… isso será explicado no passo de criação do arquivo de inicialização da máquina virtual.

Agora vamos configurar a interface de rede da máquina virtual. edite o arquivo /etc/network/interfaces

lab04est011:~# vim /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Neste tutorial utilizaremos um IP atribuído por um servidor DHCP. Neste caso, a configuração acima está adequada. No caso de usarmos IP fixo, devemos configurar este arquivo conforme abaixo:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx # ip desejado
netmask xxx.xxx.xxx.xxx # máscara de rede
gateway xxx.xxx.xxx.xxx # ip do gateway

No caso de IP fixo, não podemos esquecer de configurar o arquivo /etc/resolv.conf

lab04est011:~# echo nameserver xxx.xxx.xxx.xxx > /etc/resolv.conf

Onde xxx.xxx.xxx.xxx é o IP do servidor DNS.

Agora vamos configurar o arquivo /etc/hosts

lab04est011:~# vim /etc/hosts

127.0.0.1 localhost
127.0.1.1 lab04est011.local lab04est011

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Altere-o para que fique como abaixo:

127.0.0.1 localhost
127.0.1.1 vm1

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

E por último, vamos definir o hostname com o comando

lab04est011:~# echo vm1 > /etc/hostname

E configurar o locales

lab04est011:~# apt-get install locales

lab04est011:~# dpkg-reconfigure locales

Selecione os locales que desejar. Neste caso utilizaremos os listados abaixo por questão de compatibilidade:

[*] pt_BR ISO-8859-1

[*] pt_BR.UTF-8 UTF-8

Depois escolha como padrão “pt_BR.UTF-8″.

Agora saímos do ambiente chroot e desmontamos a partição /dev/vm/vm1.raiz

lab04est011:~# exit

lab04est011:~# umount /dev/vm/vm1.raiz

Vamos agora criar o script de inicialização da máquina virtual.

Os scripts devem ficar na pasta /etc/xen. Vamos criar um para a nossa “vm1″

lab04est011:~# vim /etc/xen/vm1

name = “vm1″
kernel = “/boot/vmlinuz-2.6.18-6-xen-vserver-686″
ramdisk = “/boot/initrd.img-2.6.18-6-xen-vserver-686″
memory = 128
root = “/dev/hda2 ro”
disk = [ 'phy:/dev/vm/vm1.raiz,hda2,w', 'phy:/dev/vm/vm1.swap,hda1,w' ]
vif = [ 'mac=00:00:00:00:00:01' ]

E finalmente chegou o momento de ligarmos a máquina virtual.

lab04est011:~# xm create -c vm1

Entre com o usuário root. O sistema não vai pedir senha porque a mesma ainda nao foi criada, então criá-la:

vm1:~# passwd

E converter o passwd para shadow

vm1:~# pwconv

E pronto!

Para sair do console da máquina virtual, use a sequência de teclas CTRL+].

Para que a máquina virtual inicia automaticamente a cada boot do Dom0, crie a pasta /etc/xen/auto

lab04est011:~# mkdir /etc/xen/auto

E crie links simbólicos apontando para o script de inicialização da máquina:

lab04est011:~# ln -s /etc/xen/vm1 /etc/xen/auto/vm1

  • ADMINISTRAÇÃO DAS MÁQUINAS VIRTUAIS

Abaixo segue uma lista com alguns comandos para administrar as máquinas virtuais:

Desligando uma máquina virtual:

lab04est011:~# xm shutdown -H vm1

Reiniciando uma máquina virtual:

lab04est011:~# xm reboot vm1

Desligando abruptamente uma máquina virtual:

lab04est011:~# xm destroy vm1

ATENÇÃO: Este comando é equivalente ao desligamento abrupto de uma máquina real (ex faltar luz). Só utilize-o em casos extremos, por exemplo, perda de controle da máquina virtual. O uso deste comando poderá causar danos como o corrompimento do filesystem e a perda de dados.

Listando as máquinas virtuais que estão ligadas:

lab04est011:~# xm list

Ao listar as máquinas, poderão aparecer algumas letras que indicam o estado das
mesmas. As principais são:
­ r (running): indica que a máquina está executando alguma tarefa;
­ b (blocked): indica um bloqueio de atividade, geralmente causado por espera para acesso a
dispositivos;
­ p (paused): indica que a VM sofreu pausa (veja a seguir como estabelecer pausa na
execução);
­ s (shutdown): indica que a máquina está em processo de shutdown;
­ c (crashed): indica que máquina sofreu um “crash”. Essa situação deve ser do conhecimento
do hypervisor para que o estado “c” seja listado;
­ d (dying): indica que a máquina está saindo do ar mas ainda não terminou por algum motivo
temporário. Esse estado geralmente ocorre durate shutdown ou crash da máquina.

Um TOP do sistema e das máquinas virtuais:

lab04est011:~# xm top

Pausar uma máquina virtual:

lab04est011:~# xm pause vm1

Tirar a pausa:

lab04est011:~# xm unpause vm1

Mudar a quantidade de memória da máquina virtual em “tempo de execução”:

lab04est011:~# xm mem-set vm1 512

Para maiores informações, e mais comandos, consulte a documentação do XEN, ou digite:

lab04est011:~# man xm

  • COMANDOS ÚTEIS PARA MANIPULAR VOLUMES LÓGICOS

Listar volumes físicos:

lab04est011:~# pvs

Remover volumes físicos

lab04est011:~# pvremove /dev/hda3

Listar os grupos e as suas informações:

lab04est011:~# vgs

Remover um grupo de volumes:

lab04est011:~# vgremove vm

Listar os volumes lógicos definidos:

lab04est011:~# lvs

Remover um volume lógico:

lab04est011:~# lvremove /dev/vm/vm1.raiz

Renomear um volume lógico:

lab04est011:~# lvrename /dev/vm/vm1.taiz /dev/vm/vm2.raiz

Redimensionar um volume lógico:

lab04est011:~# lvresize -L -5G /dev/vm/vm1.raiz

Obs: Ao redimensionar um volume lógico, parte do sistema de arquivos (caso exista) será perdido. Se não houver dados ou sistema de arquivos, bastará formatar o volume lógico (mkfs.ext3 /dev/vm/vm1.raiz, por exemplo). Caso haja dados, a primeira opção será fazer um backup dos mesmos para um posterior retorno. A segunda opção será redimensionar o sistema de arquivos. Para cada tipo de sistema de arquivos haverá um comando próprio para esta ação. É importante ressaltar que o redimensionamento do sistema de arquivos também poderá causar perda de dados.

Como queimar uma ISO pelo modo texto?

Continuando a série “como eu faço isso sem o modo gráfico?”, eis aqui a dica de como gravar uma imagem iso num CD ou DVD pela linha de comando.

Quem faz essa mágica é o cdrecord. No modo texto, ou numa janela de terminal, faça:

cdrecord dev=/dev/cdrom -data /caminho/do/arquivo.iso -v -v

Os “-v” ’s são para dar verbose duplamente, ou seja, a saída do programa será bastante detalhada.

Se você tiver um CD ou DVD RW, você pode também usar o cdrecord para apagá-lo:

cdrecord dev=/dev/cdrom blank=fast

Se você não possui o cdrecord instalado:

sudo apt-get install cdrecord # no ubuntu

apt-get install cdrecord # no debian, como root

yast -i cdrecord # no SUSE, como root

Em breve postarei um tutorial para criação de uma ISO com seus arquivos.

Problema Resolvido: VMware Server 1.0.5 no Ubuntu Hardy Heron (8.04) LTS, kernel 2.6.24

Assim que instalei o novo Ubuntu (8.04) no meu notebook, me deparei com um problema: o VMware Server não instalava, dando erro em algumas libs. Resolvi escrever um mini-tutorial explicando como resolver o problema.

Obs: esta dica serve para qualquer distro com o kernel 2.6.24, fazendo-se apenas algumas modificações nos caminhos dos arquivos.

Primeiro, baixe o VMware Server 1.05 e o patch vmware-any-any-update115. Não esqueça de instalar os pacotes necessários ao vmware:

sudo apt-get install openbsd-inetd build-essential linux-headers-$(uname -r)

Instale o VMware como de costume até aparecer um erro na compilação. Extraia o pacote de update:

tar -xzvf vmware-any-any-update115.tar.gz

e rode o runme.pl

cd vmware-any-any-update115

./runme.pl

O patch continua a instalação do VMware automaticamente. Ao final do processo você vai notar que não consegue rodar o VMware. Aí vem o pulo do gato. Rode os comandos:

sudo cp /usr/lib/libpng12.so.0 /usr/lib/vmware/lib/libpng12.so.0/

sudo cp /usr/lib/gcc/i486-linux-gnu/4.2.3/libgcc_s.so /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1 # se o seu Ubuntu é 32bit

ou

sudo cp /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libgcc_s.so /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1 # se você usa a versão 64bit

Pronto! É só rodar o vmware e ir pro abraço!

Manipulando arquivos .gz, .tar.gz e .tar.bz2 no Linux

Muita gente recém chegada ao Linux sente dificuldade ao lidar com arquivos compactados. Tudo bem que há uma grande facilidade para extrair o conteúdo desses arquivos pela interface gráfica, mas e quando só temos a tela preta com o cursor piscando? Como fazer? Segue um mini tutorial sobre manipulação desses tipos de arquivos pelo modo texto.

Extraindo arquivos

Para extrair os arquivos compactados no formato .tar.gz, faça:

tar -xzvf arquivo.tar.gz

E no formato .tar.bz2:

tar -jxvf arquivo.tar.bz2

* Você precisa ter o pacote bzip2 instalado

Para extrair o conteúdo de um arquivo .gz, basta fazer:

gunzip nomedoarquivo.gz

* Note que após a operação, o arquivo .gz some, dando lugar ao arquivo original.

Comprimindo arquivos

Para criar arquivos .tar.gz:

tar czvf arquivo.tar.gz arquivos

E para criar arquivos .tar.bz2:

tar cjvf arquivo.tar.bz2 arquivos

Para compactar usando o gzip:

gzip arquivo

* Note que após a operação, o arquivo some, dando lugar ao arquivo .gz.

Maiores informações:

man tar

man gzip

Ies4Linux: Internet Explorer no Linux

Sabe aqueles momentos em que você morre de raiva porque não consegue abrir seu site favorito no Firefox? E quando você não consegue acessar o site do seu banco? Seus problemas acabaram!
A dica pode parecer estranha, mas porque você não abre com o Internet Explorer? Já sei: “Mas o Internet Explorer é do Windows…”. Eis a solução!

IEs4Linux é a forma mais simples de ter o Microsoft Internet Explorer rodando no Linux.

Para instalar, verifique se você possui os pacotes wine e cabextract instalados. Se você usa Ubuntu ou Debian, use os comandos:

dpkg -l |grep -i wine

dpkg -l |grep -i cabextract

Se você usa SUSE ou algum outro sabor de Linux que utiliza sistema de empacotamento RPM, use os comandos:

rpm -qa |grep -i wine

rpm -qa |grep -i cabextract

Se não tiver esses pacotes instalados, faça:

sudo apt-get install wine cabextract  # no o ubuntu

apt-get install wine cabextract  # no debian, como root

yast -i wine cabextract # no SUSE, como root

Aí é só baixar aqui o pacote .tar.gz da última versão, extraí-lo, rodar o “ies4linux” e seguir as instruções. Para facilitar, aí vai um comando no estilo “One Liner” que baixa o pacote, extrai e roda o executável ies4linux. Rode-o numa janela de terminal.

wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz && tar zxvf ies4linux-latest.tar.gz && cd ies4linux-* && ./ies4linux

Agora sim, você vai poder voltar a mandar torpedos pelo site da OI, dentre outras coisas :)

Usando o Postfix como Gateway para filtro de mensagens (ClamAV + SpamAssassin) no Debian Etch

Hoje eu precisei ajudar um amigo a configurar um Postfix no firewall para que ele receba as mensagens de correio eletrônico, filtre seu conteúdo e mande-as para o servidor de correio interno (Qmail). Resolvi postar a solução aqui no blog, baseada nas documentações encontradas neste link e neste link.

Vamos lá. Para instalar o Postfix, o Clamav e o Spamassassin:

apt-get install postfix spamassassin spamc clamav

Agora edite o arquivo /etc/defaults/spamassassin e mude ENABLED=0 para ENABLED=1. Edite também o arquivo /etc/spamassassin/local.cf e descomente as linhas:

rewrite_header Subject *****SPAM*****

report_safe 1

required_score 5

use_bayes 1

bayes_auto_learn 1

Inicie o serviço do spamassassin:

/etc/init.d/spamassassin start

Agora crie a pasta /var/spool/filter

mkdir /var/spool/filter

chown clamav /var/spool/filter

Dentro do arquivo /etc/postfix/master.cf procure pela linha que começa com smtp inet e altere para que fique como abaixo:

smtp inet n – n – – smtpd

-o content_filter=clamav:clamav

Dentro do mesmo arquivo, adicione após a última linha:

clamav unix – n n – 15 pipe

flags=Rq user=clamav argv=/usr/lib/postfix/clamav-filter.sh -f ${sender} — ${recipient}

Ainda no master.cf, procure a linha que começa com a palavra local e comente-a.

Agora vamos para o arquivo /etc/postfix/main.cf. Procure as linhas abaixo, altere as que existirem como está abaixo (ou acrescente as linhas que nao existirem):

myorigin = seudominio.com

mydestination =

local_recipient_maps =

local_transport = error:local mail delivery is disabled

mynetworks = 127.0.0.0/8 12.34.56.0/24 # sua rede interna

relay_domains = correio.local # a sua maquina de correio para a qual o gateway vai mandar os emails

parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps

relay_recipient_maps =

transport_maps = hash:/etc/postfix/transport

command_time_limit = 1h

Agora, crie o arquivo /etc/postfix/transport com a linha:

seudominio.com smtp:correio.local

Execute:

postmap /etc/postfix/transport

Baixe o script do Deives Michellis para a pasta /usr/lib/postfix

cd /usr/lib/postfix

wget http://www.parruda.net/downloads/clamav-filter.sh

chmod +x clamav-filter.sh

E pronto! Agora mande um

/etc/init.d/postfix restart

tail -f /var/log/mail.info

e monitore se as mensagens estão sendo repassadas para o seu servidor da rede local, e se estão indo filtradas!

WordPress Themes