OwnCloud : Crie a sua própria nuvem – Alternativa ao Dropbox

 Clusterweb, Leitura Recomendada, Linux, Redes  Comentários desativados em OwnCloud : Crie a sua própria nuvem – Alternativa ao Dropbox
maio 302013
 

Introdução – Instalação – Configuração

Introdução

Com o recurso Cloud acessível, todos tendem a resolver tudo com este recurso. De um determinado ponto de vista, faz até sentido. Adeus HDs enormes, sem contar que tudo está acessível a qualquer hora e em qualquer lugar.

Seja usuário Android, iPhone, Windows (CREDO), Mac ou GNU/Linux (Viva \o/), o projeto ownCloud agrada a todos. Pois fotos, músicas, calendários, tarefas e arquivos versionados, agora ficam em sua nuvem privada.

Neste documento, conheceremos o pacote ownCloud que provê o sincronismo de uma determinada pasta com a nuvem, calendário, agendamento de tarefas, bookmarks, gerenciamento de alguns e outros recursos que permitem a criação de serviços profissionais em nuvem. Por exemplo, com estes recursos, é possível prover serviço de cloud privada em escritórios de advocacia e muitos outros segmentos.

A seguir, os principais recursos e diferenciais do pacote ownCloud:

  • Criptografia → Os seus dados podem ser armazenados e criptografados no filesystem, com isto, nem usuários com a senha root terão acesso às informações enviadas ao servidor;
  • Integração com LDAP → Se você utiliza o servidor de diretório LDAP, este recurso é muito útil para o gerenciamento de senhas;
  • Gerenciado de tarefas, calendários, galeria de imagens e músicas;
  • Versionamento de arquivos → Quando habilitado permite a recuperação de antigas versões de documentos;
  • Arrastar e soltar para upload de arquivos;
  • Visualizador de ODF;
  • Storage externo → Embora encontra-se em fase experimental, permite acessar o Google Drive e Dropbox na sua estrutura de nuvem.

Instalação e Configuração do Server

Antes de tudo, devemos resolver as dependências, ou seja, o Apache, PHP 5.3 e alguns pacotes, conforme abaixo:

  • apache2
  • php5
  • php5-json
  • php-xml
  • php-mbstring
  • php5-zip
  • php5-gd
  • php5-sqlite
  • curl
  • libcurl3
  • libcurl3-dev
  • php5-curl
  • php-pdo

Após a resolução das dependências, faça o download do pacote e descompacte-o na sua pasta desejada, no seu Webserver:

# wget http://owncloud.org/releases/owncloud-latest.tar.bz2
# tar -jxvf owncloud-latest.tar.bz2

Verifique as permissões da pasta, como no meu caso, que utilizo SUSE e openSUSE, decidi atribuir a pasta do pacote ao usuário de sistema wwwrun.

Nesta etapa, o pacote está instalado, faltando apenas a sua configuração, que acontece acessando o link contendo o IP do seu servidor e/ou path, seguido da string onwcloud.

Então, para iniciar a configuração, digite no browse o endereço: http://IP-SERVER/owncloud

Durante a configuração, cadastre o usuário administrativo e banco de dados. Ao finalizar a configuração, já teremos o sistema em nuvem funcionando, restando apenas a configuração do ambiente, idioma, personalização e outros detalhes.

Se tudo estiver funcionando corretamente, teremos a seguinte tela:

Pronto. Nesta etapa, sua nuvem está em pleno funcionamento, bastando apenas cadastrar os usuários e configurar os clientes. Então, vamos aos próximos passos.

Clientes Mac, Windows, GNU/Linux e Android

Existem diversos clientes para sincronizar a nossa nuvem, então, sugiro visitar a página http://owncloud.org/sync-clients, que proporciona várias alternativas.

No GNU/Linux, vou deixar neste documento 2 opções: O Mirall e os recursos do Akonadi do KDE.

Começando pelo KDE, entre em:

Configurações → Informações Pessoais → Configuração dos recursos do Akonadi

E clique no botão “Adicionar”, selecione o item “Recurso de groupware por DAV”, informe login e senha.

Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox

Na configuração de servidor Groupware, selecione ownCloud, o servidor e o caminho da instalação. Ao término, teste a conexão com o servidor e pronto!

Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox

A segunda opção, é utilizar o software Mirall, disponível em sua distribuição (o código fonte encontra-se aqui: https://github.com/dmacvicar/mirall), que permite sincronizar uma pasta especificada no seu filesystem.

Após a instalação, execute-o e selecione a opção “Configure” do menu no trayicon, em seguida, configure o servidor, login e senha. Ao terminar, verifique se a conexão foi estabelecida com sucesso, e pronto!

Linux: 
OwnCloud : Crie a sua própria nuvem - Alternativa ao Dropbox

 

Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: OwnCloud : 
Crie a sua própria nuvem - Alternativa ao Dropbox

Na plataforma Windows, a instalação é muito similar, ou seja, devemos informar o server, login, senha e logo a seguir, verificar se a conexão foi estabelecida com sucesso.

Linux: 
OwnCloud : Crie a sua própria nuvem - Alternativa ao Dropbox   Linux: 
OwnCloud : Crie a sua própria nuvem - Alternativa ao Dropbox

DHCP no GNU/Linux – Guia para ISC-DHCP Server

 Leitura Recomendada, Linux, Redes  Comentários desativados em DHCP no GNU/Linux – Guia para ISC-DHCP Server
maio 302013
 
DHCP

Este pequeno guia faz parte de um artigo postado no site esli-nux.com, porém lá, além de DHCP Server usando GNU/Linux, também há um passo a passo demonstrando sob Windows Server, Equipamento CISCO (via CLI) e esses roteadores SOHO “tudo em 1”, de R$ 100.

Claro que meu foco é favorecer o uso do GNU/Linux para prover este serviço, para isto, mostro desde a configuração mais simples, até algumas avançadas, tanto em modo texto, quanto as mais variadas interfaces gráficas existentes no S.O., para configurar e monitorar este simples serviço de rede.

No GNU/Linux, abordo o DHCP Server mais utilizado no mundo (da ISC), as configurações mais utilizadas, o cliente de DHCP e alguns macetes a mais.

Softwares para prover o serviço

Diferentemente do Windows Server, cujo software que irá prover o serviço de DHCP já está incluso no sistema operacional, cabendo ao administrador ativá-lo e configurar; não havendo, portanto, uma opção de escolha sobre o software, já que não é o sistema operacional que provê o serviço, e sim um software nele instalado, no GNU/Linux existe esta capacidade, pois seu Kernel não é fechado, e nenhum software exerce um monopólio sobre algum serviço.

Dentre os programas que podem ser instalados nas distribuições GNU/Linux e prover o servidor de DHCP, há o BusyBox, Dibbler, ISC DHCP, e mais alguns.

BusyBox DHCP server, ou também conhecido como “udhcpd” (servidor) e “udhcpc” (cliente), é famoso por ser um pequeno servidor/cliente. Geralmente adotado em sistemas embarcados ou em situações onde as memórias ROM e RAM, são extremamente escassas, e que o sistema GNU/Linux é modificado para ocupar, por exemplo 20 MB de espaço no disco e 8 ou 10 MB na memória RAM.

Wide-DHCPv6 originalmente desenvolvido no projeto KAME, pela universidade Keio do Japão (Minato, Tokyo), é um servidor DHCPv6, ou seja, somente IPv6, para os sistemas operacionais GNU/Linux e BSD, ele foi concluído e parado em 2006.

Há também uma modificação do Wide-DHCPv6, chamada Dibbler, que provê o DHCPv6 server e provê endereçamento para GNU/Linux (kernel 2.4 e 2.6), Windows (a partir do XP, 2003 e superiores), Windows NT4 e 2000 (mas é experimental), e Mac OS X. Porém, o Dibbler está com seu desenvolvimento parado.

DHCP é a sigla para: Dynamic Host Configuration Protocol, ou Protocolo de Configuração Dinâmica de Hosts. O Protocolo DHCP é definido pela RFC 2131 (Request For Coments).

Além das RFC 3315 (para DHCP com IPv6), RFC 2132 (opções de extensões e parâmetros DHCP e BOOTP), RFC 2489 (processo para a definição de novas opções DHCP) e RFC 1584 (interoperabilidade entre o DHCP e BOOTP).

As documentações e textos das RFCs, não só as citadas acima, mas todas as RFCs existentes estão disponíveis online, através do endereço:

A função do serviço DHCP (ou de um servidor de DHCP), é atribuir números de IP para os computadores, ou qualquer interface conectada em uma rede, o principal formato deste serviço, e também um dos principais motivos de sua adoção, é para utilizar a forma dinâmica de endereçamento.

O DHCP é uma evolução do Bootstrap Protocol (BOOTP, descrito na RFC 951), que por sua vez, vem do protocolo RARP, para que uma máquina soubesse seu endereço de IP, era utilizado o RARP (Reverse Address Resolution Protocol), ou Protocolo reverso de resolução de endereços, definido na RCF 903. Este protocolo permite que uma estação, recém inicializada com seu sistema operacional obtido através de um servidor de arquivos remoto, informasse seu endereço físico na rede, solicitando o seu endereço IP, o servidor RARP recebia esta solicitação, consulta o endereço físico da máquina na rede e respondia com o seu endereço IP correspondente.

Seu problema era que o servidor tinha que estar em cada rede, pois a mensagem de difusão solicitando o endereçamento não passava pelos roteadores. Para solucionar este problema, foi criado um protocolo alternativo de inicialização, o chamado BOOTP, que utiliza mensagem UDP, sendo assim possível sua retransmissão, ou encaminhamento pelos roteadores.

O BOOTP já possui a capacidade de informar outras configurações para a máquina cliente, como o endereço do roteador (chamado gateway), máscara de sub-rede e o endereço do servidor de arquivo que contém a imagem da memória.

Porém, o principal problema no BOOTP, é que somente a atribuição manual de endereços IP é possível, ou seja, o administrador deve cadastrar no servidor BOOTP, todos os endereços físicos/endereço MAC (Media Access Control address) das máquinas conectadas à rede, e seus respectivos endereços IP.

Concluindo, portanto, que no BOOTP o endereço IP pertence à máquina cliente, o servidor apenas a informa quando solicitado.

No início da década de 90, o IETF (Internet Engineering Task Force) trabalhou em um substituto, capaz de superar as limitações do BOOTP e adicionasse recursos novos, definindo-o então, como DHCP através da RFC 2131 de Maio de 1997.

Nas documentações RFC, há uma tentativa de aplicar uma Interoperabilidade entre o BOOTP e DHCP, ou seja, servidores DHCP trabalhar com antigas máquinas cliente BOOTP, e servidores BOOTP com máquinas DHCP. Porém, o BOOTP possui muitas limitações, comparado ao DHCP.

Claro, esta interoperabilidade é funcional, porém, nem sempre ocorre. Mesmo assim, a troca dos equipamentos e o seu desuso faz com que esta interoperabilidade não seja adotada, nem necessária com o passar do tempo.

Funcionamento do DHCP – ISC-DHCP Server

Funcionamento do DHCP

Inicialmente, as configurações sobre a rede e o endereçamento, são inseridas no servidor, que passa a distribuir os endereços de IP às interfaces conectadas a rede, claramente, que estas interfaces devem possuir suporte a tal serviço e estarem configuradas a solicitar o endereço a algum DHCP Server.

Além dos endereços, o servidor de DHCP pode realizar a “concessão” de outras configurações/serviços da rede, como endereços de servidores DNS, gateways, entre outros.

O DHCP usa a estrutura de Cliente/Servidor:

  • No Servidor, está o software que prove o serviço, onde encontramos as configurações e parâmetros e mantém o gerenciamento dos endereços atribuídos.
  • Já os clientes, desde que tenham suporte ao serviço, solicitam o endereço e obtém a concessão de um IP.

Esse procedimento, envolve quatro passos:

  1. Discover – Quando o cliente solicita o endereçamento;
  2. Offer – É fornecido o endereço ao cliente;
  3. Request – O endereçamento é aceito;
  4. Acknowledge – O endereço é listado no servidor, o IP é nomeado como pertencente aquele host ou interface.

Uma negociação simples de solicitação DHCP, ocorre com a troca das mensagens: DHCP Discover, DHCP Offer, DHCP Request e o DHCP Ack.

ISC-DHCP Server

ISC DHCP é o mais conhecido e utilizado, desenvolvido pela “Internet Systems Consortium”, uma organização sem fins lucrativos que desenvolve e distribui softwares no formato Open Source, além de prestar suporte, prezando pela mesma qualidade das maiores empresas de softwares comerciais.

Além do DHCP mais utilizado, eles também desenvolvem o sistema de DNS mais adotado, conhecido como BIND, entre outros projetos também desenvolvidos e/ou distribuídos pela ISC estão o NTP, INN, IRRToolSet, libbind, OpenReg, operam também o “F-root”, que é um dos 13 roteadores DNS que mantém a Internet funcionando. ;-O

ISC-DHCP é uma coleção do software que executa todos os aspectos do DHCP (protocolo de configuração de host dinâmico). Inclui um servidor DHCP, que recebe pedidos e responde, um cliente DHCP, que estará no sistema operacional do computador do cliente, e que emita pedidos ao servidor, um agente relay DHCP, que passa pedidos do DHCP de uma rede LAN à outra de modo que não precise de um servidor DHCP em cada LAN.

O servidor de ISC-DHCP responderá a pedidos de todos os clientes que cumprem com os padrões de protocolo definidos na RFC, e o cliente ISC-DHCP pode interagir com qualquer servidor, desde que também cumpra esses padrões.

Portanto, os componentes do ISC-DHCP não precisam ser utilizados em conjunto, por haver a padronização que é regida pelas RFC’s, há a interoperabilidade entre clientes e servidores de todas as soluções para a implantação do DHCP, comercial ou Open Source, e de qualquer plataforma e/ou sistema operacional.

O ISC DHCP server foi desenvolvido originalmente por Ted Lemon, que o manteve até o release 3.0, com a versão alpha liberada em março/1999, e sua versão final em janeiro 2003. Desde 2004, a manutenção e o desenvolvimento preliminar do ISC DHCP, especialmente o suporte ao IPv6 está ao cargo de David Hankins no ISC.

A versão atual do ISC DHCP é: 4.2.4.P1, que foi lançada em 24 de Julho de 2012. Esta versão possui diversas características novas que a versão anterior (4.0.X) não possuía, entre elas, o DHCPv6 foi melhorado, suporte à delegação de prefixo, suporte a endereços IA_TA, agente relay DHCPv6 (dhcrelay6).

Todas as características desta versão são encontradas nos arquivos que o acompanham, no documento chamado “Release Notes” encontra-se também o que será implantado na próxima versão,que já está em testes e desenvolvimento.

Um dos recursos que está sendo melhorado, é o suporte ao DHCPv6, uma de suas limitações na versão atual, é que apenas tem suporte para os sistemas operacionais Solaris, GNU/Linux, FreeBSD, NetBSD, e OpenBSD.

O cliente e o servidor somente operam com DHCPv4, ou DHCPv6, por vez, não ao mesmo tempo. Para que haja este serviço simultâneo, deve ser executado duas instâncias do serviço.

Uma das fontes de receita e captação de recursos da ISC é a disponibilização de suporte profissional à empresas, consultoria, treinamento a administradores de sistemas e em breve, um programa de certificação para profissionais.

Instalação – Configuração básica

Instalação e configuração do ISC-DHCP

A versão mais recente, pode ser obtida no endereço:

Após baixar, basta descompactar e compilar o pacote.

Outra forma de instalar o ISC-DHCP server, é através do repositório da distribuição GNU/Linux que está sendo utilizada. O repositório é basicamente um servidor de arquivos disponível na Internet, onde possui diversos programas e pacotes pré-compilados para a distribuição GNU/Linux especifica, a maioria dos repositórios somente são acessíveis através do gerenciador de pacotes presente na distribuição GNU/Linux, basta que a máquina em questão esteja conectada com a Internet.

Nas distribuições derivadas do Debian (Ubuntu, Kurumin, Linux Mint, etc…), o pacote correspondente ao servidor DHCP chama-se “dhcp3-server”. Para instalá-lo, basta digitar:

# apt-get install dhcp3-server

No Red Hat (e distribuições derivadas dele, como o Fedora e CentOS), o pacote chama-se, simplesmente, “dhcp”. Para instalá-lo, basta digitar:

# yum install dhcp

Embora o pacote chama-se apenas “dhcp”, o script referente ao serviço, chama-se “dhcpd”, de forma que os comandos para iniciar, parar o serviço, ou reiniciá-lo, são:

# service dhcpd start
# service dhcpd stop
# service dhcpd restart

Ou também, através dos comandos:

# /etc/init.d/dhcp3-server start
# /etc/init.d/dhcp3-server stop
# /etc/init.d/dhcp3-server restart

Também pode haver a necessidade de ativá-lo, ou desativar manualmente para iniciar junto com o sistema (junto ao boot), usando o comando chkconfig:

# chkconfig dhcpd on
# chkconfig dhcpd off

Configuração básica

O arquivo de configuração é o “dhcpd.conf”. Neste, será configurado o servidor, e lá estará inserido todas as informações a cerca de seu funcionamento. Ao instalar o serviço, ele já adiciona o arquivo, porém, como não está configurado, o serviço não ficará ativo até que esteja configurado corretamente e dado o comando para iniciar o serviço.

Este arquivo, originalmente, possui cerca de 110 linhas, sendo que 90% delas são textos comentados, explicando cada item da configuração, como configurar e dando exemplos de configurações.

A localização do arquivo “dhcpd.conf” no sistema GNU/Linux é /etc/dhcp3/dhcpd.conf, em algumas distribuições, pode ser em /etc/dhcpd.conf.

Após instalar o ISC-DHCP, deve-se determinar, caso haja mais de uma, qual placa de rede o servidor DHCP estará ativo, ou seja, em qual placa ele atenderá as requisições.

Para isto, basta editar o arquivo presente em /etc/default/dhcp3-server, na maioria das distribuições. Ao editar o arquivo, haverá uma linha apenas escrito “INTERFACES” nela, deverá ser inserido o nome da placa de rede em que deseja que o serviço seja ativado:

INTERFACES=”eth0”

O GNU/Linux identifica as placas de rede como “eth”, seguido do número a partir do 0, caso tenha 3 placas, serão respectivamente, “eth0”, “eth1” e “eth2”. Em caso de utilização de placa Wireless, ela pode ser identificada “wlan0”, “ath0” ou “ra0”, por exemplo. Ao definir em qual placa o servidor DHCP irá atender, deve-se finalmente configurar.

Nesta etapa, há 3 opções:

  1. Utilizar o arquivo “dhcpd.conf” original, seguindo as instruções e usando a configuração desejada;
  2. Criar um novo arquivo “dhcpd.conf” e adicionar a configuração;
  3. Utilizar um aplicativo em modo gráfico para a configuração.

Nas 2 primeiras opções, o arquivo “dhcpd.conf” ficará, basicamente, semelhante ao seguinte:

# /etc/dhcp3/dhcpd.conf
ddns-update-style none;
default-lease-time 1800;
max-lease-time 14400;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.250;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8,8.8.4.4;
option broadcast-address 192.168.1.255;
host Win2003 {
hardware ethernet 09:0F:B0:FF:EA:10;
fixed-address 192.168.1.2;
}
}

Com a exceção de que, na primeira opção de configuração, entre cada uma dessas linhas haverá textos explicando cada função, para que serve, como funciona e um exemplo de configuração.

default-lease-time 1800;

Nesta linha, é indicado ao servidor, checar a cada 1800 segundos (30 minutos), se a máquina está ativa, ou seja, utilizando o endereço DHCP.

max-lease-time 14400;

Nesta opção, a máquina cliente irá receber o “aluguel” do endereço IP por 14400 segundos (4 horas), ou seja, é o tempo que a máquina vai receber para utilizar o endereço. Depois de decorrido um percentual deste tempo, a máquina cliente vai requisitar a renovação.

Caso a rede possua, por algum motivo, um pool de endereços pequeno, e haja mais máquinas do que IP’s disponíveis, estas duas configurações deverão ter seu tempo reduzido, pois assim, a máquina utiliza o IP apenas pelo tempo em que necessita, e caso seja desligada ou desconectada da rede, o servidor DHCP irá detectar isso em menos tempo, tendo assim o endereço IP, disponível novamente para ser atribuído à outro host.

subnet 192.168.1.0 netmask 255.255.255.0

Essa linha determina a rede, sub-rede e a máscara da rede em que o servidor irá trabalhar, atribuindo os endereços IP. As linhas de configuração seguintes definirão a rede, o pool de endereços (range), exceções (IP fixo), endereços de servidores de nome de domínio.

range 192.168.1.100 192.168.1.250;

Range, define o pool de endereços que ficarão disponíveis para a atribuição automática de endereços. Neste exemplo, os endereços que o servidor irá atribuir ficam no “espaço” entre “192.168.1.100” e “192.168.1.250”, ou seja, há 150 endereços disponíveis para os hosts da rede.

Conclui-se portanto, que há 102 endereços que não fazem parte do range, destinados portanto para máquinas que desempenham algum papel importante na rede e precisam de um endereço físico.

option routers 192.168.1.1;

Esta linha informa para as máquinas qual é o endereço de “gateway” ou do roteador, que está na “divisa” entre a rede interna e a Internet, por exemplo, exercendo a função de firewall ou proxy na maioria dos casos.

option domain-name-servers 8.8.8.8,8.8.4.4;

Aqui, deve ser informado (opcionalmente) os endereços de servidores de resolução de nomes de endereço/domínio, ou DNS. Redes pequenas, em sua maioria, não possuem DNS’s próprios, os endereços aqui inseridos são os DNS’s fornecidos pela provedora de Internet, pode-se usar qualquer endereço de DNS público, como por exemplo, o OpenDNS (208.67.222.222 e 208.67.220.220) ou o DNS do Google (8.8.8.8 e 8.8.4.4).

option broadcast-address 192.168.1.255;

Informado opcionalmente, o endereço de broadcast da rede. O endereço com final 255 é reservado para broadcast.

host Win2003 {
hardware ethernet 09:0F:B0:FF:EA:10;
fixed-address 192.168.1.2;
}

O bloco acima é para definir a atribuição manual de IP fixo para uma determinada máquina, inicia-se com o nome da máquina.

Neste exemplo, ela chama-se “Win2003”, declarando que trata-se de um servidor Microsoft Windows 2003, e que desempenha algum serviço importante na rede, após o nome, indica-se o seu endereço físico de rede (o MAC da placa), e finalmente, o IP que sempre será dado a esta máquina quando ela requisitar. Para adicionar mais máquinas que receberão este tipo de atribuição, basta inserir um bloco semelhante a este, mudando apenas o nome, o MAC e o IP destinado a ela.

Monitorando o servidor e o cliente – ISC-DHCP Cliente

Monitorando o serviço via terminal

/var/lib/dhcp/dhcpd.leases

É neste arquivo onde monitora-se, em tempo real, o que o DHCP Server está fazendo em relação a concessão dos IPs (usando o Debian GNU/Linux, pode haver alguma alteração no caminho do arquivo em outras distribuições).

Exemplo de trecho do arquivo:

}
lease 192.168.0.110 {
  starts 4 2012/07/26 15:31:11;
  ends 4 2012/07/26 15:36:13;
  tstp 4 2012/07/26 15:36:13;
  cltt 4 2012/07/26 15:31:11;
  binding state free;
  hardware ethernet 00:26:5a:06:3d:a2;
  uid "\001\000&Z\006=\242";
}
lease 192.168.0.112 {
  starts 5 2012/07/27 19:52:39;
  ends 5 2012/07/27 20:02:39;
  tstp 5 2012/07/27 20:02:39;
  cltt 5 2012/07/27 19:52:39;
  binding state free;
  hardware ethernet 74:a7:22:9d:a7:0e;
}
lease 192.168.0.100 {
  starts 1 2012/07/30 14:14:15;
  ends 1 2012/07/30 14:24:15;
  cltt 1 2012/07/30 14:14:15;
  binding state active;
  next binding state free;
  hardware ethernet 92:b3:43:b5:c3:fb;
  uid "\001\222\263C\265\303\373";
  client-hostname "vmxp";
}
lease 192.168.0.102 {
  starts 1 2012/07/30 14:18:22;
  ends 1 2012/07/30 14:28:22;
  cltt 1 2012/07/30 14:18:22;
  binding state active;
  next binding state free;
  hardware ethernet 42:d9:7e:be:11:f8;
  client-hostname "lamp";
}

O arquivo /var/lib/dhcp/dhcpd.leases~, contém dados mais antigos.

O arquivo /var/lib/dhcp/dhcpd.leases, armazena o banco de dados de aluguel do cliente DHCP. Este arquivo não deve ser modificado manualmente. As informações de aluguel DHCP de cada endereço IP, recentemente atribuído são armazenadas automaticamente no banco de dados de aluguel.

As informações incluem datas do aluguel e os endereços MAC da placa de interface de rede usada para recuperar o aluguel. Todos os horários do banco de dados de aluguel estão em GMT (Greenwich Mean Time) e não horário local.

O banco de dados de aluguel é recriado de tempos em tempos, para que não fique muito grande. Primeiramente, todos os aluguéis conhecidos são salvos em um banco de dados temporário de aluguel. Então, o arquivo dhcpd.leases é renomeado paradhcpd.leases~, e o banco de dados temporário é salvo como “dhcpd.leases”.

Cliente

No caso do cliente DHCP, o arquivo chama-se /var/lib/dhcp/dhclient.leases

Num dos servidores usado para criar este guia, ele tanto é um servidor DHCP quanto um cliente, pois também está funcionando como roteador/firewall/proxy.

Exemplo de trecho do arquivo:

lease {
  interface "eth1";
  fixed-address 187.22.179.60;
  option subnet-mask 255.255.252.0;
  option dhcp-lease-time 10800;
  option routers 187.22.176.1;
  option dhcp-message-type 5;
  option dhcp-server-identifier 201.46.240.45;
  option domain-name-servers 201.46.240.40,201.46.240.45;
  option dhcp-renewal-time 5400;
  option dhcp-rebinding-time 9450;
  renew 1 2012/05/14 13:02:34;
  rebind 1 2012/05/14 14:15:36;
  expire 1 2012/05/14 14:38:06;
}

ISC-DHCP Cliente

O ISC-DHCP também possui um cliente, como dito anteriormente, no arquivo /var/lib/dhcp/dhclient.leases, você tem um monitoramento onde verifica as ações do cliente quando recebe o endereçamento.

Com o ISC cliente instalado, você terá o programa dhclient, com ele você pode “resetar” uma placa com IP manual, para pegar IP pelo DHCP Server, removendo assim, as configurações de IP feitas manualmente.

Abaixo, o resultado do comando:

# dhclient eth0 -v

Internet Systems Consortium DHCP Client
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/10:78:d2:1e:32:30
Sending on LPF/eth0/10:78:d2:1e:32:30
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
DHCPOFFER from 192.168.0.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.40 — renewal in 270 seconds.

No log acima, meu servidor DHCP é o “192.168.0.1”, meu host recebeu o IP “192.168.0.40” na interface “eth0”.

Modelos de dhcpd.conf e configurações opcionais/avançadas

Exemplo 1

ddns-update-style interim;
update-static-leases on;
ddns-domainname "teste.com.br.";
ddns-rev-domainname "0.168.192.in-addr.arpa.";
key DHCP_DNS {
algorithm hmac-md5;
secret "qLBp520GmSiCXEhM6Y6nyQ==";
};
zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key "DHCP_DNS";
}
zone teste.com.br. {
primary 127.0.0.1;
key DHCP_DNS;
}
authoritative;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.0.0 {
range 192.168.0.100 192.168.0.120;
option domain-name-servers 192.168.0.1;
option domain-name "teste.com.br";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option netbios-name-servers 192.168.0.1;
}

No exemplo 1 acima, o meu servidor DHCP também é o meu DNS server e proxy (firewall + roteador) e login (uma solução para pequena empresa, onde tenho um Debian disponibilizando diversos serviços), nestas “configurações globais” as únicas mudanças são em relação ao DNS.

Exemplo 2 (trecho)

subnet 172.16.200.0 netmask 255.255.255.0 {
range 172.16.200.50 172.16.200.200;
range 172.16.200.230 172.16.200.253;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}

No exemplo acima, podemos colocar mais de um intervalo (range) de IPs que serão oferecidos para os clientes, nele está configurado do final x.50 até o x.200, e depois, do x.230 ao x.253.

Veja que isso já é uma facilidade no GNU/Linux, como exemplo, se fosse no Cisco, eu deixaria o range do x.50 até o x.253, e colocaria o intervalo de x.201 ao x.229, como reservado.

Exemplo 3

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option domain-name "teste.com.br";
option routers 192.168.0.254;
}
          host maq01 {
          hardware ethernet 00:1e:8c:66:97:f1;
          fixed-address 192.168.0.3; option routers 192.168.0.1; }
          host maq02 {
          hardware ethernet 00:50:56:c0:00:01;
          fixed-address 192.168.0.55;
          option domain-name-servers 192.168.0.5;
          option routers 192.168.0.9; }
          host maq03 {
          hardware ethernet 00:55:56:c0:a1:51;
          fixed-address 192.168.0.102;}

Acima, está sendo definido informações individuais para máquinas com IP fixo, ou seja, o que está nas configurações globais será aplicado em todas as máquinas, mas, você pode deixar algumas com configurações diferentes e exclusivas para aquele host (já que o IP estará atrelado com o MAC address).

No nosso exemplo, a “maq01” receberá um router (gateway / acesso à rede) diferente de todas as outras máquinas da rede, enquanto as outras máquinas recebem o router 192.168.0.254, a “maq01” receberá o router 192.168.0.1.

A “maq02”, além de receber um router diferente, também recebe outro servidor DNS para usar como sua configuração de rede. A “maq03”, recebe os valores padrões definidos na configuração global.

Exemplo 4

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}
          group servidores {
          option domain-name-servers 208.67.222.222;
                    host server01{
                    hardware ethernet 00:50:51:e1:00:01;
                    fixed-address 192.168.0.43;
                    option routers 192.168.0.9;}
                    host server02 {
                    hardware ethernet 00:80:54:c5:30:02;
                   fixed-address 192.168.0.39;
                    option routers 192.168.0.11;}
          }
          group roteadores {
          option routers 192.168.0.1;
          option domain-name-servers 192.168.0.41;
                    host router01 {
                    hardware ethernet 00:20:51:e1:00:21;
                    fixed-address 192.168.0.13;}
                    host router02 {
                    hardware ethernet 00:80:14:c5:32:22;
                    fixed-address 192.168.0.19; }
          }
           group maquinas {
                    host maq01 {
                    hardware ethernet 00:20:51:e1:00:50;
                    fixed-address 192.168.0.13; }
                    host maq02 {
                    hardware ethernet 00:80:14:c5:32:51;
                    fixed-address 192.168.0.19;}
          }

Uma outra opção, é trabalhar com grupos. No exemplo acima, tenho as configurações globais, um grupo chamado “servidores” que tem uma alteração no DNS, ou seja, a configuração sobre DNS que as máquinas do grupo “servidores” irão usar não são as definidas nas configurações globais, mas sim, no início da configuração do grupo.

Outro grupo, chamado “roteadores”, também terá configurações exclusivas, neste caso, além do DNS diferente, o router também é outro. No grupo “maquinas”, configurei 2 IPs fixos para máquinas da rede, tanto estas 2 quanto as demais máquinas da rede receberão a configuração padrão, definida no campo de configurações globais.

Exemplo 5

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.200;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option domain-name "teste.com.br";
option routers 192.168.0 .254;
}
subnet 172.22.0.0 netmask 255.255.255.0 {
range 172.22.0.30 172.22.0.100;
option domain-name-servers 172.22.0.5;
option domain-name "reload.br";
option routers 172.22.0.252;
}

No exemplo acima, tenho um trecho da configuração global. Perceba que aqui, tenho 2 sub-redes definidas com a qual o servidor irá realizar o endereçamento. Note que com isto, você deve indicar na configuração global as interfaces que o servidor irá trabalhar.

A seguir (Exemplo 6), tem-se um exemplo de como poderia ficar o arquivo de configuração. Nele, foram configuradas 2 sub-redes, 4 ranges, grupos, hosts, informações globais e individuais. Apesar de grande, não é complicado:

Exemplo 6:

subnet 172.16.200.0 netmask 255.255.255.0 {
range 172.16.200.50 172.16.200.200;
range 172.16.200.230 172.16.200.253;
option domain-name-servers 172.16.200.1, 172.16.200.2;
option domain-name "teste.com.br";
option routers 172.16.200.254;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.30 192.168.0.100;
range 192.168.0.120 192.168.0.200;
option domain-name-servers 192.168.0.5;
option domain-name "reload.br";
option routers 192.168.0.252;
}
group servidores {
option domain-name-servers 172.16.200.7;
host server01 {
hardware ethernet 00:50:51:e1:00:01;
fixed-address 172.16.200.43;
option routers 172.16.200.2; }
host server02 {
hardware ethernet 00:80:54:c5:30:02;
fixed-address 172.16.200.39;
option routers 172.16.200.9;}
}
group roteadores {
option routers 172.16.200.1;
option domain-name-servers 172.16.200.41;
host router01 {
hardware ethernet 00:20:51:e1:00:21;
fixed-address 172.16.200.13;}
host router02 {
hardware ethernet 00:80:14:c5:32:22;
fixed-address 172.16.200.19;}
}
group dmz {
option routers 192.168.0.1;
option domain-name-servers 192.168.0.32;
host mail1 {
hardware ethernet 00:20:51:e1:03:29;
fixed-address 192.168.0.32; }
host mail2 {
hardware ethernet 00:80:14:c5:15:63;
fixed-address 192.168.0.7;}
}
group hosts {
host financeiro01 {
hardware ethernet 00:20:51:e1:00:50;
fixed-address 192.168.0.13;}
host financeiro02 {
hardware ethernet 00:80:14:c5:32:51;
fixed-address 192.168.0.19;}
}
Interface gráfica e interface web para gerenciamento e monitoramento

Interface gráfica para gerenciamento/monitoramento

Criar, gerenciar, realizar alterações e manutenções no arquivo de configuração do DHCP via terminal, não é problema algum para um administrador de redes/servidores GNU/Linux. Porém, quanto maior as particularidades que possuir em sua rede, quanto mais rápido devem ser realizadas as mudanças, relatórios, documentação, ou outras variedades de razões, podem ser ótimos motivos para a utilização de interfaces gráficas de gerenciamento.

As interfaces gráficas para gerenciamento de servidores no GNU/Linux são extremamente intuitivas e muito avançadas, além do excelente grau de maturidade destas ferramentas. Muitos administradores possuem resistência à adoção destas ferramentas em sistemas GNU/Linux, mas esta visão é ultrapassada, e não há argumentos que impeçam seu uso, não há bons motivos para não usar. 😉

Estas interfaces possibilitam gerenciar todos os serviços implantados num servidor (banco de dados, servidor Web, DHCP, DNS, firewall, LDAP, controlador de domínio, compartilhamento de arquivos, etc.. ), além de realizar configurações do S.O., monitoramento, relatórios e outras possibilidades.

Podemos dividir as interfaces gráficas para gerenciamento de servidores em 2 grupos básicos: Aplicação e Interface Web

Aplicação

Aplicativo instalado no servidor (quando o mesmo possui ambiente gráfico, como GNOME, KDE, Xfce, LXDE, …). Os aplicativos que permitem o gerenciamento/configuração dos serviços implantados no servidor são acessíveis através do menu do desktop.

Vantagem:

  • Os paranoicos não precisam esquentar a cabeça sobre a transmissão de dados via rede ou algum sniffer.

Desvantagem:

  • Precisa acessar o ambiente gráfico do servidor, ou seja, ter um teclado+mouse+monitor em seu servidor ou configurar algum acesso remoto como VNC por exemplo. Outro problema, é que grande parte dos servidores GNU/Linux não possuem ambiente gráfico, o que impossibilita usar este tipo de programa.

Um exemplo é o GAdmin, que possui um modulo para DHCP.

Web

Serviço instalado no servidor, porém, acessível via rede (ou disponível também com acesso pela Internet, caso o firewall esteja devidamente configurado), ao instalar, é liberada uma determinada porta no servidor, e o administrador irá acessar via navegador através de qualquer host dentro da rede. É o modo mais utilizado e mais comum de se encontrar em servidores instalados.

Vantagem:

  • Mais rápido, acessível através de qualquer máquina, pode-se determinar qual porta será usada e habilitar o HTTPS (para os paranoicos), o servidor continua em modo texto, sem ambiente gráfico, não precisa realizar nenhuma configuração a mais no servidor.

Desvantagem:

  • Nenhuma. Apenas precaução, pois você irá acessar através de qualquer máquina, cuidado ao fazer login, keyloggers, etc… Outro ponto é, caso a rede parar, você não terá acesso (mas caso sua rede pare, o DHCP será o último dos seus problemas….)

Existem diversas ferramentas para administração/gerenciamento e configuração de servidores GNU/Linux via Web. Algumas distribuições com foco para uso em servidores possuem suas próprias interfaces já instaladas, outras interfaces possuem pacotes para instalação nos mais diversos GNU/Linux e outros (como BSD por exemplo).

Exemplos: A mais famosa das interfaces, com certeza é o Webmin, com diversos temas, muitos módulos (cada um para tipos de serviços e aplicações).

Algumas distribuições focadas para servidor, possuem suas próprias interfaces Web, é o caso do ClearOS (Red Hat), openSUSE, Zentyal (Ubuntu), pfSense (BSD), Zeroshell, Endian

Coisas que faltaram…

Algumas coisas ficaram de fora. 😉

O que faltou neste artigo: Failover de DHCP (redundância com 2 servidores, primário e secundário), além de mais quatro ou cinco pontos interessantes…

Uma vez em que a rede esteja configurada com o uso de um servidor de DHCP, este passa a ser extremamente essencial para o funcionamento da rede, pois ele irá endereçar os equipamentos e fornecer informações como máscara, gateway e DNS.

Caso, por algum motivo o servido fique inacessível, como por exemplo desligado, travado, desconectado, defeito no cabeamento, para na sua placa de rede, etc, toda a rede irá paralisar.

Nos casos em que o servidor DHCP não esteja dentro da rede, a atenção é redobrada, pois deve-se ficar atento também a possíveis problemas nos roteadores, por exemplo.

O DHCP consome poucos recursos do sistema, por isso, ele não á aplicado como um servidor dedicado de DHCP, ou seja, um sistema/servidor completo em que somente prove este serviço. O mais comum desde pequenas a grandes redes de computadores, é um ambiente em que o sistema que prove o DHCP também disponibilize e exerce outros serviços como firewall, proxy, sistema de gerenciamento e monitoramento, etc.

O dhcp3-server usado no GNU/Linux, é bastante rápido (desde que a configuração não seja muito complexa), por isso, costuma responder antes dos servidores DHCP usados nos servidores Windows e na maioria dos modems ADSL e/ou roteadores.

Ao utilizar roteadores para prover o serviço de DHCP em nosso ambiente, haverá duas situações, na primeira, os custos serão baixos e a configuração é simples e intuitiva, porém não suportará grandes mudanças, e a evolução da pequena rede.

Além da questão da segurança, pois estes equipamentos não dispõem de complexos sistemas de segurança, e para destruir todas as configurações feitas, basta apertar o botão reset, localizado no corpo do equipamento.

Na segunda situação, os custos são altos, além da configuração e implantação serem complexas, deparando-se com as inúmeras possibilidades do IOS Cisco e seu preço, porém, o equipamento já estaria pronto para sofrer modificações em sua configuração e suportar todo o crescimento da rede e sua evolução.

O guia completo: DHCP – Guia Completo « www.esli-nux.com

Lá, além deste texto, tem algumas screenshots (hã??) e também o How-to sobre DHCP com Windwos Server, Small routers e equipamentos Cisco (através da CLI, Cisco IOS).

Clonezilla – Gerando e restaurando backups completos

 Clusterweb, Leitura Recomendada  Comentários desativados em Clonezilla – Gerando e restaurando backups completos
maio 302013
 
Clonezilla

Clonezilla é uma poderosa ferramenta open source que permite clonar discos e partições inteiras, assim como gerar imagens dos mesmos para posterior restauração, caso venha ocorrer algum problema com o disco ou partição clonada. O Clonezilla é um software bem flexível, apesar de alguns usuários ficarem meio assustados com a interface do mesmo.

O projeto Clonezilla tem duas soluções para geração e restauração de imagens de partições e disco inteiros, assim como clonagem:

  • Clonezilla Live → A solução Live é uma distribuição que pode ser usada em uma mídia CD/DVD ou um pendrive para inicializar e executar o Clonezilla em modo unicast. O Clonezilla Live só faz uma operação por vez, por isso ele é unicast. Mas permite clonar diretamente partições e discos sem a necessidade de salvar a imagem para poder restaurar no disco ou partição de destino.
  • Clonezilla SE → A solução Server permite gerar imagens de discos e partições inteiras em unicast, multicast e broadcast pela rede – funcionalidades poderosas, pois é possível gravar múltiplas imagens de discos e/ou partições no servidor rodando o Clonezilla Server ao mesmo tempo, assim como restaurá-las.

Nesta primeira parte do artigo, abordarei a solução Clonezilla Live, pois irei mostrar como fazer backups completos, assim como clonagens de dispositivos e como restaurá-los também pela rede local.

Principais características do Clonezilla

1. Possui licença GPL;

2. Suporta uma grande quantidade de sistemas de arquivos. Veja lista completa abaixo:

  • ext2;
  • ext3;
  • ext4;
  • ReiserFS;
  • Reiser4;
  • XFS;
  • JFS;
  • btrfs;
  • FAT2;
  • FAT16;
  • FAT32;
  • NTFS;
  • HFS;
  • UFS;
  • VMFS3 e VMFS5 do VMWare.

3. Veja que você pode clonar distribuições GNU/Linux, Windows, Mac OS X e FreeBSD, NetBSD, OpenBSD, e não importa se a arquitetura do sistema é 32-bits (x86) ou 64-bits (x86-64);

4. Apenas os blocos utilizados do dispositivo de origem são copiados e salvos, assim como restaurados;

5. Suporta LVM2 para distribuições GNU/Linux;

6. Pode restaurar uma imagem em vários dispositivos na rede local, funcionalidade suportada na versão server (Clonezilla SE);

7. Pode gerar várias imagens pela rede usando o modo multicast, para fazer clones em massa, funcionalidade suportada pela versão server (Clonezilla SE);

8. Pode restaurar múltiplas imagens usando o modo multicast pela rede, funcionalidade suportada na versão server (Clonezilla SE).

Obs.: Estas características não são uma lista completa das implementadas até o momento da construção deste artigo. Para ter uma lista completa, acesse o link:

Principais limitações do Clonezilla

1. Na operação de restauração, a partição ou disco de destino deve ter tamanho igual ou superior do que a partição ou disco de origem;

2. Backups incrementais e diferenciais ainda não são suportados;

3. A operação de clonar ou gerar a imagem dos discos/partições do dispositivo de origem só pode ser feita com o dispositivo de origem offline, ou seja, o dispositivo de origem não pode está em uso no momento da operação;

4. A operação de restauração tem que ser feita com o dispositivo de destino offline, ou seja, o dispositivo de destino não pode estar em uso;

5. O formato da imagem gerado pelo Clonezilla não permite acessar os dados contidos na imagem, ou seja, a navegação pela imagem ainda não está implementada. Isto acontece porque a imagem de backup é compactada. No entanto, o desenvolvedor do Clonezilla informa e neste link que há uma forma de fazer isso;

6. O suporte a RAID por software não está implementada até o momento;

7. O Clonezilla restaura o backup ou faz a clonagem deixando o dispositivo de destino igual ao de origem, então, em algumas situações, é necessário redimensionar o dispositivo de destino, caso o mesmo tenha uma tamanho maior que o dispositivo de origem.

Obs.: Estas limitações estão presentes até o presente momento da construção deste artigo. Para uma lista detalhada, acesse esse link:

Como o trabalho de clonagem e backup, assim como restauração, só podem ser feitos em partições e discos que não estão em uso (offline), então, no artigo farei uso de uma ferramenta muito interessante chamada de Parted Magic. Trata-se de uma distribuição livre CD/Live USB usada para manutenção de sistemas que contém, entre outros softwares, o Clonezilla e GParted.

Optei pelo Parted Magic, porque, às vezes, precisamos redimensionar o espaço não alocado. Isto acontece quando vamos clonar ou restaurar uma imagem e o dispositivo de destino tem tamanho maior, seja partição ou disco e o espaço não é alocado automaticamente.

Felizmente, o Clonezilla tem a funcionalidade de redimensionar o espaço não alocado, mas em algumas situações pode ser necessário aumentar o tamanho fazendo uso do GParted.

Você pode baixar a distribuição Parted Magic neste link:

Para inicializar a distribuição pelo pendrive, use como referência o artigo do link:

Caso não queira fazer uso do Parted Magic, então baixe o Clonezilla Live do link:

E queime a imagem em uma mídia, ou use em um pendrive.

Clonagem de dispositivos

A clonagem de dispositivos pode ser feita pelo Clonezilla de forma bem simples. Isso pode beneficiar muito os técnicos de informática, e até mesmo usuários, que não querem reinstalar seu sistema caso ocorram problemas. E dessa forma, tem-se uma cópia para restauração do sistema.

* Volto a lembrar que, tanto na clonagem quanto no backup, o dispositivo de destino tem que ter o tamanho maior ou igual ao dispositivo de origem.

A clonagem abordada será feita em dispositivos locais, ou seja, os dispositivos tanto de origem quanto de destino, devem estar instalados na máquina usada para o trabalho. Além disso, certifique-se de ter gravado em um CD/DVD, ou Pendrive, o Clonezilla Live ou Parted Magic.

Estarei usando o Parted Magic para este trabalho, pois o mesmo já contém o Clonezilla, além de mais ferramentas como o GParted para redimensionamento, o que pode ser necessário.

* Uma explicação básica: O Clonezilla, em algumas partes, usa telas semelhantes ao Dialog, então, para escolher uma opção basta navegar com a teclas referentes às setas do teclado e quando escolher uma opção, é só clicar em ENTER.

Clonando HD

Então, antes de tudo, dê boot pelo CD/DVD ou pendrive bootável contendo uma das duas distribuições Live CD. Após isso, começamos o trabalho. Veja na imagem abaixo, como está o espaço do disco que receberá a imagem clonada do dispositivo de origem:

1. Execute o Clonezilla. Será apresentada uma tela mostrando dois modos de trabalho do Clonezilla Live, e teremos que escolher um deles, pois não se pode trabalhar com ambos simultaneamente.

Explico os dois abaixo:

  • device-image → Este modo de trabalho é usado para trabalhar com dispositivo e imagem, ou seja, pode ser criada uma imagem de backup de uma partição ou disco e/ou ser restaurada uma imagem já gerada para um disco ou partição.
  • device-device → Este modo de trabalho é usado para trabalhar com dispositivo e dispositivo, ou seja, será clonado um dispositivo, seja uma partição ou disco completo para outra partição ou disco.

Como irei clonar um disco completo, escolho o modo device-device, pois irei clonar um disco para outro disco:

2. Na segunda tela, é apresentado dois modos de execução do Clonezilla. O primeiro modo “Beginner” opta por configurações padrões, sem personalização alguma (algo não indicado por mim). No segundo modo de execução “Expert”, podemos fazer personalizações, habilitando ou desabilitando parâmetros extras.

Irei escolher o segundo modo de execução “Expert”, pois irei personalizar:

3. Agora irei escolher se desejo clonar uma partição ou disco. Escolho a opção “disk_to_local_disk” para clonar o disco local, pois o disco está localizado na máquina que estou usando:

4. Nesta parte, escolha o disco de origem. O Clonezilla irá detectar os discos instalados na máquina e listar para que você escolha o disco que será clonado:

5. Após o último passo, o Clonezilla irá detectar os discos instalados na máquina, e que podem ser usados como discos de destino, ou seja, que irão receber o clone do disco de origem. Escolha o disco de destino:

6. Nesta parte, escolha os parâmetro que podem ser habilitados e/ou desabilitados. Vou desabilitar alguns parâmetros, como o disco que será clonado tem duas partições do sistema Windows com o sistema de arquivos NTFS, irei desabilitar os seguintes parâmetros:

  • g auto → Que faz o GRUB ser reinstalado.
  • e2 → Desabilita o uso do SFdisk, pois se não desabilitar, ele terá configurações avançadas para gerenciadores de boot diferentes do GRUB.

Depois de fazer isso, tecle ENTER e continue…

7. Neste passo, escolha a opção “Skip checking\repairing source flie system”, para pular a verificação e reparação do sistema de arquivos de origem antes da clonagem. Caso escolha a opção:

  • -fsck source part → Irá verificar e reparar a partição após a clonagem manualmente.
  • -fsck source part-y → Irá fazer o mesmo que a opção “-fsck source part”, só que automaticamente.

8. Agora defina o parâmetro “-k1”, para criar uma nova tabela de partição, mas com o tamanho proporcional ao disco que está recebendo a cópia. Escolhi esta opção para poder usar todo o espaço disponível em disco e não precisar redimensionar alguma partição para alocar todo o espaço.

Caso escolha a opção padrão, que é para usar a tabela de particionamento do disco de origem, iria ser usado exatamente o espaço do disco de origem e estaria deixando um espaço não alocado, pois o disco de destino é maior que o disco de origem, assim seria necessário redimensionar.

Tenho que dar uma atenção especial para o parâmetro “-k1”, pois caso esteja clonando alguma partição ou disco que tenha uma tabela de partição GPT, então poderá ocorrer erros graves, podendo impossibilitar o uso do dispositivo, já que o Clonezilla só cria tabelas de partições em MS-DOS usando o parâmetro “-k1”.

Nesse caso, seria viável optar pela opção padrão, que é usar a tabela de particionamento do dispositivo de origem e redimensionar o espaço não alocado usando o GParted.

9. Agora será mostrado algumas mensagens, pressione ENTER quando for pedido para continuar. Depois será pedido sua confirmação para continuar com o trabalho, confirme usando “y” duas vezes. Como estou clonando um disco que contém o Windows, então ele pergunta se desejo clonar o Bootloader do Windows, então, confirme usando “Y”, e confirme mais uma vez usando “y” para iniciar o trabalho de clonagem.

Linux: Clonezilla - 
Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - 
Gerando e restaurando backups completos (Parte I)

Veja na imagem abaixo, que o Clonezilla usa o utilitário Partclone para fazer parte de seu trabalho de clonagem:

10. Agora veja o particionamento do HD clonado e do HD que recebeu a clonagem, após a finalização do trabalho:

Linux: Clonezilla - 
Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - 
Gerando e restaurando backups completos (Parte I)

O trabalho de clonagem de partições é bem similar ao apresentado, de forma que deve-se repetir o primeiro e segundo passo. No terceiro, escolha a opção “part_to_local_part”, os passos seguintes são similares aos apresentados aqui.

No entanto, no oitavo passo deve-se escolher o parâmetro “-k”, pois como está clonando um partição, não precisará criar uma nova tabela de particionamento, como mostrado na imagem abaixo:

Backup completo de dispositivos locais

Nesta parte do artigo mostrarei como usar o Clonezilla Live para fazer backup completo de um dispositivo, salvando a imagem do backup em dispositivo local.

Optarei por fazer um backup de uma partição, pois nas próximas páginas irei abordar backups de discos. Mas o backup de um disco é similar ao que será mostrado.

Procedimentos

1. Execute o Clonezilla. Será apresentada uma tela mostrando dois modos de trabalho do Clonezilla Live. Escolha o modo device-image, pois iremos gerar uma imagem de backup de uma partição.

2. Na segunda tela escolha a opção “local_dev” informando que a partição será salva em dispositivo local, ou seja, em um dispositivo instalado na máquina que estamos executando o Clonezilla.

Após escolher a opção “local_dev”, siga as instruções da tela. Se for usar um dispositivo USB para armazenamento, espere uns cinco segundos e aperte ENTER.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

O Clonezilla lista todas as partições disponíveis. A observação é que ele não lista partições SWAP.

3. Agora escolha a partição que será usada para salvar o backup ou que contém a imagem de restauração. Como estou realizando um backup, então indique o dispositivo que irá ser usado para salvar, ou seja, o dispositivo de destino.

Escolhi no artigo o “sdb3”, mas escolha o dispositivo que vai usar na realização do trabalho.

4. Neste passo indique o diretório que irá conter a imagem de backup e que está contido no dispositivo escolhido no passo anterior. Como o dispositivo usado por mim (sdb3) no artigo só contém um diretório, escolho o mesmo.

5. Depois de informar o diretório que ira conter a imagem, dê um ENTER para continuar, e em seguida escolha o modo de execução “Expert”.

6. Neste passo escolha se quer fazer backup de uma partição ou disco. Como estou usando fazendo backup de uma partição, escolho a opção “saveparts”.

7. Informe o nome do arquivo de backup (image).

8. Depois de informar o nome do backup, informe qual partição será usada para ser feita o backup, ou seja, informe o dispositivo de origem. Escolhi a partição “sda1”.

9. Configure parâmetros adicionais nesta tela, informe a prioridade a ser usada. Trata-se de informar qual aplicativo terá mais prioridade para ser usado para o trabalho. Neste caso informei “-q2”, que dá prioridade maior para o Partclone.

10. Deixe habilitado nessa parte os parâmetro “-c” e “-j2”, e continue.

11. Escolha o compactador que o Clonezilla irá usar para compactar a imagem de backup, eu escolhi gzip “-z1”, mas poderá usar outro como bzip2, que deixa o tamanho do arquivo menor que gzip, mas leva mais tempo para compactar.

12. Este parâmetro é interessante, pois divide o arquivo de imagem em vários, caso o mesmo atinja o tamanho especificado aqui. Assim, define-se um tamanho fixo para cada parte do backup, caso seja necessário. Eu defini cinco mil, valor em megabytes.

13. Escolha a opção “Skip checking\repairing source file system” para pular a verificação e reparação do sistema de arquivos de origem antes da clonagem. As outras duas opções não serão explicadas, pois já foram abordadas nas páginas anteriores.

14. E por fim, defina se a imagem gerada será verificada ou irá pular a verificação. Escolhi a opção “Sim, verificar a imagem salva”. E defina o que será feito após o fim do backup. Escolhi a opção “-p true”, pois não quero que seja feito nada quando o trabalho for finalizado.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

15. O backup sendo gerado, e após a imagem de backup ser feita, a verificação da imagem é realizada conforme a configuração realizada.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)
Restaurando imagens para dispositivos locais

Nesta parte irei mostrar como restaurar uma imagem de dispositivo criada. Irei restaurar a imagem de backup salva anteriormente. Uma observação, é que quando for restaurar uma imagem de partição, certifique-se que a partição que será usada para armazenar a imagem a ser restaurada foi criada.

Procedimentos

1. Execute o Clonezilla. Na primeira tela escolha modo de trabalho device-image, pois irei restaurar uma imagem de backup já criada.

2. Na segunda tela, escolha a opção “local_dev” informando que a imagem a ser restaurada está contida em um dispositivo local, ou seja, em um dispositivo instalado na máquina que está sendo executado o Clonezilla. Se for usar um dispositivo USB para armazenamento, espere uns cinco segundos e aperte ENTER.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

3. Informe a partição que contém a imagem que será restaurada. Rscolhi “sdb3”, pois foi a partição onde salvei a imagem anteriormente criada.

4. Dentro da partição que contém a imagem, informe o diretório onde a imagem está contida. Irei informar o diretório raiz “/”, pois foi o usado para salvar a imagem.

5. Depois de informar o diretório que contém a imagem, dê um ENTER para continuar, e em seguida, escolha o modo de execução “Expert”.

6. Agora informe o tipo de trabalho a ser executado. Como vou restaurar a imagem para uma partição, escolho a opção “restoreparts”. Caso fosse restaurar uma imagem de disco para um disco, a opção escolhida seria “restoredisk”.

7. Escolha a imagem a ser restaurada. Na imagem abaixo só verá uma, pois só salvei uma até o momento. Caso tivesse mais de uma imagem no mesmo diretório, todas estariam listadas.

8. Escolha a partição que será sobrescrita, ou seja, a partição de destino que irá receber a imagem de backup. Informei “sdb1”, mas escolha conforme sua necessidade.

9 Agora personalize, os parâmetros desabilitados são:

  • -g auto → Parâmetro que faz com que o GRUB não seja reinstalado.
  • -e1 auto → Parâmetro usado para sistemas de arquivos NTFS.

E o parâmetro “-e2”, dê um ENTER após personalizar.

O parâmetro “-j2” deve estar marcado, caso contrário, o gerenciador de boot ficará inacessível.

10. Escolha um parâmetro a ser usado. Escolhi o parâmetro “-k”, pois estou restaurando apenas uma partição e não quero que seja criada uma nova tabela de partição no disco de destino.

E em seguida escolha a opção “-p true”, que informa que não será feito nada após a conclusão da restauração.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

11. Após sair da tela gráfica, confirme sempre que for solicitado com um ENTER, e quando for solicitado se deseja continuar ou não, confirme com um “y”.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)
Backup completo de dispositivos – Salvando remotamente usando o SSH

Abordarei nesta parte do artigo um backup completo avançado, que consiste em armazenar a imagem do disco local em uma máquina remota usando toda a segurança do SSH. Os passos são parecidos, tanto para a salvação do backup quanto para a restauração.

Pré-requisitos

Para este trabalho ser concluído com sucesso, tenha em sua rede:

  • A máquina que irá armazenar a imagem de backup esteja na mesma rede;
  • A máquina que irá armazenar a imagem de backup do dispositivo tem que ter um serviço SSH em execução;
  • Preferencialmente, tenha um serviço DHCP em rede, caso não tenha, terá que configurar a máquina rodando o Clonezilla manualmente.

Esclarecimentos:

  • O IP da máquina rodando o Clonezilla é: 192.168.56.10
  • O IP da máquina rodando o SSH que irá armazenar a imagem do dispositivo é: 192.168.56.11
  • O nome do usuário permitido para usar a conexão no servidor SSH é: edson
  • A porta de comunicação do servidor SSH é: 22

Procedimentos

1. Execute o Clonezilla. Será apresentada uma tela mostrando dois modos de trabalho do Clonezilla Live. Escolha o modo device-image, pois iremos gerar uma imagem de backup de um disco.

2. Na segunda tela escolha a opção “ssh_server”, informando que a imagem de backup do disco será salva em dispositivo remoto usando o SSH como conexão.

3. Depois de escolher a opção de usar o SSH como conexão remota, informe o endereço IP da máquina rodando o SSH e que irá armazenar a imagem. Aqui usarei “192.168.56.11”, mas deve-se informar o endereço IP do seu servidor SSH.

4. Agora informe a porta que o servidor SSH está usando para comunicar-se. A porta usada será a 22, caso seu servidor use um porta diferente, informe a mesma.

5. Informe nesta etapa o nome do usuário que irá ser usado para autenticar-se no servidor SSH. Aqui estarei usando o usuário “edson”, mas deve-se usar o nome do usuário permitido no seu servidor SSH.

6. Nesta etapa informe o diretório que irá ser usado no servidor SSH para armazenar a imagem de backup do disco local. A observação é que esse mesmo diretório deve ser informado quando a imagem for restaurada.

Certifique-se de que o usuário usado para a autenticação, tenha permissão para gravar dados no diretório informado aqui. Estarei usando o diretório /home/edson/clonezilla, certifique-se de digitar o caminho absoluto.

7. Nesta etapa é feita a autenticação no servidor e deve-se inserir a senha quando solicitado, e após autenticação digite ENTER, para continuar.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

8. Depois de autenticar-se no servidor, escolha o modo de execução “Expert”.

9. Nesta etapa escolha se deseja salvar o disco local como imagem de backup ou a partição. Escolhi a opção “savedisk”, pois quero salvar um backup de imagem do disco para posteriormente restaurar.

10. Defina um nome para a imagem de backup do disco. Aqui usei um em que parte do mesmo, tem em seu nome a palavra “ssh”, apenas para identificação.

11. Escolha o disco que será feito o backup, ou seja, o disco de origem. Escolhi “sda”, mas defina aqui o nome do disco que irá fazer backup na sua máquina.

12. Configure a prioridade a ser usada. Trata-se de informar qual aplicativo terá mais prioridade para ser usado para o trabalho. Neste caso informei “-q2”, que dá prioridade maior para o Partclone.

13. Nesta etapa deixe marcado os parâmetros padrões que já estão marcados.

14. Agora escolha que tipo de compressão será usada, deixei marcada a opção “-z1”, que diz para usar o Gzip.

15. Informe nesta etapa o tamanho em megabytes máximo que o arquivo de imagem poderá ter. Este parâmetro é interessante, pois divide o arquivo de imagem em vários, caso o mesmo atinja o tamanho especificado aqui. Assim, define-se um tamanho fixo para cada parte do backup, caso seja necessário. Eu defini três mil megabytes.

16. Escolha a opção “Skip checking\repairing source file system” para pular a verificação e reparação do sistema de arquivos de origem antes da clonagem. As outras duas opções não serão explicadas, pois já foram abordadas nas páginas anteriores.

17. Informe se deseja verificar a imagem de backup salva. Deixei selecionado a opção “Sim, verificar a imagem salva”. E defina o que será feito após o fim do backup; escolhi a opção “-p true”, pois não quero que seja feito nada quando o trabalho for finalizado.

Em seguida dê um “ENTER” para continuar e confirme com um “y”, a cópia começará.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

Veja as imagens abaixo, elas mostram o Clonezilla fazendo backup via SSH, e a última imagem mostra a pasta criada na máquina com servidor SSH.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

* Uma observação importante é que, se a máquina onde o Clonezilla está sendo executado ainda não tiver a rede configurada, então, depois da segunda tela será necessário configurar a máquina via DHCP ou manualmente, para só então prosseguir.

Restaurando imagens de backups salvas em um servidor SSH

Abordarei nesta parte do artigo, a restauração do backup completo avançado feito na página anterior usando o SSH.

Pré-requisitos

Para este trabalho ser concluído com sucesso, tenha em sua rede:

  • A máquina que armazena a imagem de backup esteja na mesma rede.
  • A máquina que armazena a imagem de backup tem que estar com o serviço SSH em execução.
  • Preferencialmente, tenha um serviço DHCP em rede, caso não tenha, terá que configurar a máquina rodando o Clonezilla manualmente.

Esclarecimentos:

  • O IP da máquina rodando o Clonezilla é: 192.168.56.10 – que é de onde será restaurada a imagem.
  • O IP da máquina rodando o SSH que armazena a imagem de backup a ser restaurada é: 192.168.56.11
  • O nome do usuário permitido para usar a conexão no servidor SSH que contém a imagem é: edson
  • A porta de comunicação do servidor SSH é: 22

Procedimentos

1. Execute o Clonezilla. Será apresentada a tela mostrando dois modos de trabalho do Clonezilla Live. Escolha o modo device-image, pois iremos restaurar uma imagem de backup para o disco local.

2. Na segunda tela escolha a opção “ssh_server”, informando que a imagem de backup será restaurada a partir de uma conexão com servidor SSH.

3. Depois de escolher a opção de usar o SSH como conexão remota, informe o endereço IP da máquina rodando o SSH e que armazena a imagem que será restaurada. Aqui usarei “192.168.56.11”, mas deve-se informar o endereço IP do seu servidor SSH.

4. Agora informe a porta que o servidor SSH está usando para comunicar-se. A porta usada será a “22”. Caso seu servidor use um porta diferente, informe a mesma.

5. Informe nesta etapa, o nome do usuário que irá ser usado para autenticar-se no servidor SSH. Aqui estarei usando o usuário “edson”, mas deve-se usar o nome do usuário permitido no seu servidor SSH.

6. Nesta etapa informe o diretório que contém a imagem de backup no servidor SSH. A observação é que este mesmo diretório foi usado quando a imagem foi salva. Estarei usando o diretório /home/edson/clonezilla, pois o mesmo foi usado na operação de gravação de imagem.

7. Nesta etapa é feita a autenticação no servidor, e deve-se inserir a senha quando solicitada, e após a autenticação tecle ENTER, para continuar.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

8. Depois de autenticar-se no servidor, escolha o modo de execução “Expert”.

9. Nesta etapa escolha o tipo de tarefa que deseja fazer. Como irei restaurar uma imagem de backup já salva, então escolhi a opção “restoredisk”.

10. Escolha a imagem de backup que será restaurada, todas as imagens localizadas no diretório informado anteriormente do servidor SSH serão listadas. Veja na imagem abaixo que só foi listada apenas uma imagem, pois só salvei uma.

11. Informe o disco de destino, ou seja, o disco onde a imagem será restaurada. Aqui informei o disco “sdc”.

12. Nesta etapa desabilite alguns parâmetros. Os parâmetros desabilitados são:

  • -g auto → Não irei reinstalar o GRUB pelo Clonezilla, pois a imagem já contém uma cópia idêntica.
  • -e1 auto → É usado em sistemas de arquivos NTFS (só use este parâmetro se estiver usando o sistema de arquivos NTFS na imagem de backup) e a imagem contém partição com sistema de arquivo ReiserFS.
  • -e2 → Para não usar o SFdisk.

O parâmetro “-j2” deve está marcado, caso contrário o gerenciador de boot ficará inacessível.

13. Agora escolha o parâmetro “-k1”, pois irá criar uma tabela de partição no disco de destino particionando proporcionalmente as partições, para que não seja necessário redimensionar as partições manualmente.

Esta opção pode não funcionar corretamente se na imagem de disco que será restaurada existir uma partição SWAP no fim da tabela de particionamento.

14. Em seguida, informe o que será feito após o Clonezilla concluir a restauração. Escolhi o parâmetro “-p true”, pois não quero que seja feito nada.

15. Após configurar o ultimo parâmetro, a tarefa de restauração será iniciada. Dê um ENTER duas vezes para continuar e confirme duas vezes usando o “y” quando for solicitado.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

Veja o particionamento do disco onde foi restaurada a imagem de backup, observe na imagem que, como o disco contém uma partição SWAP no fim da tabela de partição, o Clonezilla não consegue redimensionar automaticamente.

Backup completo de dispositivos – salvando em um servidor Samba

Abordarei nesta parte do artigo um backup completo avançado, que consiste em armazenar a imagem do disco local em um servidor Samba. Os passos são parecidos tanto para a gravação do backup, quanto para a restauração do mesmo.

Pré-requisitos

Para este trabalho ser concluído com sucesso, tenha em sua rede:

  • A máquina que irá armazenar a imagem de backup esteja na mesma rede.
  • A máquina que irá armazenar a imagem de backup tem que ter um serviço Samba em execução, aqui estarei usando o Samba 3.x.
  • O serviço Samba da máquina remota precisa ter um compartilhamento disponível com permissão de escrita e também ter um usuário cadastrado no servidor Samba.
  • Preferencialmente, tenha um serviço DHCP em rede. Caso não tenha terá, que configurar a máquina rodando o Clonezilla manualmente.

Esclarecimentos:

  • O IP da máquina rodando o Clonezilla é: 192.168.56.12
  • O IP da máquina rodando o Samba que irá armazenar a imagem de backup é: 192.168.56.11
  • Configuração do compartilhamento Samba, que irá armazenar a imagem:
[clonezilla]
path = /home/edson/clonezilla
valid users = edson
writable = yes

Procedimentos

1. Execute o Clonezilla. Será apresentada uma tela mostrando dois modos de trabalho do Clonezilla Live. Escolha o modo device-image, pois iremos gerar uma imagem de backup de um disco.

2. Na segunda tela escolha a opção “samba_server”, informando que a imagem de backup será salva em um servidor Samba.

3. Nesta etapa informe o endereço do servidor Samba. Aqui informei que é “192.168.56.11”. Em seguida é pedido o nome do domínio, mas não é necessário, já que foi informado o IP do servidor Samba.

4. Aqui informe o nome da conta cadastrada no servidor Samba que tem permissão de escrita no compartilhamento.

5. Nesta etapa informe o nome do compartilhamento no servidor Samba. O detalhe é que o nome do compartilhamento deve ser prescindido por uma barra “/”, então, deve ficar assim /nome_do_compartilhamento. O nome do compartilhamento que vou usar é clonezilla.

6. Insira a senha do usuário usado para autenticação no servidor Samba, para que o compartilhamento seja montado e possa salvar a imagem. Após inserir a senha, tecle ENTER para continuar.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

7. Depois de autenticar-se no servidor, escolha o modo de execução “Expert”.

8. Escolha uma operação a ser feita. Aqui escolhi “savedisk”, pois será feito um backup do disco local.

9. Informe o nome da imagem de backup que será salva no servidor Samba.

10. Agora escolha o disco que será feito backup, ou seja, escolha o disco de origem.

11. Configure a prioridade a ser usada. Trata-se de informar qual aplicativo terá mais prioridade para ser usado para o trabalho. Neste caso informei o parâmetro “-q2”, que dá prioridade maior para o Partclone.

12. Nesta etapa, deixe marcado os parâmetros padrões que já estão marcados.

13. Agora escolha que tipo de compressão será usada. Deixei marcada a opção “-z1”, que diz para usar o gzip.

14. Informe nesta etapa o tamanho em megabytes máximo que o arquivo de imagem poderá ter. Este parâmetro é interessante, pois divide o arquivo de imagem em vários, caso o mesmo atinja o tamanho especificado aqui. Assim, define-se um tamanho fixo para cada parte do backup, caso seja necessário. Eu defini três mil megabytes.

15. Escolha a opção “Skip checking\repairing source file system”, para pular a verificação e reparação do sistema de arquivos de origem antes da clonagem.

16. Informe se deseja verificar a imagem de backup salva. Deixei selecionado a opção: “Sim, verificar a imagem salva”, e defina o que será feito após o fim do backup.

Escolhi a opção “-p true”, pois não quero que seja feito nada quando o trabalho for finalizado. Em seguida dê um ENTER para continuar e confirme com um “y”, a cópia começará.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

Veja as imagens abaixo que mostram o backup sendo realizado, a checagem da imagem após o backup ser concluído e a pasta criada no servidor Samba:

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)
Restaurando imagens de backup salvas em um servidor Samba

Nesta última operação do artigo, irei restaurar o backup da imagem salva no servidor Samba. A restauração consiste em montar o compartilhamento com as imagens e restaurar uma delas no dispositivo local.

Pré-requisitos

Para este trabalho ser concluído com sucesso, tenha em sua rede:

  • A máquina que irá armazenar a imagem de backup esteja na mesma rede.
  • A máquina que irá armazenar a imagem de backup tem que ter um serviço Samba em execução, aqui estarei usando o Samba 3.x.
  • O servidor Samba da máquina remota precisa ter um compartilhamento disponível com permissão para o usuário cadastrado no servidor Samba copiar o backup.
  • Preferencialmente, tenha um serviço DHCP em rede. Caso não tenha, terá que configurar a máquina rodando o Clonezilla manualmente.

Esclarecimentos:

  • O IP da máquina rodando o Clonezilla é: 192.168.56.12
  • O IP da máquina do servidor Samba que armazena a imagem de backup é: 192.168.56.11
  • Configuração do compartilhamento Samba que armazena a imagem:
[clonezilla]
path = /home/edson/clonezilla
valid users = edson
writable = yes

Procedimentos

1. Execute o Clonezilla. Será apresentada uma tela mostrando dois modos de trabalho do Clonezilla Live. Escolha o modo device-image, pois iremos restaurar uma imagem de backup para o disco local.

2. Na segunda tela escolha a opção “samba_server”, informando que a imagem de backup está salva em um servidor Samba.

3. Nesta etapa informe o endereço do servidor Samba. Aqui informei que é “192.168.56.11”. Em seguida é pedido o nome do domínio, mas não é necessário, já que foi informado o IP do servidor Samba.

4. Aqui informe o nome da conta cadastrada no servidor Samba que tem permissão no compartilhamento.

5. Nesta etapa informe o nome do compartilhamento no servidor Samba que contém o backup da imagem. O detalhe é que o nome do compartilhamento deve ser prescindido por uma barra “/”, então, deve ficar assim: /nome_do_compartilhamento. O nome do compartilhamento usado é Clonezilla.

6. Insira a senha do usuário usado para autenticação no servidor Samba, para que o compartilhamento seja montado e possa acessar o backup de imagem. Após inserir a senha, tecle ENTER para continuar.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)

7. Depois de autenticar-se no servidor, escolha o modo de execução “Expert”.

8. Escolha uma operação a ser feita. Aqui escolhi “restoredisk”, pois será feita uma operação de restauração de uma imagem de backup de disco para o disco local.

9. Informe o nome da imagem de backup que será restaurada. Veja que o Clonezilla listou duas imagens, eu escolhi a primeira.

10. Nesta etapa informe o nome do disco destino, ou seja, o disco em que a imagem será restaurada.

11. Nesta etapa desabilite alguns parâmetros. Os parâmetros desabilitados são:

  • -g auto → Não irei reinstalar o GRUB pelo Clonezilla, pois a imagem já contém uma cópia idêntica.
  • -e1 auto → É usado em sistemas de arquivos NTFS (só use esse parâmetro se estiver usando o sistema de arquivos NTFS na imagem de backup) e a imagem contém partição com sistema de arquivo ext4FS.
  • -e2 → Para não usar o SFdisk.

O parâmetro “-j2” deve estar marcado, caso contrário o gerenciador de boot ficará inacessível.

12. Agora escolha o parâmetro “-k1”, pois irá criar uma tabela de partição no disco de destino, particionando proporcionalmente as partições para que não seja necessário redimensionar as partições manualmente.

13. Em seguida, informe o que será feito após o Clonezilla concluir a restauração. Escolhi o parâmetro “-p true”, pois não quero que seja feito nada.

14. Após configurar o último parâmetro, a tarefa de restauração será iniciada. Dê um ENTER duas vezes para continuar e confirme duas vezes usando o “y”, quando for solicitado.

Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)   Linux: Clonezilla - Gerando e restaurando backups completos (Parte I)
Conclusão

O projeto Clonezilla mostra-se ótimo para seu propósito, mesmo com algumas funcionalidades ainda não implementadas, até o momento, e que poderiam deixá-lo mais completo e profissional do que já é.

Temos que levar em consideração que é um projeto sem grande ajuda e apoio, mas com um maior investimento no projeto, pode se tornar bem mais promissor do que é até o momento.

O Clonezilla Live foi abordado neste artigo, ele faz uso de vários programas para executar todo o trabalho. É uma ótima ferramenta para backups completos de partições e discos inteiros, além de ser versátil, pois pode salvar os backups tanto localmente como remotamente, usando serviços de rede bem seguros, como o SSH.

Técnicos e usuários fazem uso deste tipo de ferramenta, pois é uma “mão na roda” ter backups prontos para serem restaurados.

Algumas funcionalidades de Clonezilla Live não foram abordadas neste artigo. O motivo de não optar, é porque o Clonezilla SE é a melhor solução para este tipo de trabalho que não foi abordado neste primeiro artigo.

Esta primeira etapa abrange apenas a configuração e execução do trabalho, no entanto, os visitantes podem deixar seus comentários sobre algum tópico que venha a completar o assunto.

Na próxima e última parte do artigo, abordarei a instalação e configuração do Clonezilla SE. Trata-se de um software muito poderoso que podemos usá-lo para vários propósitos. Entre eles, a implantação de um servidor de clonagem e armazenamento de imagens de discos e partições, podendo fazer clones de vários dispositivos pela rede.

Gerenciando o HD com o fdisk

 Clusterweb, Leitura Recomendada, Linux  Comentários desativados em Gerenciando o HD com o fdisk
maio 302013
 
O fdisk

Com o fdisk podemos criar novas partições em um disco, até 4 partições primárias e infinitas partições lógicas, dependendo somente do tamanho do disco (levando em conta que cada partição requer um mínimo de 40MB). Também podemos modificar ou deletar partições já existentes ou recém criadas no disco.

Neste artigo vamos ver alguns exemplos práticos de como trabalhar com o fdisk.

ATENÇÃO: Não crie, modifique ou apague partições do seu disco se você não sabe o que está fazendo, ou perderá todos os dados em disco.

Vamos lá, mãos a obra…

Linux: Gerenciando o HD com o fdisk

Visualizando as partições no HD

Antes de criar uma nova partição, modificar ou deletar, você vai precisar dar uma olhada em todas as partições que existem no disco. Então para esta missão vamos usar o “fdisk -l”, como abaixo:

# fdisk -l

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início   Fim     Blocos Id   Sistema
/dev/sda1   *        1   9914  79629573+  83  Linux
/dev/sda2         9914  38914  232939521   5  Estendida
/dev/sda5        38166  38914    6007808  82  Linux swap / Solaris
/dev/sda6        19429  37418  144494592  83  Linux
/dev/sda7        37418  38165    6005760  82  Linux swap / Solaris
/dev/sda8         9914  19036   73268224  83  Linux
/dev/sda9        19036  19429    3154944  82  Linux swap / Solaris

Outro exemplo:

# fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf6edf6ed

   Device Boot      Start    End     Blocks   Id  System
/dev/sda1               1   1959   15735636    c  W95 FAT32 (LBA)
/dev/sda2            1960   5283   26700030    f  W95 Ext'd (LBA)
/dev/sda3            5284   6528   10000462+   7  HPFS/NTFS
/dev/sda4            6529   9729   25712032+   c  W95 FAT32 (LBA)
/dev/sda5   *        1960   2661    5638752   83  Linux
/dev/sda6            2662   2904    1951866   83  Linux
/dev/sda7            2905   3147    1951866   83  Linux
/dev/sda8            3148   3264     939771   82  Linux swap / Solaris

O comando lista todas as partições de todos os discos conectados. No caso de ter vários discos, eles serão mostrados na ordem de dispositivo /dev. Exemplo: /dev/sda, /dev/sdb, /dev/sdc e assim por diante.

Ver disco específico e comandos disponíveis

Para ver apenas as partições de um determinado disco podemos incluir no comando o nome do disco como segue:

# fdisk -l /dev/sda

Para ver o “help” com todos os comandos que podem ser usados no disco podemos usar o fdisk sem a opção “-l” e usar o comando “m”, como no exemplo:

# fdisk /dev/sda

Comando (m para ajuda): m
Comando - ação
   a   alterna a opção "inicializável"
   b   edita rótulo BSD no disco
   c   alterna a opção "compatibilidade"
   d   exclui uma partição
   l   lista os tipos de partição conhecidos
   m   mostra este menu
   n   cria uma nova partição
   o   cria uma nova tabela de partições DOS vazia
   p   mostra a tabela de partições
   q   sai sem salvar as alterações
   s   cria um novo rótulo de disco Sun vazio
   t   altera a identificação da partição para o sistema
   u   altera as unidades das entradas mostradas
   v   verifica a tabela de partições
   w   grava a tabela no disco e sai
   x   funcionalidade adicional (somente para usuários avançados)

Pronto, agora que sabemos as opções disponíveis para usar com o fdisk, vamos em frente.

Deletando uma partição do HD

Digamos que você queira deletar algumas partições do disco.

Primeiro vamos ver as partições, usando agora o comando “p”, faça o seguinte:

# fdisk /dev/sda

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total de 625142448 setores
Unidades = setores de 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *        2048   159261194    79629573+  83  Linux
/dev/sda2       159262718   625141759   232939521    5  Estendida
/dev/sda5       613126144   625141759     6007808   82  Linux swap / Solaris
/dev/sda6       312117248   601106431   144494592   83  Linux
/dev/sda7       601108480   613119999     6005760   82  Linux swap / Solaris
/dev/sda8       159262720   305799167    73268224   83  Linux
/dev/sda9       305801216   312111103     3154944   82  Linux swap / Solaris

Visto, vamos deletar sda6, sda7 e sda8 usando o comando “d”, desta maneira:

Comando (m para ajuda): d
Número da partição (1-9): 6

Comando (m para ajuda): d
Número da partição (1-9): 7

Comando (m para ajuda): d
Número da partição (1-9): 8

E gravar as alterações usando o comando “w”, assim:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Prontinho, partições apagadas. E agora?

Criando uma nova partição

Podemos criar uma nova partição de um tamanho específico utilizando o comando “n”, conforme abaixo:

Comando (m para ajuda): n
Comando - ação
   l   lógica (5 ou superior)
   p   partição primária (1-4)
l
Primeiro setor (305801216-625141759, padrão 305801216): 
Usando valor padrão 305801216
Last setor, +setores or +size{K,M,G} 
(305801216-312111103, padrão 312111103): 
Usando valor padrão 312111103

No caso o comando perguntou se desejava criar uma partição lógica ou uma partição primária, para o caso escolhi uma partição lógica teclando “l”.

Logo o comando faz as perguntas que vão definir o tamanho e a localização da partição. Pergunta o cilindro de início da partição e o cilindro em que ela vai acabar ou o tamanho que ela terá, usando K para kilobytes, M para megabytes ou G para gigabytes.

No caso simplesmente dei “enter” para usar os valores padrão e todo o espaço disponível em disco para a partição.

Lembre-se que a cada modificação é preciso salvar:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Depois de criada a partição deve ser formatada com o comando “mkfs”, de acordo com o tipo de sistema de arquivos desejado. Digamos que tenhamos criado a partição “9”, alguns exemplos seriam:

1) Para ext4:

# mkfs.ext4 /dev/sda9

2) Para reiserfs:

# mkfs.reiserfs /dev/sda9

3) Para ntfs (Windows XP e outros):

# mkfs.ntfs /dev/sda9

Partição criada e formatada, agora é só usar.

Ver o tamanho de uma partição

Para ver o tamanho de uma partição podemos usar a opção “-s” como no exemplo:

# fdisk -s /dev/sda9
3154944

O número apresentado é o tamanho da partição em blocos, para este caso isso equivale a cerca de 3100MB.

Outros exemplos:

# fdisk -s /dev/sda1
79629573

ou

# fdisk -s /dev/sda5
6007808

Confira que usando o comando “p” também será apresentada uma coluna com os tamanhos das partições. Confira se está de acordo:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Fácil, não é?

Marcando partições de boot

O fdisk mostra as partições de boot marcadas com um “*”, veja:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

No caso a partição 1 ou /dev/sda1 é que está marcada.

O comando “a” serve para marcar ou desmarcar a partição como de boot. Então se quisermos desmarcar a partição 1, faríamos:

Comando (m para ajuda): a
Número da partição (1-9): 1

Não esqueça de gravar as alterações usando o comando “w”, assim:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Para confirmar se a alteração foi feita:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1               1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Agora para marcar a partição 6 seria:

Comando (m para ajuda): a
Número da partição (1-9): 6

Entendido? Vamos adiante.

Corrigindo a ordem da tabela de partições

Quando você deleta partições e cria outras a ordem das partições no disco fica alterada. Se, por exemplo, deletamos as partições 2, 3 e 4 e neste espaço criamos uma nova partição que ficará sendo a partição 2, o sistema ficará com a ordem quebrada, terá no exemplo as partições 1, 2, 5, 6 etc. Veja como fica:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5           38166       38914     6007808   82  Linux swap / Solaris
/dev/sda6           19429       37418   144494592   83  Linux
/dev/sda7           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda8            9914       19036    73268224   83  Linux
/dev/sda9           19036       19429     3154944   83  Linux

Partições lógicas fora da ordem do disco

Para corrigir isso usamos o comando “f”, como ele não consta da lista de comandos precisamos ativar as funcionalidades adicionais por meio do comando “x”, fica então desta forma:

Comando (m para ajuda): x
Comando avançado (m para ajuda): f
Concluído.

Gravamos a modificação:

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.

WARNING: Re-reading the partition table failed with error 16: 
   Dispositivo ou recurso está ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Sincronizando discos.

Vamos confirmar com o comando “p” e ver que a mensagem de partições lógicas fora de ordem desapareceu, embora a ordem sda1, sda2, sda5, sda6 etc não tenha se alterado a ordem internamente para o sistema foi corrigida:

Comando (m para ajuda): p

Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador do disco: 0x0003e877

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1   *           1        9914    79629573+  83  Linux
/dev/sda2            9914       38914   232939521    5  Estendida
/dev/sda5            9914       19036    73268224   83  Linux
/dev/sda6           19036       19429     3154944   83  Linux
/dev/sda7           19429       37418   144494592   83  Linux
/dev/sda8           37418       38165     6005760   82  Linux swap / Solaris
/dev/sda9           38166       38914     6007808   82  Linux swap / Solaris

Bem, era isso!

Fontes:

Instalação Vindula 2.0 Intranet

 Leitura Recomendada  Comentários desativados em Instalação Vindula 2.0 Intranet
maio 302013
 

Nesta dica, você aprenderá como instalar o Vindula 2.0 no Ubuntu 12.04 via terminal de comandos.

Instalando dependências

Antes de instalar o Vindula, deve-se instalar as dependências necessárias.

$ sudo apt-get install gcc g++ make build-essential libjpeg-dev libpng12-dev subversion mercurial zlib1g-dev
$ sudo apt-get install libc6-dev python-setuptools python-virtualenv pkg-config libpcre3-dev libssl-dev
$ sudo apt-get install python-openssl python-dev python-ldap  python-dev python-dateutil python-lxml libbz2-dev
$ sudo apt-get install python-lxml libxml2 libxml2-dev libxslt-dev libncurses5 libncurses5-dev ruby rubygems
$ sudo apt-get install mysql-server libmysqlclient-dev libmysqld-dev libsqlite3-dev libsasl2-dev git-core
$ sudo apt-get install graphicsmagick ghostscript poppler-utils tesseract-ocr openoffice.org libldap2-dev
$ sudo gem install docsplit

Criando usuário Vindula

Para dar continuidade a instalação um usuário de máquina será criado, desta forma este usuário terá totais privilégios.

Crie o usuário vindula com o comando.

$ sudo adduser vindula

Defina uma senha para o usuário.

Após instaladas as dependências acesse o diretório /opt que é utilizado como padrão de instalação para o Vindula.

$ cd /opt
$ sudo mkdir vindula2.0 python2.7

Troca-se as permissões dos diretórios para o usuário vindula criado anteriormente.

$ sudo chown vindula:vindula vindula2.0 python2.7

Continue a instalação com o usuário vindula.

$ su vindula

Instalando Python

O Vindula 2.0 utiliza a versão 2.7 do Python, execute o procedimento abaixo para instalar.

$ cd python2.7
$ git clone https://github.com/vindula/buildout.python.git
$ cd buildout.python
$ python bootstrap.py
$ ./bin/buildout -vN

Criando Virtualenv

O Python virtualenv é utilizado para criar instalações Python isoladas da instalação do sistema na pasta do projeto, com isso é possível manter instalações de pacotes Python locais dedicados somente à aplicação e não vinculados ao sistema operacional, isso facilita a portabilidade da aplicação para outros sistemas.

Para criar um virtualenv com o python2.7 compilado use os comandos abaixo:

$ cd /opt/vindula2.0 
$ /opt/python2.7/buildout.python/bin/virtualenv-2.7 --no-site-packages .

Extraia aqui o pacote com o código fonte do Vindula 2.0 obtido na sessão downloads. (http://www.vindula.com.br/download)

$ tar xvf Vindula-2.0LTS.tar.gz

Acesse o diretório vindula e execute o arquivo bootstrap.py, lembrando-se que deve ser utilizado o Python do virtualenv e não o do sistema.

$ cd vindula
$ ../bin/python bootstrap.py 
$ ../bin/easy_install -U distribute
$ ./bin/buildout  -vN

Durante o decorrer deste passo você sera questionado pela senha do usuário root, de sua base MySQL, para criação da base do Vindula.

Iniciando o Vindula

Após a inserção do usuário e senha do Mysql, o Vindula está preparado para ser iniciado,execute o comando abaixo para iniciar a instância.

$  ./bin/instance start

Via navegador web acesse o endereço http://localhost:8080/vindula ou http://endereço-ip:8080/vindula para acessar utilize os seguintes dados:

user: administrador

pass: vindula

Configurando Conversor de PDF e Office.

Por padrão o Vindula converter arquivos PDF e apresenta diretamente para o usuário diretamente no navegador, sem a necessidade de algum software para visualização do documento. Veja os passos a seguir para configurar que esta mesma funcionalidade seja executada com arquivos (docx,doc,odt,xlsx,xls,ods e ppt)

Acesse o Painel de Controle do Vindula, clique sobre a área Sistema e acesse a opção Document Viewer Settings. No campo Auto layout file types, mova as opções Word Document, Powerpoint e Excel File para a coluna da direita.

Salve as alterações ao final da página

Habilitando suporte ao Vindula Chat

No diretório extras pode se encontrar um arquivo compactado  com os plugins necessários para funcionamento da função chat, o mesmo deve ser extraído no diretório de plugins de seu servidor openfire.

Adicione as regras abaixo em seu servidor Web, (regras para Nginx)

location /http-bind {

proxy_pass http://localhost:7071/http-bind/;

}

location ^~ /http-user/ {

rewrite ^/http-user/(.*) /$1 break;

proxy_pass http://localhost:9090/;

}

location /jappix {

proxy_pass http://localhost:7070/jappix;

}

Configurando Conector do Chat

Em Painel de Controle / Geral/ Chat, ative a opção função chat, configure seu domínio e a chave de conexão do servidor openfire e clique em Salvar.

editar vindula chat

SELinux – Segurança em Servidores GNU/Linux

 Firewall, Redes, Segurança  Comentários desativados em SELinux – Segurança em Servidores GNU/Linux
maio 302013
 
O SELinux

O Security-Enhanced LinuxSELinux – foi desenvolvido pela Agência Nacional de Segurança dos EUA (NSA). Logo no início, seu objetivo principal era tornar-se um sistema operacional capaz de fornecer controles avançados de acesso para os órgãos militares dos Estados Unidos.

Porém, com o passar do tempo, a NSA identificou que seria mais lógico aprimorar um sistema de controle de acesso obrigatório, e adicioná-los a um sistema operacional já existente.

A opção pelo GNU/Linux surgiu devida à facilidade e flexibilidade de incorporar tal framework ao Kernel do sistema. Logo depois, sistemas que traziam a plataforma Unix, também usufruíram desta tão poderosa ferramenta.

Altamente implementado e refinado em cima da arquitetura MAC (Mandatory Access Control), provendo maior segurança a arquivos, diretórios, processos, sistema de arquivos, entre outros objetos, através de regras providas pelo SELinux.

Vale ressaltar, que este nível de segurança vai além da arquitetura DAC (Discretionary Access Control) que está associada à permissão de arquivos e ACLs (Access Control List’s) do GNU/Linux, como exemplo, as permissões MAC podem ser aplicadas até ao usuário root, limitando ações do mesmo.

Em um conceito prático, imaginemos que a conta de sistema associada ao serviço HTTP foi comprometida, o SELinux através de regras pré estabelecidas, limita este comprometimento apenas ao serviço HTTP, impossibilitando o comprometimento de outros serviços, ou até mesmo, do próprio sistema operacional.

Depois deste breve conceito, vamos à prática.

Lembrando que mais informações do SELinux, podem ser obtidas na Wiki do Projeto:

Ou, na página oficial da NSA:

Modo de operação do SELinux (conceito e prática)

Basicamente, o SELinux pode operar em três tipos diferentes, que são:

  • Enforcing – As regras do SELinux estão aplicadas, e está sendo gerado Logs de todas as operações do mesmo;
  • Permissive – As regras do SELinux estão desativadas, porém, está gerando Logs de todas as operações do mesmo (útil para Troubleshoot de aplicações);
  • Disabled – As regras e os Logs do SELinux estão completamente desativados.

Obs.: Para nossos testes, estou utilizando o CentOS 6.3.

Visualizando o status do SELinux:

# sestatus

Saída do comando:

SELinux status:            enabled
SELinux mount:            /selinux
Current mode:             enforcing
Mode from config file:   enforcing
Policy version:              24
Policy from config file:   targeted

Caso se queira visualizar apenas o Current mode do SELinux, utilize o comando:

# getenforce

Saída do comando:

Enforcing

Perceba que este comando traz apenas o modo de operação do SELinux.

Para alterarmos o modo de operação temporário do SELinux (apenas Enforcing e Permissive), utilizaremos o seguinte comando:

# setenforce MODO_DE_OPERAÇÂO

Ex.:

# setenforce permissive

Logo, visualize o status do SELinux:

# sestatus

SELinux status:            enabled
SELinux mount:            /selinux
Current mode:             permissive
Mode from config file:   enforcing
Policy version:              24
Policy from config file:   targeted

Obs.: Para desabilitar, ou alterar, o ‘current mode’ do SELinux por completo, é necessário editar o arquivo de configuração do SELinux (/etc/selinux/config) e alterar a variável:

‘SELINUX=’.

* Apenas como fonte de informação:

  • Em alguns casos com o SELinux habilitado, podemos nos deparar com serviços que, por algum motivo, não estão funcionando.
  • Alguns administradores, simplesmente desativam o SELinux por completo (Modo Disabled), para resolver o “problema”.
  • Porém, para um Troubleshoot eficaz, não é necessário desativar o SELinux por completo comprometendo a segurança do sistema, e sim, deixá-lo em modo “Permissive”; com isso, as regras serão desativadas, porém, todo registro das atividades (logs) continuarão sendo armazenadas.
Contextos de segurança

Em uma explicação básica, um contexto é um valor de dado assumido pelos objetos de uma classe.

Nome, Idade e Peso, são exemplos de contextos do objeto “Pessoa”. Cor, Categoria e Modelo, são possíveis contextos do objeto “Carro”. No caso, os contextos da arquitetura DAC são: Tipo, Dono, Grupo e Outros.

Ex.:

# ls –ld /etc

Saída do comando:

drwxr-xr-x

Onde:

  • d = Diretório (Tipo)
  • rwx = Permissão para o dono do arquivo (Dono)
  • r-x = Permissão para o grupo do do arquivo (Grupo)
  • r-x = Permissão para os outros objetos do sistema (Outros)

No caso da arquitetura MAC, os contextos mudam de características, conforme: Usuário, Papel, Tipo e Nível.

Onde:

  • Usuário (user_u) – O campo usuário, indica o nome do usuário do SELinux, por exemplo, o usuário “system_u”, indica processos, arquivos de configuração e daemons do sistema.
  • Papel (role_r) – O campo papel, é uma forma de agrupar diferentes permissões a um determinado usuário (uma espécie de grupo).
  • Tipo (type_t) – O campo tipo (também conhecido como domínio), indica qual é permissão primária de determinado objeto do SELinux, essa é a primeira etapa de verificação de permissão do sistema MAC.
  • Nível (s*:c*) – O campo nível, indica em qual categoria determinado objeto se encontra, com relação à segurança. O mesmo utiliza a politica MCS/MLS (Multi-Category Security/ Multi-Level Security).

    Por exemplo, o nível s0:c0 indica um objeto Confidencial para todos os que possuírem o mesmo nível.

Na prática, com o mesmo diretório /etc:

# ls –Zd

Saída do comando:

System_u:object_r:etc_t:s0

Onde:

  • system_u =Usuário SELinux dono do objeto
  • object_r = Papel (ou papel) do SELinux
  • etc_t = Domínio (ou tipo) do SELinux
  • s0 = Nível de segurança do SELinux

Visualizando contextos MAC nos objetos do sistema

Para visualizar todos os processos que estão rodando no sistema, juntamente com os contextos do SELinux, vamos utilizar o comando abaixo:

# ps auxZ

Perceba que apenas adicionando a opção “Z” no comando ps, já é suficiente para visualizarmos os contextos de todos os processos do SELinux. Isto vale para outros comandos também, como por exemplo, o comando ls.

Vamos visualizar o contexto de um arquivo ou diretório qualquer do sistema:

# ls –Z /boot

Saída do comando:

system_u:object_r:boot_t:s0

Isso vale também para o comando id, que nos traz informações de um determinado usuário:

Ex.:

# id –Z

Saída do comando:

unconfined_u: unconfined_r: unconfined_t:s0-s0:c0.c1023ls

Perceba que neste caso, todo o contexto está definido como: unconfined_*

…Isto indica que o SELinux não terá influência alguma no objeto correspondente.

O comando Semanage

Para um bom entendimento do SELinux, é necessário explorar o mesmo por completo, o comando semanage traz uma série de opções para que isso aconteça.

Primeiro, devemos instalar o conjunto de pacotes, que traz (além de vários outros) o comando Semanage:

# yum install policycoreutils-python

Com o Semanage instalado em nossa máquina, vamos listar todos os usuários, nível de MLS/MCS e papéis (roles) do SELinux:

# semanage user –l

Onde: -l = list

Saída do comando:

    Labeling   MLS/       MLS/                         
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles
git_shell_u     user       s0         s0                             git_shell_r
guest_u         user       s0         s0                             guest_r
root            user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
staff_u         user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
sysadm_u        user       s0         s0-s0:c0.c1023                 sysadm_r
system_u        user       s0         s0-s0:c0.c1023                 system_r unconfined_r
unconfined_u    user       s0         s0-s0:c0.c1023                 system_r unconfined_r
user_u          user       s0         s0                             user_r
xguest_u        user       s0         s0                             xguest_r

Pergunta: “ual a função de cada usuário? Permissão? Acessos e etc…?

Vamos a um overview rápido e objetivo de cada um:

  • guest_u: Este perfil é usado para usuários que precisam ser rigorosamente controlados. O guest_u só pode fazer login usando o terminal. O mesmo não tem acesso a recursos de rede, programas setuid, setgid, su, sudo e interface gráfica.
  • xguest_u: Este perfil é idêntico à do ‘guest_u’. A exceção é que ‘xguest_u’, os usuários só conseguem fazer login na interface gráfica.
  • user_u: Assemelha a um usuário comum sem privilégios administrativos. Este usuário pode fazer login usando interface gráfica e terminal, tem acesso aos recursos da rede, mas não pode usar programas setuid e setgid.
  • staff_u: Este usuário é idêntico ao ‘user_u’, exceto que o ‘staff_u’ pode acessar os programas setuid e setgid. O ‘staff_u’ também pode fazer STAT em todos os processos do sistema, entre outros pequenos privilégios extras, em comparação com ‘user_u’.
  • sysadm_u: Este usuário é projetado para realizar login como root. Muito utilizado em ambientes multi nível de segurança, onde não há o objeto ‘unconfined_u’.
  • unconfined_u: O ‘unconfined_u’ é, em muitas vezes, isentos de regras do SELinux.

    Usuários reais do GNU/Linux, exceto o usuário root, não devem ser mapeados para o grupo de usuários ‘unconfined_u’. Em muitos cenários com que os usuários não são confinados, o mesmos criam um buraco na segurança do sistema operacional.

  • system_u: Este perfil de usuário do SELinux está reservado para o sistema. Os usuários do GNU/Linux não devem ser mapeado para o usuário SELinux ‘system_u’, geralmente este usuário esta atrelado a processos, configurações e daemons.

Agora que já sabemos as reais permissões dos usuários do SELiux, vamos listar todos os usuários do sistema que estão atrelados aos usuários e permissões do SELinux:

# semanage login –l

Saída do comando:

Login Name                SELinux User              MLS/MCS Range           
__default__               unconfined_u              s0-s0:c0.c1023          
root                      unconfined_u              s0-s0:c0.c1023          
system_u                  system_u                  s0-s0:c0.c1023

Apenas como fonte de conhecimento, vamos criar um usuário chamado “teste”, e referenciá-lo ao usuário “guest_u” do SELinux:

# useradd –c “Usuário Teste” –d /home/teste –m –k /etc/skel –s /bin/bash teste
# passwd teste
# semanage login –a –s guest_u teste

Onde:

  • -a = add
  • -s = selinux user

Logo, liste os logins novamente:

# semanage login –l

Login Name                SELinux User              MLS/MCS Range           
__default__               unconfined_u             s0-s0:c0.c1023          
root                      unconfined_u                 s0-s0:c0.c1023          
system_u                  system_u                  s0-s0:c0.c1023         
teste                       guest_u                      s0

Perceba que agora, o usuário “teste”, está atrelado ao usuário do SELinux “guest_u”, obtendo automaticamente as mesmas permissões do mesmo.

Tente logar na área gráfica com o usuário “teste”. Depois tente logar com o mesmo usuário, em algum terminal.

Perceba que as permissões do usuário “guest_u” do SELinux, não permitem o login na área gráfica, somente no terminal.

Agora, experimente atrelar o usuário “teste” ao usuário “xguest_u”. Neste momento, o usuário “teste” tem as devidas permissões para acessar a área gráfica.

Para remover o usuário “teste” das diretivas do SELinux, basta executar o comando:

# semanage login -d teste

Onde: -d = delete

Continuando com o comando semanage, vamos listar todos os contextos aplicados no sistema:

# semanage fcontext –l

Assim, fica muito mais fácil saber se determinado objeto ou serviço, está atrelado às politicas MAC do SELinux.

Mais informações sobre o comando semanage:

# semanage – -help

Os comandos Chcon e Restorecon

Diversas vezes, nos deparamos com problemas de permissão de contextos no SELinux, isto acontece frequentemente, ainda mais em serviços que têm uma alta rotatividade de objetos, como File Servers e FTP.

Para resolver este problema, utilizaremos o comando chcon, sua função nada mais é do que alterar contextos em objetos.

Para os nossos testes com o chcon, vamos criar um arquivo denominado “teste.txt” dentro do diretório /etc:

# touch /etc/teste.txt

Verifique os contextos deste arquivo:

# ls -Z /etc/teste.txt

Saída do comando:

-rw-r–r–. root root unconfined_u:object_r:etc_t:s0 /etc/teste.txt

Perceba que o usuário está definido como “unconfined_u”. Imagine agora, que precisamos alterar (por algum motivo qualquer) para o usuário “user_u”. Vamos utilizar o seguinte comando:

# chcon -u user_u /etc/teste.txt

Onde: -u = user

# ls -Z /etc/teste.txt

Saída do comando:

-rw-r–r–. root root user_u:object_r:etc_t:s0 /etc/teste.txt

Perceba que, agora o arquivo está com o contexto de usuário definido para “user_u”.

Caso precisamos (por algum motivo qualquer) alterar o domínio (type) deste objeto, para “tmp_t”:

# chcon -t tmp_t /etc/teste.txt

Onde: -t = type

# ls -Z /etc/teste.txt

Saída do comando:

-rw-r–r–. root root user_u:object_r:tmp_t:s0 /etc/teste.txt

Pronto, o arquivo está com seu domínio alterado, assim, todos os objetos que tem acesso ao domínio “tmp_t”, terão acesso ao arquivo /etc/teste.txt.

Em um último teste do comando chcon, imaginamos que você queira clonar o contexto de outro objeto?! O chcon também faz isso:

# chcon –reference /var /etc/teste.txt
# ls -Z /etc/teste.txt

Saída do comando:

-rw-r–r–. root root system_u:object_r:var_t:s0 /etc/teste.txt

Obs.: Caso você queira aplicar contextos recursivamente, basta inserir a opção “-R” no comando chcon.

Em muitos casos, queremos deixar o objeto de acordo com as regras do domínio (type) no qual o mesmo está armazenado. Poderíamos utilizar o chcon e copiar todos os contextos, ou utilizar um comando que faz exatamente isso. Este comando é o restorecon, vamos vê-lo em detalhes:

# restorecon -F /etc/teste.txt

Com este comando, o arquivo “teste.txt” herdará todos os contextos do diretório /etc (local onde o mesmo está armazenado). Útil, não?! =)

Os comandos chcon e restorecon, são extremamente úteis e complexos, para um maior detalhamento dos mesmos, leia a Man Page oficial:

# man chcon
# man restorecon

Variáveis booleanas

As variáveis booleanas nada mais são, do que ligar(1) ou desligar(0) determinada ação (seja temporário ou não).

Um exemplo seria, imaginamos que determinada aplicação necessita de acesso a gravação no sistema, caso não existisse as variáveis booleanas, teríamos que reescrever o código do SELinux para permitir tal ação!

As mesmas são extremamente úteis para qualquer um que queira administrar o SELinux.

Para uma prática eficiente com as variáveis booleanas, é só lembrar dos termos 0 e 1, ou para ficar mais fácil: nã0 e s1m. =)

Vamos à mais um case!

Vamos instalar um serviço de FTP (apenas de exemplo), e gerenciar as variáveis booleanas:

# yum install vsftpd

E, adicionar aos níveis de execução:

# chkconfig –level 2345 vsftpd on

Agora, vamos reiniciar o serviço:

# service vsftpd restart

Agora que já temos o serviço devidamente instalado, vamos gerenciar as variáveis booleanas.

Primeiro, vamos listá-las:

# getsebool -a

Onde: -a = all

– Pergunta: Apenas com o nome das variáveis, fica difícil saber para que cada uma serve?
– Resposta: Para um maior detalhamento, vamos utilizar o semanage novamente:

# semanage boolean -l

Onde: -l = list

Perceba que agora, temos os nomes das variáveis, e também uma breve descrição de cada uma delas.

Vamos filtrar as variáveis para tudo que atrela-se ao serviço FTP:

# semanage boolean -l | grep ftp

Saída do comando:

ftp_home_dir                   (off  ,  off)  Allow ftp to read and write files in the user home directories
tftp_anon_write                (off  ,  off)  Allow tftp to modify public files used for public file transfer services.
allow_ftpd_full_access         (off  ,  off)  Allow ftp servers to login to local users and read/write all files on the system, governed by DAC.
allow_ftpd_use_cifs            (off  ,  off)  Allow ftp servers to use cifs used for public file transfer services.
allow_ftpd_use_nfs             (off  ,  off)  Allow ftp servers to use nfs used for public file transfer services.
allow_ftpd_anon_write          (off  ,  off)  Allow ftp servers to upload files,  used for public file transfer services. Directories must be labeled public_content_rw_t.
ftpd_use_passive_mode          (off  ,  off)  Allow ftp servers to use bind to all unreserved ports for passive mode
ftpd_connect_db                (off  ,  off)  Allow ftp servers to use connect to mysql database
httpd_enable_ftp_server        (off  ,  off)  Allow httpd to act as a FTP server by listening on the ftp port.

Por padrão, o serviço VSFTPD não permite o total gerenciamento de arquivos para o usuário anonymous, isso devido às restrições do SELinux!

Caso você queira dar tal permissão para o usuário anonymous (ou outros usuários), basta setar a variável: allow_ftpd_full_access

Com ela é possível dar controle total a qualquer usuário que conecte no FTP (lembrando que esse é apenas mais um teste).

– Pergunta: E como fazer isso?
– Resposta: Simples, utilizaremos o comando setsebool.

# setsebool -P allow_ftpd_full_access 1

Onde:

  • -P = Indica que será aplicada á alteração permanente, sem a opção ‘-P’ no próximo reboot, tudo será restaurado para o seu padrão!
  • 1 = Ativa a variável (lembre-se: s1m e nã0)

Pronto! Seu servidor FTP está dando controle total para qualquer usuário. Feliz agora?!

Bom, eu não ficaria, pois estamos abrindo um furo na segurança do sistema. Portanto, vamos desativar a variável booleana correspondente:

# setsebool -P allow_ftpd_full_access 0

Onde: 0 = Desativar a variável.

Lembre-se: As variáveis booleanas são extremamente importantes para a boa administração do SELinux, liste e teste cada uma delas, assim tudo ficara mais fácil. 😉

O comando Semodule

Assim, como o próprio sistema GNU/Linux, o SELinux opera em formato modular, ou seja, caso precise adicionar exceções, ou aprimoramento, de regras no SELinux para determinadas aplicações, como por exemplo um MTA, ou um servidor Web, não será necessária a recompilação do próprio sistema SELinux.

E sim, adicionar um código externo (módulo) que indique tal ação. Este módulo pode ser fornecido tanto pela equipe que administra a aplicação, quanto construída pelo próprio administrador do SELinux.

Obs.: Não confunda os módulos do SELinux com as variáveis booleanas. Os módulos são funções acrescentadas nas regras de determinada aplicação, já as variáveis booleanas, são permissões referentes à comunicação entre aplicação e objetos do sistema.

O comando que gerencia tais módulos no SELinux, é o Semodule, e sua utilização é muito simples.

Para listar os módulos do SELinux:

# semodule -l

Onde: -l = list

Saída do comando (resumida):

abrt    1.2.0
accountsd       1.0.0
ada     1.4.0
afs     1.5.3
aiccu   1.0.0
aide    1.5.0
aisexec 1.0.0
amanda  1.12.0
amavis  1.10.3
amtu    1.2.0
apache  2.1.2
apcupsd 1.6.1
arpwatch        1.8.1
asterisk        1.7.1
audioentropy    1.6.0
automount       1.12.

Caso precisemos desabilitar determinado módulo, como por exemplo, o módulo do Asterisk, utilizaremos a seguinte sintaxe do comando semodule:

# semodule -d asterisk

Onde: -d = disable

Agora, vamos listar os módulos, filtrando apenas o módulo do Asterisk:

# semodule -l | grep asterisk

Saída do comando:

asterisk       1.7.1   Disabled

Perceba que este módulo está presente, porém sem qualquer funcionalidade.

Para remover o módulo por completo, utilize o comando:

# semodule -r asterisk

Onde: -r = remove

# semodule -l

Listando novamente os módulos, perceba que o mesmo não se encontra mais na listagem.

– Pergunta: E se eu precisar do módulo do Asterisk novamente, o que eu faço?
– Resposta: Por padrão, os arquivos de módulo do SELinux terminam com extensão “.pp” (Package Policy), portanto, para instalar um módulo no sistema SELinux, é necessário ter tal arquivo em mãos.

Simples, não?! Agora basta achar tal arquivo “.pp” do Asterisk.

Por padrão, o diretório /usr/share/selinux/targeted/ contém diversos arquivos de pacotes de políticas (*.pp).

Estes arquivos estão inclusos no pacote “selinux-policy”, e são utilizados para construir o arquivo de política.

Em diversas distribuições, como o CentOS e Red Hat, tais arquivos podem estar compactados, porém, a descompactação não se faz necessária para instalação.

Como estamos trabalhando com módulos defaults, o arquivo “.pp” do Asterisk está armazenado neste diretório, portanto, vamos reativá-lo:

# cd /usr/share/selinux/targeted/ # semodule -i asterisk.pp.bz2

Onde: -i = Install

# semodule -l | grep asterisk

Perceba que não precisamos habilitar o módulo novamente, apenas com a instalação do mesmo, ele já fica em modo enable.

Caso o módulo não fique em modo enable, basta executar o comando semodule com a opção “-e”, seguida do nome do módulo, no nosso caso, seria o “asterisk”.

Para mais opções do comando semodule, basta executar:

# man semodule

Auditoria e logs

Com relação à auditoria e depuração de Logs, o SELinux lida muito bem com isso, a começar pelo pacote Setroubleshoot, a junção de diversos aplicativos é uma “Mãe” para qualquer administrador SELinux. A ferramenta demonstra os alertas de AVC do SELinux, e ainda diz qual comando pode corrigir o mesmo.

Falando em AVC, sigla para Access Vector Cache (e não para Acidente Vascular Cerebral), que nada mais é do que alertas de acessos bloqueados sejam elas de aplicação ou usuários do sistema.

Primeiramente, vamos instalar o pacote “Setroubleshoot”.

Obs.: Caso tenha interface gráfica no servidor, o mesmo irá instalar um pequeno utilitário, que alerta toda vez que um AVC acontecer.

# yum install setroubleshoot

Antes de qualquer coisa, vamos gerar o nosso próprio AVC.

– Pergunta: Mas como assim, o nosso próprio AVC?
– Resposta: Bom, esta é uma tarefa fácil, uma simples alteração de porta padrão de um determinado serviço, como o HTTP, por exemplo, deve gerar um Alerta de Access Denied.

Vamos aos testes:

Instale o serviço HTTP no Servidor:

# yum install –y httpd

Abra o arquivo de configuração:

# vim /etc/httpd/conf/httpd.conf Altere a seguinte linha do arquivo: Listen 80

Para:

Listen 8888

Logo, reinicie o serviço HTTP:

# service httpd restart

Pronto, nosso AVC foi gerado com êxito. =)

O primeiro comando para verificação de AVC’s, é o ausearch:

# ausearch –m avc | grep httpd

Onde: -m = message

Saída do comando (resumida):

type=AVC msg=audit(1344678620.633:26191): avc: denied { name_bind } for pid=9429 comm=”httpd” src=8888 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0
tclass=tcp_socket

Perceba que a saída do comando demonstra claramente, o motivo dele ter alarmado tal AVC.

– Pergunta: (Bruno, beleza!) Eu “já sei” o que aconteceu pela saída do log, mas agora eu quero que a porta 8888 seja padrão do serviço HTTP, irá continuar gerando AVC’s?
– Resposta: Não, não, porém para que isso aconteça, é necessário informar ao SELinux, que a porta padrão do serviço HTTP mudou.

Existem duas maneiras de se fazer isso, uma é utilizar o comando semanage com a opção “port”, a outra é o que iremos ver abaixo.

Primeiro, vamos utilizar o comando selatert para analisar os logs:

# sealert –a /var/log/audit/audit.log | grep httpd

Onde:

  • -a = Analyze File
  • /var/log/audit/audit.log = O arquivo que será analisado

Saída do comando (resumida):

SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket.
If you want to allow /usr/sbin/httpd to bind to network port 8888
where PORT_TYPE is one of the following: ntop_port_t, http_cache_port_t, http_port_t, puppet_port_t, jboss_messaging_port_t, jboss_management_port_t.
If you believe that httpd should be allowed name_bind access on the tcp_socket by default.
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol

Analisando a saída, perceba que além de detalhar a possível causa do AVC, ele sugere (caso você realmente queira), indicar a alteração de porta padrão do serviço HTTPD para 8888 ao SELinux.

Vamos utilizar o comando que ele sugeriu:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol

Onde:

  • grep httpd /var/log/audit/audit.log = Indica que iremos filtrar a palavra httpd, mediante o arquivo de logs.
  • audit2allow = Utilizado para Gerar políticas do SELinux para permitir regras, a partir de logs negados.
  • -M = Cria um arquivo de Módulo, com a saída do audit2allow
  • mypol = Nome do arquivo de Módulo, podendo ter qualquer nome.

Saída do comando:

******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i mypol.pp

Perceba que a saída do comando deixa bem claro que, caso você queira tornar tal módulo ativo, é necessário que você o instale via semodule.

Porém, caso você liste o diretório corrente, irá perceber que existem 2 arquivos mypol:

# ls

Saída do comando:

mypol.te mypol.pp

O arquivo “mypol.te” indica um tipo de arquivo de execução (Type Enforcement), ou seja, ele tem toda instrução do que será executado/alterado no sistema através do arquivo “mypol.pp”.

Já o arquivo “mypol.pp”, nada mais é o que o pacote de politicas (Package Policy), ou o módulo propriamente dito.

Agora que sabemos qual arquivo instalar, vamos utilizar o semodule para isso:

# semodule -i mypol.pp

Depois de alguns segundos, o arquivo foi instalado com êxito. Será?

Liste os módulos, e veja você mesmo:

# semodule –l | grep ^m

Saída do comando:

mailman 1.7.2
matahari    1.0.0
mediawiki   1.0.0
memcached   1.1.2
milter  1.1.1
modemmanager    1.0.1
mono    1.6.1
mozilla 2.1.1
mpd 1.0.0
mplayer 2.1.0
mrtg    1.8.0
munin   1.7.0
mypol   1.0
mysql   1.11.3

Olha só, o nosso modulo “mypol” instalado e habilitado no sistema. Ou seja, funcionou! =D

Vale reforçar que, a criação de módulos com o “audit2allow”, só é aconselhada caso você saiba realmente o que esteja fazendo, utilizar o “audit2allow” apenas para resolver os alertas de AVC do SELinux, estará causando um grande furo de segurança ao sistema.

Bom galera, é isso.

O artigo foi básico, em relação à complexidade do SELinux, porém, espero que tenha sido útil para aqueles que estão começando com esta tão poderosa ferramenta.

Meu muito obrigado, e até a próxima! =D

Comando sudo – instalação e configuração

 Clusterweb, Firewall, Linux, Proxy, Redes  Comentários desativados em Comando sudo – instalação e configuração
maio 302013
 
Introdução

Descrição sobre o sudo

O sudo permite um usuário em particular execute vários comandos como super usuário sem que possua sua senha, ou seja sem a senha do root.

Há uma descrição completa do pacote em:

Instalação

Primeiramente devemos instalar o sudo para poder configurá-lo. Têm-se três possíveis maneira de instalar o sudo, pelos: fonte, binários e instaladores.

Dependências:

A instalação do sudo depende de outros módulos e bibliotecas que deverão ser instaladas anteriormente:

  • perl
  • make
  • Class::Accessor
  • IPC::Run

Instalação através de pacote fonte:

O fonte do sudo pode ser obtido na URL abaixo.

No pacote há os seguintes arquivos: Sudo-0.21/, Sudo-0.21/Changes, Sudo-0.21/lib/, Sudo-0.21/lib/Sudo.pm, Sudo-0.21/Makefile.PL, Sudo-0.21/MANIFEST, Sudo-0.21/README, Sudo-0.21/t/, Sudo-0.21/t/Sudo.t.

Como superusuário execute os passos seguintes:

passo 1: baixar o pacote

# wget http://search.cpan.org/CPAN/authors/id/L/LA/LANDMAN/Sudo-0.21.tar.gz

passo 2: desempacotar

# tar -xvzf Sudo-0.21.tar.gz -C /tmp

passo 3: compilar

# perl Makefile.PL
# make
# make test

passo 4: instalar

# make install

Instalação através de pacote binário:

Localize o binário referente a distro (FC6,Debian, ubuntu, slack, e outras) e plataforma (i386, amd64 e outras) utilizada.

Fedora:

# rpm -Uvh sudo-1.6.8p12-10.i386.rpm

Debian:

# dpkg -i sudo_1.6.8p7-1.4_i386.deb

Instalação através dos instaladores ou utilitários:

Dentre os diversos instaladores, que sua função principal é calcular as dependências automaticamente, temos synaptic (fedora, mandriva, debian), aptitude (debian, ubuntu), yast (suse), apt (fedora, debian, e outros), yum (fedora). Existem inúmeras particularidades, iremos demonstrar os mais comuns.

APT:

# apt-get install sudo

YUM:

# yum install sudo

Configurando o sudo

O arquivo de configuração do sudo é o /etc/sudoers, onde se encontra as permissões e usuários que poderam executar algum comando.

Geralmente, em algumas distros, este arquivo é protegido conta edição, existindo um comando exclusivo para manipulação, o comando visudo. O qual deve-se utilizar para edição do sudo.

Com o comando sudo pode-se delegar autoridade para execução de comandos ou coleção de comandos exclusivos a um usuário especifico ou a um grupo de usuários.

OBS: O arquivo de configuração /etc/sudoers deve ser editado unicamente pelo comando *’visudo’.*

Com o sudo o administrador pode especificar que um determinado usuário só poderá executar um comando com status administrativo de um host específico.

Host Aliases:

Pode definir alias para grupos de máquinas ou para host específico.

Exemplos:

Host_Alias     FILESERVERS = fs1, fs2 # com dns local 
Host_Alias     MAILSERVERS = 10.0.0.1, 10.1.1.1 
Host_Alias     SERVERS = 10.0.0.2, dns, firewall, dhcp, www
User Aliases:

Pode definir alias para grupos de usuários ou para um usuário específico. Inclusive com informações oriundas de LDAP, NIS, AD e arquivos de configuração do Linux.

Exemplos:

User_Alias ADM = %groupname %administradores 
User_Alias ADMINS = ricardobn, ricardo.brito 
User_Alias WEBMASTERS = pedro, rodrigo, eliana
Command Aliases:

Pode definir alias para grupos de comandos ou para um comando específico.

Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\ 
                       /usr/sbin/restore, /usr/sbin/rrestore 
Cmnd_Alias     KILL = /usr/bin/kill 
Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm 
Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown 
Cmnd_Alias     HALT = /usr/sbin/halt 
Cmnd_Alias     REBOOT = /usr/sbin/reboot 
Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \ 
               /usr/local/bin/tcsh, /usr/bin/rsh, \ 
               /usr/local/bin/zsh 
Cmnd_Alias     SU = /usr/bin/su
Subgrupo para administração de rede:
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Subgrupo para Instalação e gerenciamento de software:
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Subgrupo para administração de serviços:
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Subgrupo para administração de atualização da base de dados local:
Cmnd_Alias LOCATE = /usr/sbin/updatedb
Subgrupo para administração dos dispositivos de bloco:
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Subgrupo para administração para Delegação de permissões:
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
Subgrupo para administração de Processos:
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
Subgrupo para administração de Drivers:
Cmnd_Alias DRIVERS = /sbin/modprobe
Configurações avançadas

Delegação de autoridade:

É aconselhável desabilitar o *”ssh hostname sudo <cmd>”*, porque executando o ssh desta maneira será apresentado a senha em claro. Em vez disto execute *”ssh -t hostname sudo <cmd>”*

Esta é a parte principal, que habilita o que o usuário pode executar e em que máquina. O arquivo /etc/sudoers pode ser compartilhado entre múltiplos sistemas para que se tenha efeito.

Sintaxe:

user    MACHINE=COMMANDS

Seção de Comandos:

Permite ao usuário root executar qualquer comando de qualquer lugar;

root    ALL=(ALL)     ALL

Permite aos membros do grupo ‘sys’ executarem todos os comandos especificados neste alias:

%sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

Permite aos membros do grupos wheel executarem todos os comandos:

%wheel    ALL=(ALL)    ALL

Permite aos membros do grupos wheel executarem todos os comandos sem a necessidade de senhas:

%wheel    ALL=(ALL)    NOPASSWD: ALL

Permite a todos os membros do grupo ‘users’ executarem os comandos mount e umount sobre o cdrom como superusuário:

%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

Permite a todos os membros do grupo ‘users’ executar o comando ‘shutdown’:

%users  localhost=/sbin/shutdown -h now

Permite a todos os usuários listados no alias ‘ADMINS’ executem comandos como superusuários sem a necessidade de senhas.

ADMINS    ALL=(ALL)    NOPASSWD: ALL

Permite as usuários listados no alias ‘ADM’ executarem os comandos listados em ‘STORAGE’ nos host de ‘FILESERVERS’ sem a necessidade de senhas:

ADM   FILESERVERS=NOPASSWD: STORAGE

Permite ao usuário ‘ricardo.brito’ executar os comandos kill e iptables na máquina 10.1.1.1, entretanto o comando iptables ele pode executar sem senha:

ricardo.brito    10.1.1.1 = NOPASSWD:/bin/iptables , PASSWD: /bin/kill

Permite ao usuário ‘ricardo.brito’ executar o comando ‘passwd’ para modificar a senha dos usuários nos servidores de email ‘MAILSERVERS’, exceto a senha do root:

ricardo.brito           MAILSERVERS = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root

Proíbe ao usuário ‘john’ executar o comando ‘su -‘, ‘su – root’ ou ‘su root’ na máquina ‘penta’:

john        penta = /usr/bin/su [!-]*, !/usr/bin/su *root*

Para qualquer máquina no Host_Alias SERVERS o usuário jill pode executar qualquer comando do diretórios /usr/bin/ exceto os comandos descritos nos Cmnd_Aliases ‘SU’ e ‘SHELLS’:

jill           SERVERS = /usr/bin/, !SU, !SHELLS

No host www, qualquer usuário do User_Alias WEBMASTERS, pode qualquer comando como usuário (www) ou apenas o ‘su www’.

WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www

Os usuários do grupo de rede secretaries podem gerenciar as impressoras bem como adicionar e remover usuários em todos os hosts.

+secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser

O usuário ‘jen’ pode executar qualquer comando, exceto nos servidores do Host_Alias SERVERS:

jen            ALL, !SERVERS = ALL

# O usuários do grupo ‘users’ podem executar os comandos ‘STORAGE’ nos hosts ‘FILESERVERS’:

%users FILESERVERS=STORAGE

Configuração das variáveis de ambiente

Para que se tenha um bom resultado o diretório dos executáveis devem estar disponíveis no PATH, para os usuários que poderam executar os comando somente de root, os securetty. Geralmente são todos os diretórios que começam com ‘s’ (/usr/kerberos/sbin:/usr/local/sbin:/sbin: /usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin).

Se não for configurado o path, tem a necessidade de digitar o caminho absoluto do comando para conseguir executá-lo. ex: /sbin/iptables -L

Variáveis de seção (Volátil)

A configuração volátil é perdida sempre que o usuário finaliza a seção, desliga a máquina ou algo parecido.

Em um terminal execute:

# PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:\
/usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin

Variáveis de ambiente do usuário

Para configurar de maneira permanente, deve editar o arquivo ‘~/.bash_profile’ para adicionar os diretórios no PATH como exemplo abaixo, a linha sublinhada, esta modificação é realizada para cada usuário que terá acesso aos comandos de root, indicada se forem poucos usuários.

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs
_PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin_
PATH=$PATH:$HOME/bin
export PATH

Variáveis de ambiente do sistema

Esta solução não é indicada para poucos usuários, e para máquinas que não são servidores*, pois dos os comandos de root ficaram disponíveis para todos os usuários do sistema, embora quem não tenha permissão de execução não possa fazer muita coisa não é aconselhável devido a prováveis bugs de alguns pacotes, que poderão ser acidentalmente executados.

Em um terminal execute:

# echo ‘PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:\
/usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin’ >> /etc/profile

Para se ter mais segurança do que se esta fazendo você pode usar o seu editor de texto predileto (vim, vi, nano, etc), e adicionar ‘PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin: /usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin’ este trecho na última linha.

Ponto!

Datagramas IP (Protocolo Internet)

 Redes  Comentários desativados em Datagramas IP (Protocolo Internet)
maio 302013
 
Datagrama IPv4

Um datagrama IP, consiste de duas partes: cabeçalho e o campo de dados que transporta o IP de origem e o IP de destino.

O cabeçalho possui uma parte fixa de 20 bytes e um campo “Options” de tamanho variável. O formato do datagrama IPv4 é mostrado na figura abaixo:

O campo “Version”, armazena a versão do protocolo a que o datagrama pertence, na versão 4 possui tamanho de 4 bits (0100).

O segundo campo, de quatro bits, é o “IHL” (acrônimo para Internet Header Length, ou seja, Comprimento do Cabeçalho da Internet), com o número de palavras de 32 bits no cabeçalho IPv4.

Como o cabeçalho IPv4 pode conter um número variável de opções, este campo essencialmente especifica o offset para a porção de dados de um datagrama IPv4.

O campo “Type of service”, representa os 8 bits seguintes. A intenção original era para um nó (roteador) especificar uma preferência para como os datagramas poderiam ser manuseados assim que circulariam pela rede. Na prática, o campo ToS não foi largamente implementado.

O campo “Total Length” é o campo seguinte de dezesseis bits do IPv4, define todo o tamanho do datagrama, incluindo cabeçalho e dados, em bytes de oito bits. O datagrama de tamanho mínimo é de vinte bytes, e o máximo é 64 Kb.

O tamanho máximo do datagrama que qualquer nó requer para estar apto para manusear são 576 bytes, mas os roteadores mais modernos manuseiam pacotes bem maiores.

O campo “Identification” é um campo de identificação de 16 bits. Este campo é usado principalmente para identificar fragmentos identificativos do datagrama IP original.

Flags → O campo é utilizado para identificar e controlar fragmentos, o campo é composto por três (3) bits.

Offset → O campo é constituído por 13 (treze) bits, o offset permite que o receptor do datagrama determine o local do fragmento do pacote IP original.

TTL → O campo (time to live) ou tempo de vida do pacote, é composto por oito (8 bits), o campo tem a funcionalidade de evitar que o pacote fique percorrendo em loop sem encontrar o destino final, evitando que o datagrama IP persista. Sem o campo TTL, teríamos muitas requisições na rede mundial (Internet), o que causaria uma enorme lentidão da rede (delay), ou até mesmo, o travamento de alguns dispositivos de borda (roteadores ). O campo TTL limita a vida útil do pacote em segundos, onde cada roteador que o datagrama atravessa, é decrementado o valor do TTL que se inicia no número cento e vinte e oito (128), quando o valor chega a 0 (zero), o pacote é descartado, o TTL é considerado como uma contagem de hops (saltos).

Protocol → O campo é constituído por oito (8) bits, é neste campo que é realizado a definição de qual é o protocolo usado na porção de dados de um pacote IP. Existe a possibilidade de ser o TCP, mas há também o UDP e outros. A numeração que se aplica a todos protocolos da Internet é definida na RFC 1700.

Checksum → O campo é responsável por detectar inconsistência no datagrama IP, realizando uma checagem cíclica de todos os campos de um datagrama e identificar se nos HOPS (saltos), onde o datagrama percorreu, se não houve nenhuma falha.

Um pacote em trânsito é alterado por cada ponto (roteador) na rede por onde passa, e um destes pontos pode comprometer a integridade do pacote e o campo checksum é uma forma mais simples de detectar falhas no pacote IPv4.

Endereço de origem e destino → O campo é responsável em trafegar os endereços IPv4 de origem e destino composto por 32 bits cada, segmentado em quatro octetos de oito bits. No caso do IPv6, o campo é composto por 128 bits cada endereço.

A seguir, mostrarei as especificações do novo datagrama IPv6 e comentar as mudanças.

Datagrama IPv6

Como vimos, o cabeçalho IPv4 é composto por 12 campos fixos, responsáveis por fazer com que o tamanho varie de 20 a 60 Bytes. Nesta seção, veremos as novas especificações do datagrama versão 6, que possui um total de apenas oito campos (incluindo source e destination address) e um valor fixo de 40 bytes para o cabeçalho.

Sendo assim, ele ficou mais flexível e eficiente com a adição de cabeçalhos de extensão que não precisam ser processados por roteadores intermediários. A nova versão do datagrama IPv6 ficou assim:

Assim, o cabeçalho IPv6 ficou dividido nos seguintes campos:

* O campo “Versão”, possui 4 bits representando a versão do datagrama 0110.

  • Traffic Class (8 bits) → Esse campo é responsável por distinguir os pacotes que podem ter o controle de fluxo alterado. Na prática, funcionaria da seguinte forma: os campos com valores menores teriam a sua velocidade mais reduzida, ou seja, sofreriam um maior retardo diante de um congestionamento do que os datagramas com valores maiores que são destinados ao tráfego em tempo real. O áudio e video fazem parte dessa última categoria.
  • Flow label (24 bits) → Permite com que se realize um fluxo de pacotes entre dois hosts com características especiais, utilizando um identificador atribuído a ele. Em termos práticos, seria conseguir realizar uma pseudo-conexão baseada em circuitos virtuais.
  • Payload Length (16 bits) → Tamanho, em bytes do datagrama com exceção do cabeçalho que possui 40 bytes, ou seja, o tamanho total do bloco de dados (source address e destination address). Lembrando que os cabeçalhos de extensão, quando inseridos no datagrama, fazem parte dessa contagem.
  • Next Header (8 bits) → Caso seja o último cabeçalho, identifica qual o protocolo da camada de transporte será utilizado para transmissão dos pacotes (TCP/UDP e outros), caso contrário, qual dos seis cabeçalhos de extensão serão anexados ao datagrama.
  • Hop Limit (8 bits) → Número máximo de saltos (roteadores) que um pacote pode ter para caso haja algum erro nas tabelas de roteamento, por exemplo. A cada hop (salto), o valor desse campo vai ser subtraído por 1 bit, caso atinja o valor 0 (zero), será descartado.
  • Source Address (128 bits) → Endereço de origem do datagrama.
  • Destination Address (128 bits) → Endereço de destino do datagrama.

Gostaria de enfatizar algumas funcionalidades dos campos Traffic Class e Flow Label.

“ Os campos Priority (Traffic Class) e Flow Label, têm por finalidade, a facilitação de implementação de aplicações em tempo real e com Qualidade de Serviço (QoS).

O primeiro determina a prioridade que um pacote ou grupo destes deve receber. Deve-se utilizar valores de 0 a 7 para aqueles que podem sofrer atraso, como por exemplo, aplicações de FTP e HTTP; e valores de 8 a 15 para aqueles com tráfico em tempo real, que não devem ser atrasados, como aplicações de vídeo e sons.

Já o segundo campo, ainda em fase experimental, permitirá que dois hosts estabeleçam uma pseudo-conexão (circuitos virtuais) com características específicas. Esta conexão será unicamente identificada pelos endereços IP de envio e destino e pelo valor do campo Flow Label.

Deste modo, será possível prover tratamento diferenciado para diferentes fluxos, de acordo com as necessidades de cada um. ”

[Tanenbaum, 1997]

Cabeçalhos de extensão

Diferente do IPv4, que inclui no cabeçalho base todas as informações opcionais, o IPv6 trata essas informações através dos cabeçalhos de extensão.

As novas especificações do IPv6 definem seis cabeçalhos de extensão:

  1. Hop-by-Hop Options
  2. Destination Options
  3. Routing
  4. Fragmentation
  5. Authentication Header
  6. Encapsulating Security Payload

A criação dos cabeçalhos de extensão do IPv6, teve a finalidade de aumentar a velocidade de processamento nos roteadores. De acordo com a necessidade, novos tipos de cabeçalho de extensão podem ser criados, permitindo assim, maior flexibilidade na adição de mais opções no futuro. Isto permitirá que o protocolo evolua, dentro de certos limites, à medida que haja necessidade.

Na próxima seção, veremos mais detalhes com relação aos cabeçalhos de extensão.

Cabeçalhos de extensão

Antes de iniciarmos a seção sobre cabeçalhos de extensão, é importante analisarmos o formato e a lógica com que eles foram organizados.

Primeiramente, estes cabeçalhos devem ser transportados segundo uma ordem com o objetivo de evitar que os nós (roteadores) intermediários tenham que analisar toda a cadeia de cabeçalhos, para decidir quais cabeçalhos devem processar.

Desta forma, os cabeçalhos mais importantes para o roteamento (nós intermediários), devem ser colocados antes daqueles cabeçalhos que são importantes apenas para os destinatários.

A grande vantagem em termos de desempenho, é que os roteadores intermediários podem parar de processar os cabeçalhos do datagrama assim que encontrar algum cabeçalho de extensão encaminhado ao destinatário, com exceção das informações do cabeçalho de extensão hop-by- hop, que como veremos a seguir, devem ser analisados por todos roteadores intermediários, caso este cabeçalho de extensão esteja presente.

Atualmente, há seis tipos de cabeçalhos de extensão, todos eles são opcionais, mas, se houver mais de um deles, eles aparecerão imediatamente depois do cabeçalho fixo e, na ordem listada:

  • Hop-by-Hop Options → Informações diversas para os roteadores;
  • Destination Options → Informações adicionais para o destino;
  • Routing → Rota parcial ou integral a ser seguida;
  • Fragmentation → Gerenciamento de fragmentos de datagrama;
  • Authentication Header → Verificação de identidade do transmissor;
  • Encapsulating Security Payload → Informações sobre o conteúdo criptografado.

Hop-by-hop

O cabeçalho “hop-by-hop” é identificado pelo valor 0 (zero) no cabeçalho “Next Header” e possui, informações que todos os roteadores ao longo do caminho devem examinar.

O formato do cabeçalho hop-by-hop, pode ser visto a seguir:

Linux: Datagramas

“ Não são permitidos datagramas com menos de 65.536 bytess e, nesse caso, serão descartados no primeiro roteador, que envia uma mensagem de erro ICMP.

O uso de datagramas que utilizam este cabeçalho de extensão, são chamados de jumbogramas. O uso de jumbogramas é importante para as aplicações de supercomputador, que devem transferir gigabytes de dados pela Internet com grande eficiência. ”

[Tanenbaum, 1997]

O formato do cabeçalho de extensão hop-by-hop (jumbogramas) pode ser visto a seguir:

Linux: Datagramas

Destination Options

Este cabeçalho é identificado pelo valor 60 no campo “Next Header”, este cabeçalho deve ser processado apenas pelo host de destino.

Ele é utilizado no suporte ao mecanismo de mobilidade ao IPv6, através da opção Home Address que contém o IP de origem do host móvel, quando está em trânsito.

Routing

Este cabeçalho é identificado pelo valor 43 no campo “Next Header” e exibe um ou mais roteadores, que devem ser visitados no caminho para o destino.

O formato do cabeçalho routing, pode ser visto a seguir:

Linux: Datagramas

“ Os primeiros bytes do cabeçalho de extensão de roteamento contêm quatro inteiros de 1 byte: o primeiro byte indica o próximo cabeçalho, o segundo o tipo de roteamento, o terceiro os números de endereços presentes nesse cabeçalho (1 a 24) e o quarto, o índice do próximo endereço a ser visitado. O último campo começa em 0 e é incrementado a medida que cada endereço é visitado.

Em seguida, vem um byte reservado seguido de um mapa de bits (bit map) com bits para cada um dos 26 possíveis endereços IPv6 que o sucedem. Estes bits mostram se cada endereço deve ser visitado diretamente depois do que o antecede (roteamento rígido na origem) ou se outros roteadores podem vir entre eles (roteamento flexível na origem). ”

[Tanenbaum, 1997]

Fragmentation

Este cabeçalho é identificado pelo valor 44 no campo “Next Header”, e é utilizado quando o tamanho do pacote é maior do que o MTU – Unidade máxima de transferência em um meio físico.

“ No IPv6 ao contrário do IPv4, apenas o host de origem pode fragmentar o pacote. Os roteadores ao longo do caminho não podem fazê-lo, embora represente uma grande ruptura com o passado, este recurso simplifica o trabalho dos roteadores e faz com que o roteamento seja mais rápido.

Como já dissemos, se um roteador for confrontado com um pacote muito grande, ele o descartará e reenviará um pacote ICMP para a origem. ”

[Tanenbaum, 1997]

Authentication Header e Encapsulating Security Payload

Estes dois cabeçalhos de extensão são identificados pelos valores 51 e 52 nos campos “Next Header” e fazem parte do cabeçalho IPsec.

O funcionamento do IPsec é o mesmo tanto na versão IPv4 quanto IPv6, mas a implementação e utilização foi facilitada na versão IPv6, pois os principais elementos do IPsec está integrada na versão do datagrama IPv6.

Conclusão

Na minha opinião, existem muitos assuntos ligados ao Protocolo IPv6, e a Camada de Internet na arquitetura TCP/IP, por isso, uma série deles deixaram de ser explorados, como os protocolos ARP, RARP e ICMP.

E também, os protocolos de rotemento OSPF (Open Shortest First) e o BGP (Border Gateway Protocol), devido à importância de cada um e a extensão do artigo.

E viva o kernel !!!

Udev – Funcionamento e Regras

 Linux, Redes, Sistemas de Armazenamento  Comentários desativados em Udev – Funcionamento e Regras
maio 302013
 
Detecção e ativação de dispositivos e a função do udev nesse processo

Introdução

Udev (Userspace devfs) é um sistema de arquivos presente desde o kernel 2.6 e substitui o devfs completamente.

É responsável por gerenciar os arquivos de dispositivos do diretório /dev, criando e removendo os mesmos dinamicamente. O udev também tem função do hotplug, trabalhando em conjunto com o HAL (Hardware Abstraction Layer), adicionando os dispositivos conforme são instalados na máquina. Sem ele, seria impossível acessar seu pendrive, webcam e impressora, por exemplo, quando conectados.

Funcionamento

Entendendo como os dispositivos são detectados e adicionados no sistema GNU/Linux.

O sistema GNU/Linux faz uso do kernel e de serviços para detectar e adicionar dispositivos ao sistema, para que os mesmos fiquem disponíveis para uso do usuário e do próprio sistema.

Abaixo, é mostrada a hierarquia no processo de detecção e adição de dispositivos:

Linux: Udev - Funcionamento e Regras

Como visto na figura acima, existe todo um processo até os dispositivos estarem disponíveis para uso do sistema e/ou usuários, que vai desde a detecção do device pelo kernel até a criação de um arquivo de dispositivo no diretório /dev pelo udev.

Todo processo começa com o kernel detectando os dispositivos e exportando informações sobre os mesmos para o sistema de arquivos virtual Sysfs (que está montado no diretório /sys) e ao mesmo tempo, enviando um evento para o daemon do serviço udev.

O evento informa ao udev uma ação no dispositivo, esta ação pode ser um adição, remoção ou alteração de um dispositivo conectado à máquina.

Quando o udev é informado pelo kernel sobre o evento, trata de usar as informações do diretório /sys para identificar o device conectado, carregar o módulo correto e criar um arquivo especial no diretório /dev com exceção da placa de rede que é tratada no kernel.

Aí você pergunta: E o HAL?

Simples, o HAL é um serviço que informa aos programas do sistema se um dispositivo está disponível, foi alterado ou removido a todo tempo.

Na verdade, o HAL já não é essencial para este trabalho, pois algumas distribuições atualmente, conseguem fazer todo este trabalho somente pelo udev, ou em conjunto com o serviço D-Bus. No entanto, para outras distribuições, isso torna-se essencial.

É importante destacar que todo este processo de detectar e ativar os devices explicado anteriormente, não só acontece em Hotplug, ou seja, os dispositivos são instalados com o sistema em uso, mas também em Coldplug, os dispositivos são conectados (instalados) com a máquina desligada e o sistema, quando em uso, detecta-os.

Observe que quem realmente faz o trabalho de hotplug, é o udev.

Os arquivos de dispositivos criados no diretório /dev nada mais são que arquivos especiais, obtidos pela combinação de dois endereços do kernel, um chamado de major number e outro de minor number.

Sendo que:

  • major number → É usado para identificar uma categoria de dispositivos.
  • minor number → Identifica o dispositivo.

Veja na figura abaixo, um exemplo destes números:

Hierarquia dos dispositivos e chaves do udev

Hierarquia dos dispositivos

Antes de começar a trabalhar com regras no udev, é necessário saber como o kernel representa os dispositivos em sua estrutura. O kernel do Linux organiza e representa os dispositivos conectados à máquina em uma estrutura de árvore, ou seja, existe uma hierarquia onde cada device é “filho” de um device “pai”.

Toda esta estrutura está exposta no diretório /sys contendo informações de cada device. Para poder ter mais detalhes sobre os devices, use o comando udevadm e poderá ver todas as chaves dos dispositivos.

Veja o exemplo do arquivo de dispositivo /dev/usb/lp0 da minha máquina, que representa a impressora, rodando o comando abaixo como root:

# udevadm info -a -p $(sudo udevadm info -q path -n /dev/usb/lp0)

A saída do comando mostra bem a organização e hierarquia do device. Sendo que /dev/usb/lp0 é filho do device “usb”, e neste device o kernel nomeia-o de “lp0”, justamente o nome dado pelo udev, que por sua vez é filho do device pai, também chamado de “usb” e o kernel nomeia-o de “2-2:1.1”, carregando o driver “usblp”, que por sua vez é filho do device “pci” e o kernel nomeia-o neste subsistema de “0000:00:1d.0”, carregando o driver “uhci_hcd”.

Veja o exemplo do arquivo de dispositivo /dev/sda que representa o primeiro disco rígido da minha máquina:

# udevadm info -a -p $(sudo udevadm info -q path -n /dev/sda)

O device /dev/sda nesta hierarquia, é filho do device “block”, ou seja, é um dispositivo de bloco e o kernel nomeia-o de “sda”, que por sua vez, é filho do device chamado de “scsi”, e o kernel nomeia-o de “0:0:0:0”, carregando o driver “sd”, que por sua vez é filho do device chamado também de “scsi”, e o kernel nomeia-o de “target0:0:0”.

Observe que, na hierarquia mostrada na saída do comando udevadm, os devices de baixo são pais dos de cima “filhos”.

As chaves do udev

Chaves no udev são informações de dispositivos e podem ser classificadas em dois tipos, existindo as chaves de combinação e de atributos. Ambas serão abordadas a seguir, e o seu uso torna-se necessário para aplicar as regras do udev.

As chaves de combinação mais usadas, são as listadas abaixo:

  • KERNEL → Esta chave informa o nome atribuído pelo kernel ao dispositivo em questão;
  • SUBSYSTEM → Chave que informa o tipo de dispositivo, seja o dispositivo pai ou filho;
  • DRIVER → Chave que informa o driver para o dispositivo;
  • ATTR → Esta chave tem informações adicionais sobre o dispositivo;
  • OWNER → Usuário que será o proprietário do dispositivo criado no /dev;
  • GROUP → Grupo do dispositivo criado no /dev;
  • MODE → Atribui a umask padrão para o dispositivo criado em /dev.

Além das chaves de combinação já vistas, é possível usar outras descritas abaixo:

  • NAME → Esta chave contém o nome que será usado para o dispositivo;
  • SYMLINK → Nesta chave, configura-se um link simbólico;
  • RUN → Adiciona um programa que será executado;
  • ACTION → Ação do evento do dispositivo, se o dispositivo está sendo conectado, removido ou alterado.

Chaves de combinação KERNELS, SUBSYSTEMS e DRIVERS, contêm informações similares às chaves de combinação apresentadas acima, no entanto, estas chaves de combinação são usadas em dispositivos pais (parent devices).

As chaves de atributo ATTR, contêm informação adicional a um dispositivo e a chave de atributo ATTRS é similar a ATTR, no entanto, é usada em devices pais (parent devices).

A observação é que em uma regra, não pode ser atribuído mais de uma chave de atributo e/ou de combinação de dispositivos “pai” (device parent) junto à chave de combinação “filho” e nem combinar chaves de atributos de diferentes dispositivos pais em um único dispositivo pai. Caso isso aconteça, a regra não irá funcionar.

Para a regra funcionar, podemos colocar uma ou mais chaves de combinação “filho” seguida de uma chave de atributo ou de combinação “pai” na mesma regra e/ou, caso queira atribuir mais de uma chave de atributo “pai”, é necessário informar o dispositivo a qual ela pertence, basta usar a chave de combinação “pai” SUBSYSTEMS.

Se ficou confuso, na próxima página irei exemplificar para ter um melhor entendimento.

Para aplicar as regras, além das chaves já mencionadas, podemos fazer uso de strings e é necessário usar operadores. Veja abaixo as strings e operadores que podemos usar.

Strings que podem ser usadas nas regras:

  • * → Corresponde a tudo naquela posição (é similar ao coringa asterisco).
  • ? → Qualquer caractere naquela posição.
  • [] → Corresponde a qualquer caractere especificado dentro dos colchetes.

    Por exemplo, a sequência de caracteres ‘tty[SR]’ iria corresponder tanto ‘ttyS’ quanto a ‘ttyR’. Você pode também especificar intervalos usando a faixa através do caractere ‘-‘. Se o primeiro caractere após o ‘[‘ é um ‘!’, há uma exceção.

Operadores mais usados nas regras:

  • == → Compara se é igual (atribui uma valor de igualdade);
  • != → Compara se é diferente (atribui um valor de diferença);
  • = → Atribui um valor à chave (é usado quando se quer mudar o nome do device, por exemplo);
  • += → Adiciona um valor à chave e pode manter uma lista de entradas – Pode, por exemplo, usar na chave RUN e especificar vários comandos.

Depois de toda esta explicação, vamos começar a aplicar as regras na próxima página.

Regras do udev

O udev é muito poderoso quanto à aplicação das regras, pois permite desde nomear um dispositivo até executar aplicações, e/ou scripts quando conectamos ou desconectamos, ou quando o dispositivo é alterado.

Para aplicar tais regras, é necessário ter informações obtidas através das chaves de cada device.

Os arquivos que contém as regras do udev estão contidos no diretório /etc/udev/rules.d e devem ter a extensão “.rules”, caso algum arquivo dentro do diretório não use essa extensão, o seu conteúdo não será processado.

Eles são lidos em ordem numérico alfabética, por exemplo: se dentro do diretório /etc/udev/rules.d, temos os arquivos “025_usb- regras.rules” e “035_usb-regras.rules”, o arquivo “025_usb-regras.rules” será lido antes que o “035_usb-regras.rules”.

Agora, sintaxe das regras e exemplos de regras que funcionam e não funcionam.

Cada arquivo com extensão “.rules” tem regras que seguem a seguinte sintaxe:

<chave de combinação>, <chave de combinação e ou chave de atributo>, <Ação>

Para obter as informações de cada chave dos devices, usamos o comando udevadm para pegar um relatório.

Não vou entrar em detalhes de uso do comando, mas deixo o link para o manual:

Será usado, para extrair o relatório, a opção “info” que é utilizada para obter informações e “-p”, que indica a localização do dispositivo, e “-a” irá listar informações das propriedades do dispositivo.

Vou listar as propriedades do arquivo de dispositivo /dev/sdc1 que é meu pendrive da SanDisk, usando o comando udevadm como root:

# udevadm info -a -p $(udevadm info -q path -n /dev/sdc1)

looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host4/target4:0:0/4:0:0:0/block/sdc/sdc1':
  KERNEL=="sdc1"
  SUBSYSTEM=="block"
  DRIVER==""
  ATTR{partition}=="1"
  ATTR{start}=="2048"
  ATTR{size}=="7852032"
  ATTR{ro}=="0"
  ATTR{alignment_offset}=="0"
  ATTR{discard_alignment}=="0"
  ATTR{stat}=="      54      112      426       36        5        1       48        0        0       36       36"
  ATTR{inflight}=="       0        0"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host4/target4:0:0/4:0:0:0/block/sdc':
  KERNELS=="sdc"
  SUBSYSTEMS=="block"
  DRIVERS==""
  ATTRS{range}=="16"
  ATTRS{ext_range}=="256"
  ATTRS{removable}=="1"
  ATTRS{ro}=="0"
  ATTRS{size}=="7856127"
  ATTRS{alignment_offset}=="0"
  ATTRS{discard_alignment}=="0"
  ATTRS{capability}=="51"
  ATTRS{stat}=="     251     1491     2002      216        5        1       48        0        0      216      216"
  ATTRS{inflight}=="       0        0"
  ATTRS{events}=="media_change"
  ATTRS{events_async}==""
  ATTRS{events_poll_msecs}=="-1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host4/target4:0:0/4:0:0:0':
  KERNELS=="4:0:0:0"
  SUBSYSTEMS=="scsi"
  DRIVERS=="sd"
  ATTRS{device_blocked}=="0"
  ATTRS{type}=="0"
  ATTRS{scsi_level}=="0"
  ATTRS{vendor}=="SanDisk "
  ATTRS{model}=="Cruzer Blade"
  ATTRS{rev}=="8.02"
  ATTRS{state}=="running"
  ATTRS{timeout}=="30"
  ATTRS{iocounterbits}=="32"
  ATTRS{iorequest_cnt}=="0x2763"
  ATTRS{iodone_cnt}=="0x2763"
  ATTRS{ioerr_cnt}=="0x19"
  ATTRS{modalias}=="scsi:t-0x00"
  ATTRS{evt_media_change}=="0"
  ATTRS{queue_depth}=="1"
  ATTRS{queue_type}=="none"
  ATTRS{max_sectors}=="240"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host4/target4:0:0':
  KERNELS=="target4:0:0"
  SUBSYSTEMS=="scsi"
  DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host4':
  KERNELS=="host4"
  SUBSYSTEMS=="scsi"
  DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0':
  KERNELS=="1-8:1.0"
  SUBSYSTEMS=="usb"
  DRIVERS=="usb-storage"
  ATTRS{bInterfaceNumber}=="00"
  ATTRS{bAlternateSetting}==" 0"
  ATTRS{bNumEndpoints}=="02"
  ATTRS{bInterfaceClass}=="08"
  ATTRS{bInterfaceSubClass}=="06"
  ATTRS{bInterfaceProtocol}=="50"
  ATTRS{modalias}=="usb:v0781p5567d0200dc00dsc00dp00ic08isc06ip50"
  ATTRS{supports_autosuspend}=="1"

Veja que não postei toda a saída do comando pois é muito longa. Agora, abaixo mostro duas regras:

ACTION==”add”, SUBSYSTEM==”block”, KERNEL==”sd??”, ATTRS{vendor}==”SanDisk”, DRIVERS==”usb-storage”, SYMLINK+=”PENDRIVE”
ACTION==”add”, SUBSYSTEM==”block”, KERNEL==”sd??”, ATTRS{vendor}==”SanDisk”, SYMLINK+=”PENDRIVE”

Ambas as regras têm a ação de criar um link para a partição do pendrive. No entanto, somente a segunda regra irá funcionar.

Explicação da primeira regra:

  • 1º → É conferido se o dispositivo que está sendo conectado;
  • 2º → É conferido se o dispositivo conectado é do tipo bloco (armazenamento), ou seja, se filho do dispositivo de bloco;
  • 3º → É conferido se o nome do dispositivo atribuído pelo kernel na chave de combinação KERNEL “filho” é igual a o informado na regra;
  • 4º → Verifica em um dos atributos “pais” se existe o atributo com valor SanDisk, isso garante que a regra só será executada se o pendrive for do fabricante SanDisk;
  • 5º → Verifica se o driver carregado em um dos devices parents é igual ao especificado;
  • 6º → Caso tudo esteja certo na regra, o link chamado PENDRIVE é atribuído à partição do pendrive.

Mesmo toda informação conferindo na primeira regra, não pode funcionar, pois foi atribuído junto à chave de combinação do dispositivo filho (como já foi informado na segunda página), uma chave de atributo (ATTRS) e outra de combinação (DRIVERS) de dispositivos “pais”.

Deixo mais uma vez claro, que a regra não irá funcionar caso seja atribuído mais de uma chave de atributo ou de combinação de um parent device junto à uma chave de combinação de um device filho.

A segunda regra tem quase todos as chaves da primeira regra, com exceção da chave de combinação DRIVERS de um dispositivo pai. E esta regra irá funcionar por que apenas uma chave, seja de atributo ou de combinação (no exemplo, uma foi de atributo) de dispositivo pai está atribuída junto às chaves de combinação do dispositivo filho que são ACTION, SUBSYSTEM e KERNEL.

Agora, veja um exemplo de regra usada para executar um script:

ACTION==”add”, SUBSYSTEM==”block”, KERNEL==”sd??”, SUBSYSTEMS==”usb”, RUN+=”/usr/local/bin/usb-mount.sh”

Veja que esta regra é similar às duas mostradas anteriormente. No entanto, o valor atribuído à chave de combinação SUBSYSTEM do dispositivo filho, indica que deve ser aplicada a um dispositivo de bloco, ou seja, de armazenamento.

E a chave de combinação (do device parent) SUBSYSTEMS, indica que a regra só será aplicada a dispositivos pais do tipo USB; dessa forma, a regra só será aplicada a um pendrive, HD externo e/ou cartão de memória, e não a discos rígidos internos, por exemplo.

Veja abaixo, o conteúdo do script /usr/local/bin/usb-mount.sh:

#!/bin/bash
usb="/dev/"$(ls -1 /sys/block/"$(ls -1 /sys/block |grep sd |tail -1)" |grep sd |tail -1)""
tipo=$(blkid -o list "$usb" |awk -F" " '{print $2}' |tail -1)
label=$(blkid -o list "$usb" |awk -F" " '{print $3}' |tail -1)
dir="/media/"$label""
[ -d "$dir" ]&& sleep 1 || mkdir "$dir"
if [ "$tipo" = "ext3" ];then
mount -t "$tipo" -o relatime,noexec,rw,nodev,user "$usb" "$dir"
elif [ "$tipo" = "ext4" ];then
mount -t "$tipo" -o relatime,noexec,rw,nodev,user "$usb" "$dir"
elif [ "$tipo" = "vfat" ];then
mount -t "$tipo" -o relatime,noexec,rw,user,umask=0022,uid=1000,gid=1000 "$usb" "$dir"
elif [ "$tipo" = "ntfs" ];then
mount -t ntfs-3g -o relatime,noexec,rw,user,umask=0022,uid=1000,gid=1000 "$usb" "$dir"
elif [ "$tipo" = "xfs" ];then
mount -t "$tipo" -o relatime,noexec,rw,nodev,user "$usb" "$dir"
elif [ "$tipo" = "jfs" ];then
mount -t "$tipo" -o relatime,noexec,rw,nodev,user "$usb" "$dir"
elif [ "$tipo" = "btrfs" ];then
mount -t "$tipo" -o relatime,noexec,rw,nodev,user "$usb" "$dir"
fi

A finalidade do script é montar o pendrive, HD externo ou cartões de memória desabilitando a execução de executáveis, dando mais segurança quando “espetar” um destes dispositivos na máquina (afinal, nunca se sabe o que pode ter em um HD externo ou pendrive de alguém, não é verdade?) evitando a execução de vírus e outras pragas.

Podemos também renomear dispositivos como placas de rede. Para ver como fazer isso, veja a saída do comando udevadm para o dispositivo Wlan0 e em seguida, irei mostrar uma regra para isso:

# udevadm info -a -p /sys/class/net/wlan0

looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/net/wlan0':
  KERNEL=="wlan0"
  SUBSYSTEM=="net"
  DRIVER==""
  ATTR{addr_assign_type}=="0"
  ATTR{addr_len}=="6"
  ATTR{dev_id}=="0x0"
  ATTR{ifalias}==""
  ATTR{iflink}=="5"
  ATTR{ifindex}=="5"
  ATTR{type}=="1"
  ATTR{link_mode}=="1"
  ATTR{address}=="00:1a:3f:7c:2e:f4"
  ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
  ATTR{carrier}=="0"
  ATTR{dormant}=="0"
  ATTR{operstate}=="down"
  ATTR{mtu}=="1500"
  ATTR{flags}=="0x1003"
  ATTR{tx_queue_len}=="1000"
  ATTR{netdev_group}=="0"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0':
  KERNELS=="1-8:1.0"
  SUBSYSTEMS=="usb"
  DRIVERS=="ath9k_htc"
  ATTRS{bInterfaceNumber}=="00"
  ATTRS{bAlternateSetting}==" 0"
  ATTRS{bNumEndpoints}=="06"
  ATTRS{bInterfaceClass}=="ff"
  ATTRS{bInterfaceSubClass}=="00"
  ATTRS{bInterfaceProtocol}=="00"
  ATTRS{modalias}=="usb:v0CF3p7015d0202dcFFdscFFdpFFicFFisc00ip00"
  ATTRS{supports_autosuspend}=="0"

O adaptador USB está recebendo este nome de “wlan0” porque, quando o sistema o detectou, o udev atribuiu a regra abaixo:

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1a:3f:7c:2e:f4″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″

Mas, com estas informações da saída do comando udevadm podemos mudar o nome do device para, por exemplo, Wireless0 como mostra a regra abaixo:

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1a:3f:7c:2e:f4″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”*”, NAME=”wireless0″

Explicando a regra:

  • 1º → É verificado se o dispositivo filho conectado é do tipo net (rede);
  • 2º → Verifica se o dispositivo acabou de se conectado;
  • 3º → Na chave de combinação DRIVERS informa que pode ser usado qualquer driver para o respectivo device parent;
  • 4º → Na chave de atributo ATTR{address} é verificado o endereço MAC address do device;
  • 5º e 6º → São verificados mais duas chaves de atributos da mesma (note que ambas foram atribuídas junto ao dispositivo filho, por isso a regra funciona);
  • 7º → Na chave KERNEL é verificado qual o nome atribuído pelo kernel, no exemplo informei que pode ser qualquer um;
  • 8º → Na última chave de combinação informei o novo nome do dispositivo que é wireless0.

Podemos fazer muitas personalizações, além das quais já foram mostradas, podemos, por exemplo, automatizar um processo de backup toda vez que o dispositivo for conectado à máquina de forma similar à regra acima, que executa um script.

Após aplicar uma regra em um dos arquivos com extensão “.rules”, torna-se necessário reiniciar o serviço do udev para as alterações entrarem em vigor (pelo menos nas distribuições Debian e CentOS, por exemplo).

Instalando e arredondando o Slackware 13.1

 Clusterweb, Desktop, Linux  Comentários desativados em Instalando e arredondando o Slackware 13.1
maio 302013
 
Introdução e justificativa

Antes de começar este artigo propriamente dito, gostaria de fazer algumas considerações muito importantes. Quando eu decidi escrever sobre o Slackware, já sabia da enormidade do desafio que eu estaria enfrentando, pois escrever sobre a distro mais tradicional dentre todas as distribuições Linux existentes é uma grande responsabilidade. Mas eu prefiro ver esse momento por uma ótica muito mais positiva, vejo-o como uma oportunidade e como um presente que os meus erros e acertos no mundo Linux me proporcionaram.

Eu procuro trazer os tutoriais e dicas muito bem mastigadinhos, pois enquanto escrevo, penso em um público-alvo específico, ou seja, um público composto por usuários iniciantes (como é o meu caso) ou completamente leigos em Slackware ou Linux em geral. Espero que esse fato seja o principal incentivador para que você se proponha a conhecer essa distro maravilhosa. Você não precisa ser programador nem experiente com a linha de comando para experimentar, e se gostar, passar a usar o Slack em seu dia a dia.

Outra coisa muito importante que eu gostaria de salientar é que eu não tenho por objetivo esgotar o assunto “Slackware”, pois como eu já disse acima, ainda estou engatinhando no mundo Linux, por isso este artigo vai lhe ajudar a conhecer o Slackware, mas com certeza não irá suprir todas as suas necessidades, e o resto ficará por sua conta.

Eu não poderia esquecer, também, que já existem excelentes artigos, dicas e tutoriais aqui mesmo no VOL, ou em diversos outros sites, que falam sobre o mesmo assunto do que este que escrevo. Por isso, para lhe dar alternativas de escolha e homenagear seus autores, faço questão de linká-los pra você no momento certo.

No mais, espero que você esteja preparado. Esteja disposto a conhecer o Linux em suas entranhas, pois a partir de agora você embarcará na nossa Enterprise e fará uma viagem fascinante através da distro mais desafiadora que existe.


Este é o logo do Slackware

Porque o Slackware?

O Slackware é a distribuição Linux mais antiga ainda em ação. Isso é muito importante, pois isso é sinônimo de maturidade e de lucidez. Fiel a uma filosofia purista e conservadora, o Slack (assim, carinhosamente chamado) tem como principal foco, a simplicidade. Essa característica o torna uma das distros mais estáveis e personalizáveis que existem. O usuário que vem de uma distro mais friendly-user, como o Ubuntu, pode não conseguir assimilar esses conceitos de imediato, mas as experiências que o Slack proporciona, falam por seu nome.

Pra se ter uma ideia das possibilidades de personalização do Slack, você pode escolher criteriosamente quais pacotes instalar e desinstalar, sem se preocupar com dependências, tanto que se você quiser desinstalar o próprio kernel do sistema (eu nunca me canso de usar esse exemplo), você poderá fazê-lo tranquilamente, sem nenhum aviso de alerta lhe torrando a paciência. É claro que com grandes poderes, sempre vem grandes responsabilidades, pois se você fizer o que acabou de ler com seu Slack, você vai detonar o seu sistema.

Mas é justamente por isso, que o Slackware possui tantos fãs, com ele você terá a chace de conhecer o Linux como nunca pode conhecer; até então! Tudo vai depender apenas da sua vontade.


Este é o mascote oficial do Slack, o Tux com um cachimbo (o que será que tem nesse cachimbo? rsrsrsr)

Mas eu acho este mascote, não oficial, muito mais maneiro 🙂

Mas… Será mesmo que o Slack é pra mim?

Essa é a pergunta de muitos, que não conhecem o Slackware, principalmente daqueles que, apenas, ouvem falar sobre ele, ou leem relatos e artigos opinativos sobre essa distro. Tudo isso, acaba por criar uma certa mística ao redor do seu nome, que infelizmente tem o poder de assustar potenciais usuários.

Mas é justamente para combater essa ideia errônea que existe a comunidade do Viva o Linux, temos a missão de tornar o Linux mais humano e mais acessível do que já é. Eu próprio já julguei o Slack de uma maneira muito errada, sempre acreditei que ele seria uma experiência dolorosa pra um Ubunteiro de carteirinha. Pré-conceituava os Slackers (como são chamados, os seus usuários) como seres dotados de uma sabedoria superior, montados em um ego carregado de arrogância e indiferença para com os esperneios dos newbies (novatos).

Pra mim, tudo mudou a partir do momento que eu dei o primeiro passo. Antes de tudo, criando coragem para encarar a minha primeira instalação de um sistema através do modo texto. Logo vieram os primeiros insucessos, os primeiros erros e as amargurantes dúvidas, acompanhados de um temor gélido, em perguntar aos usuários mais experientes, quais eram os meus erros, onde estavam minhas falhas… Porém a impetuosa necessidade de aprender me forçou a postar a minha primeira pergunta aqui na Comunidade Slackware do VOL. E qual não foi a minha surpresa ao ver que: Sim!!!!!!!!! Os Slackers são humanos, e o melhor de tudo, são muito camaradas e solícitos com os iniciantes, além do fato de a sua comunidade ser uma das mais eficientes e unidas deste Site.

Dentro de pouco tempo, vi que o Slack exige, sim, bastante dedicação, mas isso não significa a impossibilidade de aprender a usá-lo. Essa foi a deixa para que eu tornasse o Slackware, a minha distro padrão por algum tempo. Hoje ela divide meu coração com o amigável Ubuntu (que contraste né?).

E foi com essa ideia na cabeça que eu resolvi escrever este artigo. Por isso mesmo eu não tenho o menor receio de dizer com toda a convicção que “Sim, o Slackware é pra você!!!”.

Te convido a vir para o lado negro da força, vestir a farda preta do BOPE e preparar-se para uma experiência tão nova quanto empolgante!


Este é Patrick Volkerding, nerd responsável pela existência dessa distro supimpa

Mas vamos parar de lero-lero e vamos botar a mão na massa, temos muito trabalho pela frente, mas se você for perseverante vai superar tudo com os pés nas costas. Estás pronto? Ok, então passe para a próxima página deste artigo.


Ela é ou não é, bem mais “bacaninha”?
Por onde começar?

Bom, esse é o primeiro passo: por onde começar? Obviamente que é adquirindo o Slackware. Para isso existem vários procedimentos, veja abaixo qual deles é mais adequado à sua realidade.

1. A primeira opção é comprar o DVD do Slackware, para isso eu recomendo o site store.slackware.com/cgi-bin/store (se alguém conhece mais algum bom site, ou algum site de que, cujas vendas, o mantenedor do Slackware, Patrick Volkerding, receba alguma porcentagem, por favor poste o link nos comentários, pois essa é uma ótima maneira de contribuir para com o crescimento do projeto).

2. A segunda opção, uma das minhas favoritas, é através do torrent:

Baixar através do torrent pode ser bastante vantajoso, pois o risco de acontecer algum erro no download é menor.

3. Mas nem sempre é possível baixar através do torrent, ou por falta de compartilhamento de outros usuários, ou pode acontecer de você estar em uma rede onde o torrent é bloqueado (faculdades, escolas, redes públicas, empresas etc). Nesse caso você pode baixar o Slackware, também, através dos links oficiais:

Esse método só é eficaz se você ter acesso à internet de alta velocidade, pois existe um risco muito grande de dar erro no download, que muitas vezes, pode forçá-lo a ter que reiniciá-lo.

NOTA IMPORTANTE: É claro que sempre é bom baixar o DVD do Slackware (ao invés dos CDs), pois isso faz com que seja mais fácil de guardá-lo, de copiá-lo e de instalá-lo. Mas exitem grandes vantagens em baixar o Slack em forma de CDs, e vou explicar o porque disso:

a) Primeiramente, porque torna o processo de download mais seguro para quem tem uma internet lenta, pois caso dê erro em um dos CDs, você não precisará baixar tudo de novo, apenas o CD que está com problema, ou cujo download falhou.

b) Se você não é programador, e não entende bulhufas de códigos fontes, você precisará baixar apenas os três primeiros CDs, onde estão os pacotes compilados para o Slackware, já que os três últimos CDs, possuem apenas os códigos fontes do programas.

c) O Slackware, traz em sua instalação full, várias interfaces gráficas. Entre elas estão: KDE, Xfce e Fluxbox. Se por algum motivo, você não quiser usar o KDE, como ambiente gráfico, será necessário baixar apenas os dois primeiros CDs, já que o terceiro CD, possui apenas o KDE e o KDEI (pacote de idiomas para o KDE).

4. O último método para obter o Slackware é um pouco mais complicadinho, mas é excelente, para quem tem internet lenta, ou para quem gosta de ter um DVD totalmente personalizado do Slack (viu só, a flexibilidade e a personalização do Slack pode começar antes mesmo de baixá-lo rsrsrsrsrsrs).

Você deverá abrir o seguinte link:

Neste link você encontrará todos os arquivos que viriam em um DVD padrão do Slackware 13.1, assim sendo você poderá baixar apenas os pacotes que desejar. Outra vantagem é que você poderá ir baixando tudo de forma intermitente e fragmentada, pasta por pasta. Isso diminui ainda mais as chances de dar erro. Esse procedimento exige um pouco mais de conhecimento, pois é necessário saber o que cada pacote faz, além do fato de que, se você deixar de baixar algum pacote fundamental, o resultado final será um CD/DVD ou um sistema que simplesmente não funciona.

Eu fiz um teste baixando esses pacotes, porém deixando de fora a pasta “sources” (que acredito ser a pasta que contém apenas os códigos fontes dos programas) e as subpastas “KDE” e “KDEI” (em quais encontram-se a interface gráfica KDE e os pacotes de idiomas para a mesma. Essas duas subpastas, estão dentro do diretório Slackware). Com isso, consegui criar um DVD com apenas 1,2 GB, o que já é uma grande diferença para o tamanho do DVD padrão do Slackware 13.1 que possui um tamanho aproximado de 4 GB, no final do teste tudo funcionou direitinho.

Ensinarei agora como proceder para baixar os pacotes e gerar uma ISO bootável com eles:

Primeiro, abra o link em seu navegador favorito. Note que existe alguns arquivos “soltos”, fora das pastas; é muito simples baixar esses arquivos, pois basta clicar sobre eles e fazer o download, ou usar um programa como o Downthemall para baixá-los todos de uma vez. Mas não os baixe agora, vamos baixá-los por último.

Existe também, algumas pastas, que contém mais arquivos e subpastas, desse modo ficaria muito complicado baixar todos, clicando sobre cada arquivo. Por isso para fazer o download dos arquivos dessas pastas, vamos usar o Wget.

Vamos começar baixando as pastas de baixo pra cima, pra isso abra um terminal e digite o seguinte:

$ wget -r -c ftp://ftp.slackware-brasil.com.br/slackware-13.1/usb-and-pxe-installers/

Veja que esse comando irá baixar os arquivos que estão dentro da pasta “usb-and-pxe-installers” inclusive suas subpastas com seus arquivos. Além disso, também criará toda a árvore de diretórios, pra você, no seu disco rígido (inclusive a pasta Slackware 13.1, onde você deverá guardar os arquivos “soltos” citados acima, quando baixá-los posteriormente), logo você não precisa se preocupar em escolher onde salvar os arquivos que baixar.

Detalhe: não se preocupe se o download parar, ou se der alguma queda de conexão, pois basta que você repita o comando mostrado acima, e o download continuará de onde parou.

Pois bem, o resto dos downloads é com você. Se você acha que tem conhecimento suficiente para fazer uma seleção criteriosa dos pacotes, vá em frente e divirta-se. Pois essa e a melhor maneira que eu conheço, para se obter uma distro totalmente personalizada.

Caso você queira conhecer o wget melhor, clique no seguinte link:

Depois de baixar os pacotes desejados, é necessário criar uma imagem ISO bootável com eles. Isso é muito simples, então abra um terminal, e vamos entrar na pasta onde os arquivos foram salvos:

$ cd ftp.slackware-brasil.com.br
$ cd slackware-13.1

Agora que estamos dentro da “pasta pai” dos arquivos do Slackware, rode o seguinte comando para criar a imagem ISO (Esse comando deve ser copiado e colado inteiro no terminal, inclusive com o . (ponto) no final, pois ele não é uma pontuação da frase, mas também faz parte do comando):

$ mkisofs -o /tmp/slackware-dvd.iso \
-R -J -A “Slackware Install” \
-hide-rr-moved \
-v -d -N \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-sort isolinux/iso.sort \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot \
-V “SlackDVD” .

O comando indicado acima, criará dentro da sua pasta “tmp”, uma imagem ISO com o nome “slackware-dvd.iso”. Agora, você já pode guardar essa imagem em uma pasta de sua preferência e queimá-la em um DVD com o seu queimador de mídias favorito.

“Quibei” daqui:

E daqui:

Preparativos para a instalação do Slackware

Antes de começar…

Eu dei uma boa relutada em colocar um tutorial sobre a instalação do Slackware neste artigo, pois já existem alguns artigos muito bons na internet, inclusive aqui no VOL, sobre esse assunto. Então eu poderia, apenas linkar alguns tutoriais, mas minha intenção é facilitar o máximo, a vida do leitor, por isso decidi que não custa nada mostrar o passo a passo da instalação do Slackware 13.1 aqui. Além do mais, não tenho a intenção de disputar com nenhum outro autor, quero apenas ajudar aos linuxers que querem conhecer essa distro tão amada.

Porém, apesar de eu escrever o meu próprio tutorial, faço questão de linkar alguns artigos, tanto para lhe dar mais opções de escolha, quanto para prestigiar os seus autores.

O primeiro link leva a um artigo bem compacto sobre a instalação do Slackware 13.0 através dos CDs:

Já os próximos artigos são primorosos, pois foram escritos pelo próprio Morimoto, mas talvez por isso, possuem uma linguagem muito técnica e muito densa para um iniciante:

Os três últimos links fazem parte de uma série de artigos escritos pelo nosso companheiro Xerxes Lins, esses artigos são muito bons, pois não mostram apenas a instalação do Slackware 12.1, mas também, muitos passos, que deve-se realizar, para deixar o Slackware com a “cara do leitor”. Os links são:

Apesar de os artigos citados acima, não referirem-se à, até então, versão atual do Slackware, que é a versão 13.1, fique tranquilo, pois justamente pelo fato de o Slack ser tão tradicional, muito pouca coisa muda, de versão para versão, no processo de instalação.

Partições

Quando queremos instalar qualquer sistema operacional, devemos dedicar uma boa parte de nossa atenção à organização das partições que iremos criar em nosso disco rígido; o Slackware especialmente, pois seu particionador, assim como toda a sua instalação, se dá através do modo texto. Por isso, caso você queira instalar o Slack em dual boot, por exemplo, recomendo que antes de iniciar a instalação, você já esteja, ao menos com um espaço livre no HD, já que o CFDISK (particionador do Slackware), não redimensiona partições e não “abre” espaço no HD para que o Slack seja instalado, apenas trabalha com partições ou espaços livres já existentes. Caso você queira mais informações, sobre o particionamento correto de um HD, recomendo que dê uma conferida em um tutorial, bastante recente, do companheiro Fábio Farias:

Mas caso seja a sua primeira vez com o Slack, aconselho-o a instalá-lo usando um HD por inteiro, já que assim, podemos tornar o processo de instalação, muito mais simples, sem que seja necessária, a preparação das partições, antes do início da instalação. Caso não tenha nenhuma dúvida em relação às partições do seu disco rígido, passe para a próxima página deste artigo.

Dito tudo isso, prepare-se para uma experiência completamente nova, tenha consigo, o DVD, ou os CDs do Slackware 13.1, pois nós finalmente colocaremos a mão na massa e instalaremos o Slackware em seu computador, basta que você siga os passos a seguir. É claro que você pode, primeiro testar o Slackware através de uma máquina virtual, porém se preferir instalar em seu HD, não se esqueça de fazer um backup dos seus arquivos.

Instalando o Slackware 13.1

1. Comece colocando o CD1 ou o DVD do Slackware no drive de CD/DVD (nunca é demais salientar que a sua BIOS deve estar configurada para bootar pelo CD/DVD). Logo de cara, vai aparecer uma “tela preta cheia de letras”.

Acostume-se, pois esse será o ambiente em que iremos trabalhar, e o mais importante: Não tenha medo nem receio! Pois você verá, que não é nada complicado, na verdade, os passos são muito simples, e com o tempo serão tão intuitivos quanto qualquer instalador gráfico.

Em caso de dúvida, atente-se à dica de ouro: “Leia antes de escolher qualquer opção!” (infelizmente o processo de instalação é todo em inglês. Arrrrrgh! Mas isso não irá nos impedir de alcançar nosso objetivo):

Basta dar um Enter para completar o carregamento.

2. Quando o carregamento terminar:

Tecle 1 para escolhermos o seu tipo de teclado.

3. Aqui, você deverá escolher o leiaute do seu teclado. Lembrando que o leiaute de teclado mais usado aqui no Brasil é a opção “qwerty/br-latin1-abnt2.map”. Use as setas Up (para cima) e Down (para baixo) para escolher a opção correta e tecle Enter:

4. Essa próxima tela é o local onde você poderá testar o seu teclado, para que você tenha certeza se escolheu o leiaute correto. Você pode testar algumas teclas se quiser e caso você tenha escolhido a opção correta, tecle 1 seguido de Enter para prosseguir. Caso você tenha errado ao escolher o leiaute, tecle 2 seguido de Enter para escolher o leiaute novamente:

5. Agora precisaremos logar como root, por isso digite “root” (sem as aspas) e tecle enter. Não será necessário digitar senha, por enquanto:

6. Vamos definir as partições do seu disco rígido. Vou assumir que você está dedicando um HD inteiro para o Slackware:

Digite “cfdisk” e tecle Enter para iniciarmos o particionador.

7. Esse é o particionador do Slackware, caso o seu HD tenha sido reconhecido, a sua tela deverá estar semelhante a mostrada abaixo. Use as teclas Left (esquerda) ou right (direita) para escolher a opção “new” seguida de Enter:

8. Escolha a opção “Primary”:

9. Em “Size”, você deverá digitar, em MB, o tamanho que você quer definir para a sua partição primária. É muito importante que, caso você queira utilizar uma parte do HD como memória Swap, não esqueça de digitar uma valor menor do que esse que está aparecendo (que é o tamanho total do seu HD).

De antemão, quero lhe dizer que, se você possui um computador potente, não será necessário utilizar memória Swap (entende-se como potente, um computador que tenha algo em torno de 1 GB de RAM).

Se esse for o seu caso, basta dar um Enter para criar a sua partição primária. Mas caso você queira criar uma memória Swap, deixe um valor, sobrando, igual ao dobro da sua memória RAM:

Após digitar o valor desejado, tecle Enter.

10. Escolha “Beginning” para colocar a partição no “início” do HD e tecle Enter:

11. Escolha “Bootable” para definir sua partição primária como bootável:

Note que na descrição da sua partição primária aparecerá a palavra “boot”.

NOTA IMPORTANTE: Caso você tenha optado por não usar memória Swap, pule para o passo 18.

12. Tecle “Down” para escolher o espaço livre no seu HD, e escolha a opção “new”:

13. Escolha a opção “Logical”:

14. Como estamos usando o HD inteiro para o Slackware, basta dar um Enter para escolher o valor que já está aparecendo:

15. Escolha a opção “Type”:

16. Aqui é onde você definirá o tipo de partição que você quer:

17. Como queremos definir essa partição como Swap, você terá que escolher a opção 82, mas para isso, basta pressionar a tecla 8 que a tela ficará como a da figura seguinte:

Caso, o número 82 já esteja aparecendo, tecle Enter para confirmar.

18. Ao final do particionamento, sua tela deverá estar semelhante à mostrada a seguir:

19. Caso, a resposta seja afirmativa, escolha a opção “Write”:

20. No final da segunda linha, debaixo para cima, você deverá digitar “yes” (sem aspas), e teclar Enter, para confirmar a escrita das partições. Note que a letra “s” da palavra “yes”, não deverá aparecer, mas não se preocupe com isso.

21. Ao final de todos esses procedimentos, sua tela deverá estar com uma mensagem igual a que aparece no canto inferior da figura a seguir:

22. Após isso, escolha a opção “Quit” para sairmos do particionador.

23. Agora vamos começar a instalação propriamente dita.

Digite “setup” e tecle Enter.

24. Este é o menu de instalação do Slackware, você verá que ele é muito intuitivo. Ele não precisa necessariamente seguir uma ordem linear em seus procedimentos, você terá a chance de refazer os passos quantas vezes quiser, pra isso basta que você adquira um pouquinho de intimidade com ele, e logo logo, ele lhe parecerá tão fácil quanto qualquer instalador gráfico.

Por exemplo, nós já configuramos o teclado, mas caso você queira reconfigurá-lo, basta escolher a segunda opção, de cima para baixo. Caso você não tenha definido uma parte do seu HD como memória Swap, você poderá escolher, logo, a quarta opção e deverá pular para o passo 28 deste artigo.

Como neste tutorial, definimos uma memória swap para o sistema, escolha a opção “ADDSWAP” e tecle Enter.

25. Caso a sua memória swap tenha sido detectada e marcada com um * (asterisco), escolha OK:

26. Essa tela, lhe pergunta se você deseja verificar a existência de bad blocks, na parte do seu HD, que será usada como swap. Para facilitar o processo, escolha a opção “NO”.

27. Memória swap configurada. Escolha “OK” ( como se tivesse escolha, dããã!) e tecle Enter.

28. Aqui, é onde você deverá escolher a partição primária onde o Slackware será instalado. Como, para esse tutorial, foi definido apenas uma partição primária, só aparece a partição “/dev/sda1 Linux tamanho da sua partição”, escolha-a, seguida de “Select”:

29. Escolha a opção “Format” para formatarmos sua partição primária:

30. A próxima tela, lhe permite escolher o tipo de sistema de arquivos em que você quer formatar a sua partição primária. Atente-se para a dica de que:

O formato ext4 é mais recente, sua fragmentação é praticamente zero, porém, pelo menos até recentemente, ainda não existiam maneiras de fazer com que o sistema operacional Windows e sistemas operacionais em ext3 pudessem enxergá-lo.

Portanto, caso você deseje instalar o Slackware em dual boot com o Windows ou com algum sistema que use o formato de arquivos ext3, é recomendável que você escolha o sistema de arquivos ext3.

31. Formatação concluída, tecle Enter para confirmar:

32. Aqui deveremos escolher a fonte dos arquivos para a nossa instalação, como estamos usando o DVD ou os CDs, escolha a primeira opção, seguida de OK:

33. A próxima tela, lhe pergunta se desejas escolher o drive onde o CD/DVD de instalação se encontra, ou se deseja permitir que o instalador encontre-o automaticamente. Para que fique mais fácil pra nós, escolha a opção “auto”:

34. Agora você deverá escolher (um pouco por cima) quais pacotes você deseja instalar. Se você deseja instalar também, o ambiente gráfico KDE, não se esqueça de marcar, para a instalação, o pacote KDEI, que contém os idiomas para qual o KDE poderá ser traduzido, inclusive o português. Use as teclas “Up” e “Down” para navegar entre as opções e a barra de espaço para marcar a opção KDEI, com um * (asterisco). Porém, caso você não deseje usar o ambiente gráfico KDE, deixe os pacotes KDE e KDEI desmarcados:

Lembra do teste que eu disse que fiz, criando um DVD personalizado do Slackware, sem a pastas “source”, “KDE” e “KDEI”? Nesse caso eu teria que desmarcar o KDE e o KDEI, pois do contrário, o instalador iria me pedir o CD3, que obviamente eu não teria.

Logo após, escolha a opção “OK”.

35. A tela seguinte, também lhe possibilita fazer uma seleção de pacotes mais refinada. Mas se você é iniciante, recomendo escolher a opção “full”:

O processo de instalação levará alguns minutos.

36. Caso você esteja fazendo a instalação do Slackware através dos CDs, logo aparecerá a seguinte tela, lhe pedindo para adicionar o CD2:

Basta ejetar o CD1, inserir o CD2 e escolher “OK”.

Além disso, caso você tenha marcado os pacotes KDE e KDEI para instalação, o instalador lhe pedirá, ainda, o terceiro CD:

Mas caso você não tenha marcado os pacotes KDE e KDEI, o instalador não lhe pedirá o terceiro CD.

Caso você esteja instalando o Slackware através do DVD, a instalação ocorrerá por inteira, sem que nenhuma dessas mensagens do passo 36, lhe apareça.

37. Após a instalação dos pacotes, o instalador lhe perguntará se você deseja criar um dispositivo USB para o arranque do seu sistema. Escolha a opção “Skip” para pular essa parte:

38. Agora, devemos escolher uma forma de instalação do gerenciador de boot LILO. A terceira opção não instala o LILO, a segunda opção é uma maneira recomendada para usuários avançados, assim sendo vamos escolher a primeira opção, a opção “simple”:

39. Escolha a resolução que você deseja utilizar em sua tela, essa resolução só se aplica ao modo texto. A melhor resolução para quem está instalado o Slackware diretamente no HD é a resolução 1024x768x256, mas devo dizer antecipadamente que, caso você esteja testando o Slack através do VirtualBox, a melhor resolução é a 800x600x256.

40. Aqui, apenas escolha OK, sem digitar nada:

41. Escolha a opção “NO”:

42. A próxima tela, lhe pergunta onde você quer gravar o LILO, escolha a opção MBR:

43. Aqui é onde você deverá escolher o seu tipo de mouse, se o seu mouse tiver uma conexão PS/2 e uma rodinha, escolha a terceira opção, que é a mais comum nos dias de hoje:

44. Agora você deverá decidir se que instalar o GPM, ou não. O GPM é um programinha que lhe permite usar alguns recursos do mouse através do modo texto, escolher entre instalá-lo ou não, depende muito do fato de você querer ou não usar o sistema em modo texto. Mas, em se tratando de Slackware, nunca se sabe quando precisaremos apelar para o modo texto para resolver alguma “khda” que fizermos, por isso, por via das dúvidas, escolha “Yes”:

45. Agora é a hora de configurar sua rede e internet, mas só escolha “Yes” caso você se conecte à internet através de um cabo, com IP fixo ou dinâmico. Escolha “No” caso você se conecte à internet através de qualquer outro método, ou caso você ainda não tenha certeza de quais dados colocar, se você precisar definir um IP fixo. Caso você prefira escolher “No” para pular a configuração da rede e internet, vá para o passo 58:

46. Digite o nome da sua máquina:

47. Digite o seu domínio:

48. Defina se você vai se conectar utilizando um IP fixo, escolhendo a primeira opção (static IP), ou se você vai se conectar através de um IP dinâmico, escolhendo a segunda opção (DHCP). Caso você vá se conectar através de um IP fixo, escolha a primeira opção e pule para o passo 51:

49. Caso você tenha escolhido a opção DHCP, geralmente não é necessário digitar nada na próxima tela:

50. Confirme as opções da sua rede e escolha a opção “Yes”:

Após configurar sua rede com IP dinâmico, pule para o passo 58.

51. Agora você deverá digitar o seu número de IP (Atente-se ao fato de que os números que aparecem na figuras seguintes, são penas ilustrativos, e podem mudar de acordo com as configurações da sua rede):

52. Digite a sua máscara de rede:

53. Digite o endereço do seu gateway, que é endereço do seu roteador ou modem:

54. Agora, você deverá escolher se deseja, ou não, inserir um servidor DNS, caso a resposta seja afirmativa, pule para o passo 56. Caso não deseje inserir um DNS, escolha a opção “No”:

55. Confirme os dados da sua rede (use as teclas Up e Down para visualizar todos os dados) e prossiga escolhendo a opção “Accept”:

Após configurar a sua internet, sem a utilização de um servidor DNS, pule para o passo 58.

56. Aqui você deverá digitar um servidor DNS para a sua rede, eu particularmente recomendo o número 200.176.2.10, e eu já vi o nosso amigo André S. Rosa Júnior, recomendar o número 4.2.2.2. Pode ser que esse número varie de acordo com as configurações necessárias para a sua rede:

57. Confirme os dados da sua rede (use as teclas Up e Down para visualizar todos os dados) e prossiga escolhendo a opção “Accept”:

58. Aqui é onde onde você deverá escolher os serviços, que você deseja que iniciem junto com a sua sessão:

É recomendável que você deixe tudo como está, e escolha “OK”.

59. A próxima tela lhe pergunta se deseja configurar a fonte que você deseja utilizar quando estiver em modo texto. Mas você pode pular essa parte, clicando em “No”, pois a fonte padrão, é considerada a melhor e mais legível:

60. Escolha “NO” na próxima tela:

61. Defina o seu fuso horário:

62. Estamos quase terminando, agora você deverá escolher qual interface gráfica deseja usar. Porém, após a instalação do Slackware, você tem a opção de mudar de interface gráfica, através do comando “xwmconfig” (sem aspas). É claro que, dentre essas interfaces o KDE é a mais famosa e mais robusta, mas é um tanto pesada. Eu particularmente, gosto muito do Xfce, por ser leve e robusto, já que o meu notebook possui um processador relativamente fraco. Mas, se você é iniciante, recomendo que você comece com o KDE:

63. Deseja definir uma senha para a conta do root? Escolha a opção “Yes”:

64. Digite a senha desejada para a sua conta do root:

65. Caso a sua senha seja considerada insegura, aparecerá a se seguinte mensagem lhe avisando sobre isso, mas se você tem certeza de que realmente quer definir a senha digitada para a conta do root, redigite-a:

66. Digite a senha mais uma vez para confirmar:

67. Pressione Enter para continuar:

68. Dê um Enter, para completar o setup de instalação do Slackware:

69. Completamos o setup do Slackware, assim o menu de instalação voltará a aparecer na sua tela:

Caso você queira refazer algum passo do processo de instalação, basta selecionar a opção desejada e fazer o procedimento novamente. É por isso que eu disse que a instalação do Slackware não precisa, necessariamente, seguir um processo linear, já que você pode ir e voltar entre as opções de instalação e configuração. Mas, no nosso caso, vamos escolher a opção “Exit” para sairmos do setup.

70. Agora o Slackware já está instalado em seu computador, portanto ejete o CD/DVD de instalação e dê um Ctrl + Alt + Del para reiniciar a máquina:

É claro que o Slackware, caso você seja um iniciante e ainda não o conheça, ainda não está em condições de ser usado. Não se assuste quando ele reiniciar e carrega apenas uma “tela preta”. Precisamos primeiro, realizar algumas configurações básicas para tornar o sistema usável, é por isso que o Slack é famoso por ser tão “preguiçoso”. Mas continue com a sua curiosidade aguçada, e passe para a próxima página deste artigo, pois logo logo, passaremos para a interface gráfica, e você já poderá bater no peito e dizer em alto e bom som:

“Eu sou um slacker!!!”

Configurações básicas

Assim que você terminar de instalar o Slackware 13.1 em seu computador, e reiniciá-lo, verá que ele ainda não vai carregar o X, é bem provável que, mesmo que você tenha configurado a rede durante a instalação, você não consiga se conectar à internet ainda, pode ser que seu sistema de som ainda não tenha sido reconhecido ou configurado etc…

Enfim, são essas “pequenas” características que fazem o Slack ser famoso por ser preguiçoso. Mas nós vamos compensar isso, afinal de contas, quando você decide experimentar o Slack, a última coisa que você deve estar sentindo é preguiça. Portanto, o que o sistema não fez por nós, nós faremos por ele.

Quando o seu sistema estiver carregando, perceba que o bootloader (gerenciador de boot) padrão do Slackware é o LILO:

Eu não tenho conhecimento técnico suficiente para fazer uma comparação, por mais singela que seja, entre o LILO e o GRUB. Mas é claro que, em se tratando de Slackware, você poderá instalar qualquer gerenciador de boot no seu sistema, inclusive o GRUB, caso você resolva fazer um dual boot com o Ubuntu, por exemplo.

O arranque do Slackware não tem uma velocidade dos sonhos, mas na minha opinião, já é satisfatória. Quando o carregamento terminar você se deparará com a seguinte imagem:

É hora de logar, mas como ainda não foi criado nenhum usuário, vamos ter que usar a conta do root, para fazer pelo menos algumas configurações iniciais, por isso digite “root” (sem aspas), depois de dar um Enter, digite a senha que você definiu para o root (no final do processo de instalação, lembra?), seguida de Enter.

Estamos em modo texto, mas não se preocupe, pois você pode iniciar o X (interface gráfica), a qualquer momento com o comando “startx” (sem aspas). Mas, antes de passarmos à interface vamos realizar algumas configurações básicas, como a do vídeo, do som e da rede, além de criarmos um usuário para você (pois como vês, estamos ainda, usando a conta root, e isso é muito perigoso).

Configurando o vídeo

1. Para configurar o vídeo:

# xorgsetup

Escolha “Yes” para confirmar.

2. Escolha a primeira opção:

3. Novamente, escolha a primeira opção:

4. Dê um Enter para finalizar:

Viu só como não é tão complicado configurar seus dispositivos no Slackware? Vamos agora, para a configuração do som.

Configurando o som

1. Para configurar o som:

# alsaconf

Dê um Enter para confirmar.

2. Escolha o sua placa de som e dê um Enter:

3. Na próxima tela, escolha “Yes”:

Som configurado.

Caso você não tenha configurado sua rede durante a instalação do sistema, pode configurá-la agora se quiser:

# netconfig

IMPORTANTE: Quando você for usar sua internet, pode ser que, mesmo que a sua rede esteja configurada, você não consiga se conectar. Nesse caso, o comando listado à seguir, pode resolver seu problema:

# ifconfig eth0 up

Para configurar a sua internet wireless, você precisa instalar o Wicd. Para isso, você deve primeiro, caso necessário, dar uma verificada na página 6 deste artigo (Como instalar e desinstalar programas no Slackware) e na página 7 (Dicas avulsas para arredondar o Slackware 13.1), onde você pode conferir onde encontrar o Wicd.

Adicionando um usuário

1. Vamos criar um usuário para você, pois é muito perigoso continuarmos usando a conta do root:

# adduser

2. Digite o nome para o seu usuário e dê um Enter.

3. Apenas dê enter para as próximas duas perguntas.

4. Quando a próxima tela aparecer:

Clique na tecla Up (seta para cima para que ela fique igual à figura abaixo:

Clique Enter.

5. Vá dando Enter até aparecer a frase “New password”, onde você deverá digitar a senha escolhida para o seu usuário, seguida de Enter. Caso a sua senha seja considerada fraca, você precisará digitá-la mais duas vezes. No final aparecerá a mensagem “Account setup complete”.

Eu imagino que você já deve estar com o saco cheio dessa tela preta em seu monitor widescreen com alta resolução, portanto vamos aliviar um pouco as coisas e finalmente vamos passar para a interface gráfica.

Mas antes, vamos sair da conta do root, digitando o comando:

# exit

Agora logue-se com a sua conta recém-criada e vamos iniciar o X com um:

$ startx

Contemple a beleza exuberante do KDE.

Traduzindo o Slackware para o Português do Brasil

Assim que você iniciar o X, verá que o Slackware está em Inglês, mas é muito fácil traduzi-lo para o Português do Brasil. É só editar o arquivo “lang.sh” que está dentro do diretório /etc/profile.d. Você pode editar esse arquivo com qualquer editor de textos da sua preferência, mas eu recomendo que você use o Nano (editor de texto para a linha de comando). Vamos lá, abra um terminal através do menu K, ou dê um Alt + F2 e digite o comando “konsole” (sem aspas).

1. Vamos primeiro logar como root:

$ su

Digite sua senha.

2. Agora vamos abrir o arquivo que guarda as configurações do idioma da interface:

# nano /etc/profile.d/lang.sh

3. Procure a linha em que está escrito:

export LANG=en_US (deve ser a 6ª ou 7ª linha)

4. Apage-a e escreva o seguinte no seu lugar:

export LANG=pt_BR.UTF-8

5. Para salvar o documento e sair, dê um Ctrl + X, o terminal lhe perguntará se deseja salvar o arquivo, confirme com um Y, seguido de Enter.

Obs.: Esse procedimento não irá traduzir o Slackware por inteiro, ou melhor, irá traduzir apenas a interface gráfica e a maioria dos aplicativos.

Após isso, basta reiniciar a sessão ou o seu computador.

Atualizando o Slackware

Antes de começarmos usar o sistema, propriamente dito, vamos atualizá-lo. No Slackware, o processo de atualização é tão simples quanto muitas distros.

1. Primeiro precisaremos configurar o repositório por onde o nosso Slackware será atualizado. Então abra um terminal, logue-se como root, e execute o seguinte comando:

# nano /etc/slackpkg/mirrors

2. Procure pela seguinte linha:

# ftp://ftp.slackware-brasil.com.br/slackware-13.1/

Essa linha refere-se ao Slackware 13.1. Caso a sua versão seja outra, procure a linha mais adequada.

3. Descomente essa linha, apagando o símbolo # do seu início. É muito importante que você descomente apenas uma linha.

4. Dê um Ctrl + X para sair e um Y, seguido de Enter, para confirmar o salvamento do documento.

5. Agora dê o seguinte comando, para atualizar a lista dos pacotes:

# slackpkg update

6. Após atualizar a lista de pacotes, atualize o seu sistema com o comando:

# slackpkg upgrade-all

O Slackpkg é muito intuitivo, caso ele lhe pergunte quais pacotes deseja atualizar, basta dar um Enter para confirmar todos, sentar, tomar um cafezinho e esperar um pouquinho (no meu caso, um poucão, devido a vvvvvveeeeeelllloooooocccciiiiddddaaaaddddeeee da minha internet).

Caso você queira atualizar o seu Slackware novamente, depois de um tempo, basta executar, como root, os dois últimos comandos.

IMPORTANTE: É importante salientar que as versões finais do Slackware primam pela estabilidade. Logo, eu particularmente entendo que, não existe uma necessidade enoooooorrrrrrmmee de ficar atualizando-o constantemente. Muitas vezes, atualizá-lo logo que instalado, já é o suficiente.

Como instalar programas no Slackware

A instalação de programas no Slackware, assim como em muitas outras distros Linux, pode acontecer de várias maneiras. Vou lhe mostras apenas algumas delas, que na minha opinião, irão com certeza, satisfazer a maior parte das suas necessidades, pois são as maneiras mais utilizadas. As maneiras que ensinarei aqui são através: do “pkg” e do “pkgtool” (que não gerenciam dependências), do “slapt-get” (que gerencia dependências) e através da sua interface gráfica “Gslapt”.

Aliás, “dependência” é sem dúvida, uma das questões que mais levantam discussões (sadias é claro, isso é muito importante que seja salientado) entre a comunidade do Slack. Alguns insistem em manter a tradição, instalando os programas e gerenciando as dependências “na unha” ou “no braço”, outros preferem, em nome da praticidade e eficiência, usar programas que façam o serviço pesado pelo usuário.

Geralmente as discussões são mais ou menos assim:

Dinossauro: “Ooohh!! Pobres newbies. Não aguentam uma semana, sem apelar para o Slapt-get!”

Newbie: “Aff.. Eu quero eficiência, praticidade e facilidade! Isso é mais importante!”

Dinossauro respondendo: “Então não use Slackware, seu newbie!”

Newbie replicando: “Algum dia serei como você.”

Dinossauro sensibilizado: “É isso aí, força aew”

Newbie emocionado: “Ah cara! Valew pela força. Da um abraço aqui.”

Dinossauro abraçando o newbie: “Upa-pá…..” (tapinha nas costas)

Mas na verdade isso é uma questão de gosto. É claro que, se você tiver um pouquinho de tempo à disposição, eu particularmente, recomendaria que você, ao menos no início, se habituasse um pouquinho a instalar programas sem o auxílio de um gerenciador de dependências, pelo menos até você cansar e a brincadeira perder a graça.

Aprenderemos primeiro, instalar e desinstalar programas sem o auxílio de um gerenciador de dependências.

Nota: Quero salientar que eu uso alguns programas específicos, como exemplo, para mostrar os processos de instalação de programas no Slackware. Porém esses passos podem ser seguidos, para instalar qualquer programa, desde que você adapte os nomes dos programas em questão.

Pkg

Vamos começar com o pkg, para isso, como exemplo, vamos instalar o Chromium (navegador de internet simples e rápido, que é a versão livre do Google Chrome) no seu Slack:

1. O primeira passo, é baixar o Chromium, eu recomendo o site http://www.slacky.eu/ (é claro que existem vários sites que disponibilizam programas para o Slack. Mais sugestões de sites ou repositórios, podem ser indicadas nos comentários). Abra o site indicado, e no menu do lado esquerdo, escolha o repositório de acordo com a versão do seu Slackware:

No meu caso, é a opção “Repository 13.1 – 32”, mas caso o seu sistema seja 64 bits, escolha a opção “Repository 13.1 – 64”.

2. Na próxima página que abrir, você já pode escolher o programa desejado em “Scegli il pacchetto”, ou fazer uma busca em “Cerca il pacchetto”. Já no lado esquerdo, encontram-se as categorias que dividem os programas, como o Chromium é um navegador de internet, você deverá clicar na categoria “network”.

3. Na lista de programas que aparecer, procure pelo Chromium e clique sobre ele.

4. A próxima página, é onde você irá fazer o download do Chromium, mas quero lhe alertar que não basta baixá-lo e instalá-lo, pois o Chromium precisa de que seja instalado também, mas dois pacotes além dele, que são as dependências. Você pode verificar as dependências que o Chromium exige, na parte inferior dessa página, onde está escrito “Dipendenze” (note que as dependências do Chromium são os pacotes orbit2 e gconf). Para baixar o Chromium, clique no botão com o símbolo do Slack, igual ao mostrado a seguir:

5. A página seguinte, é onde se encontra a versão do programa que se quer baixar, clique em “5.0.375.71/” (que é a versão disponível no momento em que este artigo está sendo escrito).

6. Agora você deverá escolher a opção “chromium-5.0.375.71-i486-1sl.txz”, que é o tipo de pacote compilado para o Slackware. Então o download começará.

7. Não se esqueça de fazer o download das dependências que o Chromium exige (lembra?), pois sem elas o programa não funcionará.

8. Após baixar o Chromium e as suas dependências, vamos para a instalação dos mesmos. Abra um terminal no diretório onde os arquivos estão salvos e logue-se como root:

$ su
Digite sua senha.

# installpkg chromium-5.0.375.71-i486-1sl.txz

Vislumbre as letrinhas subindo, ao final da instalação aparecerá a seguinte mensagem:

Package chromium-5.0.375.71-i486-1sl.txz installed.

9. Você pode instalar as dependências agora se quiser, mas não faça isso ainda, pois para que você realmente entenda o quanto é necessário uma dependência no Slackware, tente executar o Chromium agora, chamando-o pelo terminal:

# chromium

Veja que, além do Chromium não abrir, deverá aparecer a seguinte mensagem:

/usr/lib/chromium/chromium: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory

Esta mensagem está lhe avisando, justamente, a falta de dependências necessárias para o funcionamento do programa em questão. Veja que ela cita o pacote “libgconf-2.so”, que é o “gconf”, um dos pacotes que nós baixamos.

10. Instale o gconf com o seguinte comando:

# installpkg gconf-2.28.1-i486-1sl.txz

11. Tente abrir o Chromium novamente:

# chromium

A mesma mensagem irá aparecer, lhe avisando agora, sobre a falta da dependência “libORBit-2.so”, que é o pacote orbit2-2.14.18-i486-1sl.txz que baixamos:

/usr/lib/chromium/chromium: error while loading shared libraries: libORBit-2.so.0: cannot open shared object file: No such file or directory

12. Agora, finalmente instale, a última dependência necessária para o funcionamento do Chromium:

# installpkg orbit2-2.14.18-i486-1sl.txz

13. Agora você já pode chamar o Chromium, e veja que ele irá abrir:

# chromium

14. É claro que, eu sugeri que instalássemos o programa e as dependências, uma a uma, para que você compreendesse melhor, como é o funcionamento do sistema. Mas caso você queira poupar um pouquinho de tempo, você pode instalar o Chromium e as suas dependências com apenas um comando:

# installpkg chromium-5.0.375.71-i486-1sl.txz orbit2-2.14.18-i486-1sl.txz gconf-2.28.1-i486-1sl.txz

15. Outra dica valiosa é sempre usar o * (asterisco) para instalar vários pacotes de uma vez:

# installpkg *.txz

O comando indicado acima instalaria todos os pacotes txz que estiverem dentro de uma pasta.

16. Para desinstalar programas com o Pkg, basta dar o seguinte comando:

# removepkg nomedoprograma

É óbvio, que assim como na instalação, na desinstalação o Pkg não irá desinstalar as dependências do programa que estiver sendo desinstalado. Fazendo-se necessário desinstalá-las manualmente.

Pkgtool

O Pkgtool não difere muito do Pkg, pois não é nada mais, do que uma espécie de “pseudo-interface em modo texto” para o Pkg. Vamos usar novamente, o Chromium com exemplo, por isso, para poupar tempo, ao invés de instalá-lo e desinstalá-lo vamos fazer os passos de forma inversa, ou seja, vamos começar desinstalando o Chromium, para depois instalá-lo novamente:

1. Abra um terminal e abra o Pkgtool:

$ su
Digite sua senha.

# pkgtool

2. Escolha a terceira opção: “Remove”

3. Procure pelo Chromium e marque-o para a desinstalação com um * (asterisco) usando a barra de espaço:

4. Escolha “Ok” e dê um Enter. Ao final da desinstalação, aparecerá a seguinte mensagem:

Dê um Enter para confirmar.

5. Escolha “Exit” para sair do Pkgtool.

Não se esqueça, que esse procedimento que acabamos de fazer, desinstalou apenas o Chromium. Suas dependências, continuam instaladas. Portanto, para desinstalar o programa por completo, você deve marcar também, suas dependências para a desinstalação, sendo possível marcar mais de um pacote ao mesmo tempo.

6. Agora, vamos aprender a instalar programas com o Pkgtool, e vamos usar o Chromium, como exemplo, novamente. Abra um terminal dentro do diretório onde se encontra o pacote instalador do programa que se deseja instalar, depois logue-se como root, abra o Pkgtool, e escolha a primeira opção: “Current”

7. Veja que o Pkgtool, já detectou o pacote do Chromium, e lhe pergunta se deseja instalá-lo:

Escolha a opção “Yes” e dê um Enter. E Logo o Chromium estará instalado novamente em seu sistema.

Slapt-get

O Slapt-get é um programa muito similar ao apt-get do Debian e derivados. Ele é muito útil quando se deseja instalar programas com muitas dependências, tornando o processo muito mais simples para o usuário.

Como você pôde conferir, o Chromium, que foi usado como exemplo nos métodos de instalação descritos acima, possui apenas duas dependências. Mas existem programas que possuem dezenas de dependências, como é o caso do VLC (um dos melhores players de vídeo).

Assim sendo, ficaria muito trabalhoso para um usuário inexperiente, gerenciar todas essas dependências “na unha”. Nesses casos, é sempre bom ter em mãos uma ferramenta eficiente como o Slapt-get.

1. Baixe o Slapt-get no site http://www.slacky.eu/ e instale-o com o Pkgtool.

2. Após a instalação, vamos configurar os repositórios, de onde o Slapt-get vai baixar os programas que você mandá-lo instalar. Faremos isso editando o arquivo “slapt-getrc”:

$ su
Digite sua senha.

# nano /etc/slapt-get/slapt-getrc

3. Note que este arquivo possui vários endereços com a seguinte sintaxe:

SOURCE=site

Mas apenas dois desses endereços estarão descomentados. Isto é, sem o símbolo # no início.

São endereços semelhantes aos mostrados abaixo:

SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-13.1/:OFFICIAL

SOURCE=http://software.jaos.org/slackpacks/13.1/:OFFICIAL

4. Procure por esses dois endereços e verifique se eles referem-se à versão correta do seu Slackware. Caso eles estejam se referindo à uma versão diferente, apenas edite o número da sua versão.

DETALHE: O primeiro endereço dos mostrados acima, é o repositório dos pacotes oficiais do Slackware. Já o segundo endereço, é o repositório do próprio Slapt-get.

5. Agora chegou a hora de adicionar novos repositórios ao seu Slapt-get, que tal adicionar o repositório do http://www.slacky.eu/?

Basta adicionar a seguinte linha ao seu slapt-getrc (de preferência abaixo da linha SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-13.1/:OFFICIAL, para que tudo fique organizado):

SOURCE=http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.1/

Esse é o repositório do Slacky.eu para o Slackware 13.1 32 bits, mas na página linkada abaixo, você pode encontrar o mesmo repositório, para diferentes versões do Slackware:

(Mais dicas de repositórios podem ser colocadas nos comentários)

6. Após adicionar o repositório desejado, dê um Ctrl + X para sair, seguido de um Y para confirmar e um Enter para salvar as alterações.

7. Atualize a lista de pacotes com o comando:

# slapt-get –update

8. Vamos fazer um teste? Vamos instalar o sempre útil VLC? Antes de instalar algum programa, você pode fazer uma busca para saber se é possível instalar determinado programa, ou se ele já não está instalado no seu sistema. Para buscar algum programa, rode o comando:

# slapt-get –search nomedoprograma

Por isso, para procurar o VLC:

# slapt-get –search vlc

Caso o VLC não esteja instalado, o retorno do comando será esse:

vlc-1.1.0-i486-1sl [inst=no]: VLC (VideoLAN Client Multimedia Player)

9. Agora podes instalar o VLC:

# slapt-get –install vlc

Agora estás livre pra se divertir com o slapt-get.

Gslapt

O Gslapt, nada mais é do que uma interface gráfica para o Slapt-get. Tem um funcionamento muito parecido com o Synaptic. Você pode instalá-lo para tornar o processo de instalação de programas no Slackware, ainda mais fácil (você o encontrará no repositório do http://www.slacky.eu/). Para executar o Gslapt rode o comando:

$ kdesu gslapt

Instalando programas do projeto Slackbuilds

Esta é uma maneira muito supimpa de se instalar programas no Slackware. O Slackbuilds é um projeto que conta com o apoio do próprio Patrick Volkerding. Tais pacotes estão disponíveis no site:

Contudo, a grande diferença é que esses pacotes não estão pré-compilados para o formato de pacotes do Slackware, ou seja, você mesmo terá que compilar e criar um instalador para o pacote que você deseja instalar em seu sistema. Mas isso é muito fácil de se fazer. Como exemplo, vamos instalar o Opera (o melhor navegador que ninguém usa), no seu Slack.

1. Para isso, acesse o site do Slackbuilds através do link postado acima.

2. Na parte de cima do site, você pode fazer uma busca do programa que você quer, ou pode clicar em “Repository”, que é o que vamos fazer.

3. Após isso, clique em “Network”, e na próxima página, procure pelo Opera na lista de pacotes que aparece e clique sobre ele.

4. Na página que abrir você deverá fazer o download do código fonte do programa em “Sources Download” (note que você deve escolher entre a versão 32 bits e 64 bits).

5. Baixe também, o pacote do Slackbuilds, no nosso caso, o pacote “opera.tar.gz”.

6. Agora é que começa a parte boa, e quando eu digo boa, é boa mesmo, além de muito fácil. Abra um terminal na pasta em que você salvou os dois pacotes e siga os comandos listados a seguir. Primeiro vamos extrair o pacote do Slackbuild:

$ tar xvfz opera.tar.gz

7. Agora vamos copiar o código fonte do programa (sem descompactá-lo) para a pasta onde extraímos o Opera:

$ cp opera-10.10.gcc4-qt4.i386.tar.bz2 opera

8. Vamos entrar no diretório “opera” e ver o que tem dentro dele:

$ cd opera
$ dir

9. Veja que dentro do diretório “opera” tem um pacote chamado “opera.SlackBuild”, então vamos logar como root e executá-lo:

$ su

Digite sua senha

# ./opera.SlackBuild

Veja as letrinhas subirem… No fim, deve aparecer a seguinte frase: “Slackware package /tmp/opera-10.10-i386-1_SBo.tgz created.”

Essa frase está dizendo que foi criado em sua pasta “tmp” o pacote “opera-10.10-i386-1_SBo.tgz”, que é o pacote que iremos instalar.

10. Então vamos, através do terminal, para a sua pasta “tmp”:

# cd /
# cd tmp

11. Agora é só instalar o Opera com o o Pkg:

# installpkg opera-10.10-i386-1_SBo.tgz

Opera instalado em seu Slackware.

Não se esqueça de mover o instalador do Opera para um diretório mais adequado, de sua preferência. Mas é necessário fazer isso como root.

Infelizmente a versão do Opera, usada neste exemplo já está desatualizada. Mas no site do Opera, você pode baixar a nova versão do programa, que atualmente é a 10.60.

Para ver como instalar o Opera através do pacote do seu site oficial, confira a página 7 deste artigo.

Dicas avulsas para arredondar o Slackware 13.1

Enfim, chegamos à parte do meu artigo que, eu considero, a mais importante de todas e que é, na verdade, o principal motivo que me levou a escrever sobre o Slackware. Esta é a sessão onde eu trago uma pequena compilação de dicas e links para lhe ajudar a deixar seu Slack redondinho da silva.

Eu gostaria de salientar que algumas dessas dicas podem não se aplicar ao seu caso em particular, pois foram escritas de acordo com as minhas experiências com o Slackware.

Traduzindo o Slackware para o Português do Brasil

Essa dica já se encontra na página 5 deste artigo, mas para deixar essa compilação mais completa, resolvi trazê-la aqui também.

Assim que você startar o X, verá que o Slackware está em Inglês, mas é muito fácil traduzi-lo para o Português do Brasil. É só editar o arquivo “lang.sh” que está dentro do diretório /etc/profile.d. Você pode editar esse arquivo com qualquer editor de textos da sua preferência, mas eu recomendo que você use o Nano (editor de texto para a linha de comando). Vamos lá:

$ su

Digite sua senha

# nano /etc/profile.d/lang.sh

Procure a linha em que está escrito:

export LANG=en_US (deve ser a 6ª ou 7ª linha)

Apage-a e escreva o seguinte no seu lugar:

export LANG=pt_BR.UTF-8

Para salvar o documento e sair, dê um Ctrl + X, o terminal lhe perguntará se deseja salvar o arquivo, confirme com um Y.

Obs.: Esse procedimento não irá traduzir o Slackware por inteiro, ou melhor, irá traduzir apenas a interface gráfica e a maioria dos aplicativos.

Wicd: o programa com interface gráfica para gerenciar conexões wireless

O Wicd é uma mão na roda para quem pretende usar o Slackware em um notebook, com ele, você poderá gerenciar suas conexões sem fio de forma fácil através de uma interface gráfica. Ele encontra-se dentro da pasta “extras” do DVD do Slackware, ou caso você prefira pode baixá-lo no seguinte link:

Por isso para instalá-lo, já sabe né, qualquer dúvida confira a página n° 6 deste artigo.

Aí é só chamar o Wicd com o comando:

$ wicd

Caso ele ainda não apareça no seu painel, reinicie a sessão.

Traduzir o Firefox para o português

Multimídia no Slackware

O Slack já traz muitos codecs necessários para executar arquivos multimídia, mas para o deixarmos ainda mais redondinho, vamos instalar o Mplayerplug-in e o Flash Player.

O Mplayerplug-in também encontra-se na pasta “extras” do DVD do Slack. Se preferir, pode baixá-lo através do seguinte link:

Agora vamos instalar o Flash Player, pra isso faça o seu download no formato tar.gz no site da Adobe. Após baixá-lo, extraia-o com o comando:

$ tar -xvvf install_flash_player_10_linux.tar.gz

Caso o flash, que você tenha baixado seja de uma versão diferente, digite apenas “tar -xvvf install_flash” (sem aspas) para que o console complete o nome do pacote pra você.

Após a extração, surgirá um arquivo chamado “libflashplayer.so”, e para instalá-lo basta que você logue-se como root e execute o comando:

# cp libflashplayer.so /usr/lib/mozilla/plugins

Após isso, reinicie o seu navegador e voilááááá!

Instalando o BrOffice com verificador ortográfico e corretor gramatical

A instalação full do Slackware já traz alguns aplicativos para escritório, como o Kword por exemplo, mas para quem vem de distros mais friendly-user, com certeza já deve estar acostumado com o BrOffice, ou o OpenOffice.

Por isso,vamos instalar agora o BrOffice.org 3.2.1 no seu Slackware, com verificador ortográfico e corretor gramatical, para deixá-lo prontinho para que você possa fazer seus trabalhos sossegado.

Infelizmente no site oficial do BrOffice.org, não existe nenhum instalador em formato tgz, que é um dos formatos padrões para pacotes do Slack. Mesmo assim, nós iremos baixar o pacote em formato rpm, e transformá-lo em tgz, para então instalá-lo.

Portanto vá até o site do BrOffice, e baixe a versão rpm mais recente ou clique no link a seguir, que leva ao download da versão 3.2.1, preferencialmente, salve o pacote em sua pasta home/seuusuário, para facilitar o processo:

Após o download, caso você tenha salvo o pacote na pasta do seu usuário, basta dar o comando a seguir para descompactá-lo:

$ tar xvzf BrOOo_3.2.1_Linux_x86_install-rpm_pt-BR.tar.gz/

Agora vamos abrir o diretório onde os pacotes rpms foram depositados:

$ cd OOO320_m18_native_packed-1_pt-BR.9502/RPMS

Vamos transformar os rpm em tgz:

$ rpm2tgz *.rpm

(vai demorar um pouquinho)

Agora já podemos instalar o BrOffice.org:

$ su
Digite sua senha.

# installpkg *.tgz

O BrOffice.org já está instalado, mas ainda não foi colocado os ícones nos menus do seu sistema. Para fazermos isso, continuemos de onde paramos, com:

# cd desktop-integration
# rpm2tgz *.rpm
# installpkg *.tgz

Pronto, instalação e integração do BrOffice completa, mas ainda temos de instalar o verificador ortográfico e o corretor gramatical. Você pode baixá-los no site do BrOffice, ou a partir dos seguintes links:

Vou mostrar como instalar apenas um deles, pois o processo de instalação para ambos, são iguais.

Você não deve descompactar os arquivos que baixar.

Apenas abra o BrOffice.org, vá em “Ferramentas”, “Gerenciador de Extensão”, clique em “Adicionar”, localize os pacotes que você baixou e clique em “Abrir”. Não se esqueça de reiniciar o BrOffice.org após a instalação dos pacotes.

Pronto, agora você já pode digitar aquele trabalho chato, sem correr o risco de entregá-lo repleto de “vc”, “naum”, “tb”… (coisa de viciados em MSN, como eu).

VirtualBox

O VirtualBox é o braço direito para os linuxeiros “multi-distros”, como eu. Nós não conseguimos ficar sem entupir nosso Winchester (HD) com imagens ISO das mais diversas distrições Linux ou não. Então para instalar o VirtualBox no seu Slackware, faça o download do programa no site do VirtualBox, escolhendo a versão “All Distributions”, ou clique em um dos links a seguir:

Após o download do arquivo, dê-lhe permissão de execução com o comando:

# chmod +x VirtualBox-3.2.6-63112-Linux_x86.run

E logo após instale-o:

# ./VirtualBox-3.2.6-63112-Linux_x86.run

Configurando o teclado para Abnt2 no Slackware

Essa foi uma parte muito chatinha pra configurar no meu notebook, mas não porque é difícil e sim porque eu demorei encontrar a solução mais adequada pra mim. Eu encontrei muitas dicas aqui no VOL e em outros sites, a maioria delas, com configurações em modo texto, mas nenhuma funcionava. Mas foi grande a minha surpresa ao ver que resolver esse problema é muito fácil, na verdade.

Esta dica aplica-se à interface gráfica Xfce.

1. Dê um Alt + F2 e digite o comando:

xfce4-keyboard-settings

2. Clique na aba “Disposição”.

3. Caso a opção “Usar padrões do sistema” esteja marcada, desmarque-a. Em “Modelo de Teclado”, escolha o modelo correspondente ao seu teclado. No meu caso é o modelo “Acer Laptop”, pois estou usando um notebook de marca Acer, nada de merchan hein!).

4. Logo após, clique no botão “Adicionar”.

5. Escolha a opção “Brasil” e dê um OK.

6. Veja que a opção “br” irá aparecer na caixa ao lado, então você deverá marcá-la e depois, poderá clicar em “Fechar”.

Pronto, dê uma conferida na cedilha e nos acentos do seu teclado e tudo deverá estar funcionando.

Acessando outras partições através do Gerenciador de Arquivos do Xfce, o Thunar

Por uma questão de gosto e de desempenho, eu optei por usar o Xfce como ambiente gráfico padrão no Slackware.

O Xfce possui um gerenciador de arquivos leve, rápido, simples e funcional, que é o Thunar. Mas uma coisa que me deixou encucado. É que diferentemente do Nautilus, do Gnome e do Dolphin, do KDE, o Thunar, não possui um atalho para as outras partições do disco rígido. Isso era muito inconveniente, pois toda vez que eu queria acessar os arquivos do meu Ubuntu (que tenho instalado em dual boot com o Slackware), eu (leigo que sou) acabava por recorrer ao Dolphin. Pra mim, era sempre muito chato, usando o Xfce, ter que recorrer à um aplicativo pesado como o Dolphin, apenas para acessar uma outra partição.

Veja no lado esquerdo da figura abaixo, que o Dolphin, possui um atalho para a minha pasta raiz (partição do Slackware) e um atalho para meu disco rígido de 207,7 GiB (partição do meu Ubuntu instalado em dualboot com o Slackware):

Porém, você pode conferir na figura abaixo, no lado esquerdo, que o Thunar possui um atalho apenas para o sistema de arquivos (partição do Slackware).

Mas com umas pesquisadas e umas fuçadas nas pastas do sistema, eu encontrei o diretório por onde pode-se acessar a outra partição do HD, através do Thunar. O diretório é o /media/disk/home/nomedoseuusuário. Assim (como em tudo em que se trata de Linux), foi facílimo criar um atalho no Thunar para a partição do Ubuntu, como você confere na figura abaixo:

Caso você queira fazer igual, basta que você vá até o diretório para qual você quer criar o atalho, nesse caso é o diretório /media/disk/home/ onde você encontrará a pasta do seu usuário da outra partição.

Assim é só você clicar sobre ela e arrastá-la (sem soltar o botão do mouse) para o painel lateral esquerdo do Thunar (mais precisamente abaixo da linha preta que está sob o sistema de arquivos).

Pronto, atalho criado. Caso você queira, pode renomear o atalho, clicando nele com o botão direito do mouse e escolhendo a opção “Renomear Favorito”.

Outra opção, muito bacana para criar um atalho, é você clicar sobre a pasta desejada com o botão direito do mouse e escolher as opções “Enviar Para”, “Desktop (Create Link)”. Assim o Thunar criará um atalho para a pasta em questão na área de trabalho do seu sistema. Molezinha né?

Mããããããsssss, como sempre tem um “mas”, depois que eu reiniciei o sistema, descobri que o Thunar só montava a minha partição do Ubuntu na pasta /media/disk/home/, depois de eu abrir essa partição através do Dolphin. Ou seja, se eu não abrisse a partição do Ubuntu com o Dolphin primeiro, o diretório /media/disk/home/ nem aparecia no Thunar.

Aí foi mais uma pesquisadinha e uma fuçadinha, e logo descobri a solução para que o Thunar montasse a partição do Ubuntu no diretório /media/disk/home/ junto com o arranque da sessão. E a trago aqui pra você.

O “segredinho” é editar o arquivo /etc/fstab, portanto, abra um terminal, entre como root e digite o seguinte comando:

# nano /etc/fstab

Adicione a seguinte linha no final do arquivo:

/dev/sda5        /media/disk      ext4        defaults         1   1

Detalhe: A partição do meu Ubuntu é a sda5, você deve verificar qual é o número da partição que você quer montar.

Detalhe 2: O sistema de arquivos do meu Ubuntu, que está em dual boot com o Slackware, é o ext4 como você confere na linha indicada para inserir no fstab.

Instalando o Opera através do pacote baixado do seu site oficial

Caso você já tenha o Opera instalado, desinstale-o com o auxílio do Pkgtool e baixe a última versão do Opera, para Slackware, em sua página oficial:

1. Quando terminar o download, abra um terminal no diretório onde você salvou o pacote do Opera, e extraia o pacote com o comando:

$ tar xvfz opera-10.60-6386.i386.linux.tar.gz

2. Agora entre no diretório onde o Opera foi descompactado:

$ cd opera-10.60-6386.i386.linux

3. Agora, logue-se como root rode o script de instalação:

# ./install

E dentro de um ou dois minutos, o novíssimo Opera 10.60 estará instalado em seu Slackware.

Conclusão e agradecimentos

Chegamos ao fim deste artigo que, espero eu, possa lhe auxiliar em seus primeiros passos com o Slackware. Como eu já disse no início, eu nunca tive a intenção de esgotar esse assunto, mas sim apenas contribuir relatando as minhas primeiras experiências com essa distro tão maravilhosa e fascinante.

Ficarei muito feliz por cada leitor que tiver, uma dúvida sequer, esclarecida ao ler essas páginas. Afinal de contas, essa a principal motivação que me faz escrever sobre Linux.

Espero que a sua aprendizagem com o Slackware, contribua para o seu crescimento, como pessoa. Espero que do mesmo modo que você esteja disposto a adquirir conhecimento, esteja disposto a dividi-lo com quem precisa. Assim estaremos fortalecendo, cada vez mais, essa comunidade maravilhosa, que acolhe a todos como um coração de mãe.

Esse é o espírito livre, o espírito que une mais de 100 mil amantes do Software Livre em um mesmo objetivo. Juntos somos capazes de enfrentar qualquer dificuldade.

Debian Wheezy – Instalação e utilização em desktops

 Clusterweb, Desktop, Linux  Comentários desativados em Debian Wheezy – Instalação e utilização em desktops
maio 302013
 
Introdução

O objetivo desta documentação é ajudar o leitor a ter um desktop bonito, estável, rápido e seguro utilizando a distribuição GNU/Linux Debian 7, de codinome Wheezy.

O artigo tem também o intuito de tornar as coisas mais simples, e assim fazer com que novos leitores tornem-se usuários dessa incrível distribuição e possam contribuir com a comunidade das mais diversas formas possíveis. Vamos fazer uma instalação limpa utilizando o DVD de instalação.

Abaixo seguem algumas observações do porquê não veremos o processo de atualização da versão 6 para a versão 7 e na sequência, seguem os links para fazer o download das mídias de instalação.

Obs.1: No momento que escrevo, o Debian Wheezy deixa de ser Beta e passa a ser “Release Candidate 1”. Todo esse processo ocorre internamente na famosa fase Testing e em poucos dias o mesmo se tornará Stable.

Para os mais conservadores, que ficaram com vontade de utilizar o sistema, porém, têm medo de falhas, vou relatar todos os testes que fiz oficialmente pelo time DD. Se você instalar o sistema do zero e seguir todo o procedimento abaixo, praticamente não encontrará nenhum problema e poderá seguir atualizando o seu sistema normalmente até as próximas versões.

Porém, para os que desejam atualizar do Debian 6.x.x para o Debian 7, é quase certo que irá se deparar com algumas pequenas quebras de pacotes (nada que não seja facilmente contornado). Porém, como o foco são novos usuários, não faremos isso com os novatos.

Obs.2: A escolha pelo DVD e não o CD, é pelo seguinte: o DVD, por ter maior capacidade de armazenamento, traz mais componentes de software na seleção de pacotes padrão e que irão dispensar trabalho a esses usuários. Para os que se acham mais espertinhos, a escolha tanto faz, pois podemos fazer hardening do sistema adicionando, ou removendo, recursos de sistemas e aplicações.

Link para a ISO de arquitetura i386:

Link para a ISO de arquitetura amd64:

Após concluir o download da ISO, grave a mesma em um DVD ou expanda em um pendrive. Para os que já utilizam GNU/Linux, podem escolher entre Brasero, K3b e outros para queimar o DVD, ou utilizar o comando abaixo para expandir a imagem ISO em um pendrive. Para usuários de Windows, consultem o Google. =)

# dd if=<caminho até o arquivo .iso> of=<caminho até o dispositivo que deseja gravar> bs=8MB

Exemplo:

# dd if=/home/wagner/Downloads/debian-testing-amd64-DVD-1.iso of=/dev/sdb bs=8MB

Obs.: Esse processo irá demorar um pouco e você não verá nada além de um cursor piscando. Para os que desejarem ver o progresso da gravação, façam o seguinte: verifique se o pacote de nome “pv” está instalado, se não, instale conforme segue abaixo:

# apt-get install pv

Agora faça o processo conforme mostrado abaixo:

# dd if=<caminho até o arquivo .iso> | pv | dd of=<caminho até o dispositivo que deseja gravar> bs=8MB

Exemplo:

# dd if=/home/wagner/Downloads/debian-testing-amd64-DVD-1.iso | pv | dd of=/dev/sdb bs=8MB

Agora sim, você verá o que está acontecendo…

Instalação (Parte 1)

Seguem as telas que você verá durante a instalação do sistema e alguns comentários. Iremos utilizar um esquema de particionamento simples, porém, perfeito para os que estão iniciando no GNU/Linux.

1. Dê boot utilizando o seu DVD, ou o pendrive de instalação, e logo verá a tela abaixo. Selecione a opção “Install”:

2. Mova, utilizando a seta para baixo, até a opção “Português do Brasil” e tecle ENTER:

3. Escolha “Brasil” e tecle ENTER:

4. Escolha “Português Brasileiro” e tecle ENTER. Serão realizados alguns testes:

5. Escolha um nome para máquina e tecle ENTER:

6. Deixe o nome de domínio em branco e tecle ENTER:

7. Defina uma senha segura para o usuário root e tecle ENTER:

8. Repita a senha do root e tecle ENTER:

9. Digite o seu nome completo e tecle ENTER:

10. Escolha um nome para efetuar login no sistema e tecle ENTER:

11. Escolha uma senha para seu usuário e tecle ENTER:

12. Repita a senha do seu usuário e tecle ENTER:

13. Escolha sua região para andar com as horas atualizadas e tecle ENTER:

14. Escolha o particionamento manual e vamos para alguns detalhes:

Os usuários GNU/Linux geralmente são forçados a ter um melhor entendimento de como os componentes de hardware e softwares se relacionam. Sendo assim, é bem importante saber diferenciar o que é um disco físico (seja ele magnético, estado sólido ou qualquer outro tipo), o que são partições, o que são sistemas de arquivos e o que são pontos de montagem.

Vou tentar explicar cada coisa dessa, sendo o mais breve possível:

  • Disco físico: É o que vocês compram nas lojas, conhecidos como HD (Hard Disk). Existem muitas variações e não vou entrar no mérito. Para correr disso vamos voltar ao lado acadêmico e classificá-las como memórias secundárias.
  • Partições: São divisões lógicas que criamos nos discos físicos. Apesar de aparentar ser um processo bastante simples nos dias de hoje, já foi bastante complexo no passado e é ainda hoje, quando se tem o objetivo alterar o espaço em disco da melhor forma possível.
  • Sistemas de arquivos: É uma camada de software que fica responsável por mapear onde estão nossos dados nas diversas partições, além de fornecer recursos de segurança e muitos outros recursos. Existem vários sistemas de arquivos, os mais conhecidos são: FAT16, FAT32, NTFS, ext2, ext3 e ext4. Porém, existem vários outros, como XFS, JFS, ReiserFS… é importante conhecer esses “caras”, pois eles utilizam algorítimos diferentes e isso pode impactar bastante no desempenho, dependendo da utilização que a máquina/servidor terá.
  • Pontos de montagem: Esses pontos nada mais são do que diretórios virtuais para facilitar a forma de acessar os dados em uma determinada partição. Exemplo disso: quando plugamos um pendrive em um sistema GNU/Linux, ele é reconhecido como “/dev/sdb1” e montado em “/media/usb”. Sendo assim, sempre que você desejar acessar os dados, basta acessar o “/media/usb”.

Obs.: Muitos devem estar se perguntando: Por quê não acessar o “/dev/sdb1” diretamente?

Inicialmente parece bem lógico, mas sempre existe uma razão por trás das coisas. Não dá para explicar tudo, pois iríamos perder o foco!

Mas para deixá-los com sede de pesquisa, imaginem que, em determinado momento, o “/dev/sdb1” é o seu pendrive e em outro momento pode ser o seu HD externo. Como ficariam alguns links que você criou apontando para o “/dev/sdb1 – Pendrive” no momento que é outro disco?

Não para por aí, tem relações de segurança do sistema envolvidas nesse questionamento e outras coisas, por isso, não dá para explicar aqui. =)

15. Selecione o disco que será utilizado para instalar o sistema e tecle ENTER:

16. Escolha “SIM” e tecle ENTER:

17. Selecione o espaço livre e tecle ENTER:

18. Selecione a opção “Criar uma nova partição” e tecle ENTER:

19. Iremos criar a primeira partição juntos, as demais serão por sua conta. Vamos definir o tamanho como 100 MB, pois iremos montá-la como /boot. Tecle ENTER.

20. Vamos escolher a opção “Primária” para essa partição, todas as demais você deverá escolher a opção “Lógica”. Tecle ENTER:

21. Escolha “Início” para todas as partições que você vai criar e tecle ENTER:

22. Preencha conforme imagem abaixo e finalize a configuração da partição:

23. Repita de 17 a 22, para criar as demais partições, mudando apenas no passo 20, que será daqui pra frente Lógica. Faça de forma que fique com os seguintes espaços:

  • 100 :: Já criamos, será montada como: /boot → Primária
  • 3000 :: Você deve criar, será montada como: / → Lógica
  • 15000 :: Você deve criar, será montada como: /usr → Lógica
  • 6000 :: Você deve criar, será montada como: /var → Lógica
  • 500 :: Você deve criar, será montada como: /tmp → Lógica
  • 4000 :: Você deve criar, o sistema de arquivos deve ser SWAP ao invés de ext4 e finalize a configuração da partição → Lógica  (Veja imagem abaixo)
  • xxxxxx :: todo o espaço restante que aparecer, você deve criar a partição que será montada como: /home → Lógica

Continua…

Instalação (Parte 2)

Após finalizar a criação das partições você terá uma tela parecida com a que segue abaixo, variando basicamente o tamanho do seu /home.

Observe que, nesse processo, você escolheu o disco que desejava utilizar, criou as partições, escolheu os sistemas de arquivos e ainda definiu os pontos de montagem. Isso me lembra bastante aquele sistema que, quando terminamos a instalação, aparecem as unidades C:… D:… como se fosse mágica. =)

Obs.: Você poderia ver, melhor ainda, esse tipo de coisa se estivesse utilizando uma máquina com vários discos e com necessidade de utilizar algum tipo de RAID + LVM. Fica para um futuro próximo. =)

24. Confirme as mudanças no disco escolhendo “Sim” e tecle ENTER. Aguarde a formatação do disco e a instalação do sistema base:

25. Confirme que não deseja ler outro DVD e tecle ENTER:

26. Confirme que não deseja utilizar espelhos e tecle ENTER:

27. Se vocês desejam acompanhar um pouco mais de perto o que estamos fazendo, escolha “Sim”, caso contrário, escolha “Não” e tecle ENTER:

28. Deixe marcadas as caixas que seguem na imagem abaixo e tecle ENTER:

29. Aguarde o processo de instalação dos pacotes que você selecionou, pode demorar, dependendo do seu hardware:

30. Instale o GRUB escolhendo “Sim” e teclando ENTER:

31. Escolha “Continuar” para reiniciar o sistema e, após isso, seu sistema estará pronto para uso:

32. Faça login no sistema e divirta-se! =)

Configuração

Após você ter feito login no sistema, pressione Alt+F2 e digite:

gnome-terminal

Isso iniciará o terminal que iremos utilizar para realizar as configurações do Debian. Com o terminal aberto, faça o seguinte:

1. Torne-se root:

$ su

Informe a senha do usuário root.

2. Agora devemos configurar o arquivo /etc/apt/sources.list para informarmos os servidores que desejamos utilizar para fazer os downloads dos softwares. Sendo assim, execute os seguintes comandos:

Basta selecionar as linhas abaixo sem o “#” e colar no terminal. O # é apenas para indicar que você deve estar logado como root. Facilita para quem não conhece algum editor em modo CLI. =)

# echo deb http://security.debian.org/ wheezy/updates main contrib > /etc/apt/sources.list
# echo deb-src http://security.debian.org/ wheezy/updates main contrib >> /etc/apt/sources.list
# echo deb http://ftp.br.debian.org/debian/ wheezy main contrib non-free >> /etc/apt/sources.list
# echo deb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free >> /etc/apt/sources.list
# echo \#deb http://ftp.debian.org/debian/ wheezy-updates main contrib >> /etc/apt/sources.list
# echo \#deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib >> /etc/apt/sources.list
# echo \#deb http://ftp.br.debian.org/debian/ wheezy-proposed-updates contrib non-free main >> /etc/apt/sources.list
# echo \#deb-src http://ftp.br.debian.org/debian/ wheezy-proposed-updates contrib non-free main >> /etc/apt/sources.list
# echo deb http://ftp.br.debian.org/debian-multimedia wheezy main non-free >> /etc/apt/sources.list
# echo deb-src http://ftp.br.debian.org/debian-multimedia wheezy main non-free >> /etc/apt/sources.list
# echo deb http://suwako.nomanga.net/debian sid main contrib >> /etc/apt/sources.list
# echo deb-src http://suwako.nomanga.net/debian sid main >> /etc/apt/sources.list
# echo deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main > /etc/apt/sources.list.d/webupd8team-java.list
# echo deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main >> /etc/apt/sources.list.d/webupd8team-java.list

3. Execute o processo abaixo para controlar as versões dos pacotes que irá utilizar:

# echo APT::Default-Release \”wheezy\”\; > /etc/apt/apt.conf

4. Adicione as chaves dos repositórios:

# wget -O – http://suwako.nomanga.net/suwako.asc | apt-key add –
# apt-key adv –keyserver keyserver.ubuntu.com –recv-keys EEA14886
# A=1F41B907 && gpg –keyserver pgpkeys.mit.edu –recv-key $A && gpg -a –export $A | sudo apt-key add –

5. Execute o comando abaixo para sincronizar sua lista de software local com as listas de softwares disponíveis nos servidores remotos. Os quais você adicionou em “/etc/apt/sources.list”:

# apt-get update

6. Remova os softwares indesejáveis. Para quem não gosta de games, por exemplo, pode removê-los com o comando abaixo, para os que gostam, podem pular para o próximo passo:

# apt-get purge gnome-games gnome-games-data gnome-games-extra-data

Obs.: É sempre importante verificar a quantidade e quais pacotes serão removidos, principalmente nos sistemas que estão em versões de teste. No exemplo acima será solicitada a remoção de 19 pacotes, pode removê-los sem medo.

7. Atualize todos os pacotes que restaram no sistema, utilizando o comando abaixo:

# apt-get upgrade

Para os mais espertinhos que já aprenderam que o aptitude é bem parecido com o apt-get e tem “melhor formatação”, cuidado! Ser parecido não é ser igual. Ambos utilizam uma estrutura diferente para seleção de softwares, e em versões de testes, você corre um maior risco de quebrar a relação dos pacotes se utilizar o aptitude ou gerenciadores gráficos que se utilizam do aptitude internamente.

8. Instale os firmwares necessários.

É muito comum, principalmente em notebooks, netbooks e ultrabooks que, até o momento, alguma parte do hardware não esteja funcionando, em destaque segue os adaptadores Wireless. Isso ocorre porque o Debian não traz em suas mídias de instalação firmwares proprietários utilizados por esses dispositivos.

É para resolver esse tipo de coisa que adicionamos o “non-free” ao final daquelas linhas do arquivo sources.list. O “non-free” faz com que tenhamos acesso aos binários de códigos proprietários. Não vou entrar no mérito se isso é bom ou não! Para quem não sabe como contornar, a melhor coisa é usar esses “caras”.

# apt-get install firmware-iwlwifi firmware-linux firmware-linux-free firmware-linux-nonfree firmware-realtek

Acima coloquei os mais comuns, pode ser que algo ainda fique sem funcionar. Para isso verifique o seu hardware com comandos, como:

# lspci
E:
# lsusb

E depois, liste os firmwares que você tem disponível para instalar, com o comando abaixo:

# apt-cache search firmware
Ou:
# aptitude search firmware

Obs.: Este último terá uma melhor formatação. Como é apenas para listar pode usar sem medo de quebrar relações entre os pacotes. =P

Se ainda assim você não encontrar o firmware necessário, será preciso uma busca mais detalhada na WEB e com certeza conseguirá resolver =)

9. Instale os headers do kernel:

# apt-get install linux-headers-$(uname -r)

NVIDIA / Java Oracle 7 e Adobe Flash

Habilitando NVIDIA Optimus através do Bumblebee

Neste ponto é bem importante tratar-se dos recursos gráficos. E como não poderia ser diferente, vejamos como instalar o Bumblebee para habilitar o famoso recurso NVIDIA Optimus no GNU/Linux, uma novidade que invadiu os notebooks mais recentes na tentativa de economizar a bateria.

1. Instale os pacotes abaixo:

# apt-get install build-essential pkg-config help2man libx11-dev libbsd-dev libglib2.0-dev

2. Baixe os seguintes pacotes:

Para i386, baixe no link abaixo:

# wget -v http://sourceforge.net/projects/virtualgl/files/VirtualGL/2.3.2/virtualgl_2.3.2_i386.deb -P /home/`echo $USERNAME`/Downloads/

Para amd64, baixe nos links abaixo:

# wget -v http://sourceforge.net/projects/virtualgl/files/VirtualGL/2.3.2/virtualgl_2.3.2_amd64.deb -P /home/`echo $USERNAME`/Downloads/

# wget -v http://sourceforge.net/projects/virtualgl/files/VirtualGL/2.3.2/virtualgl32_2.3.2_amd64.deb -P /home/`echo $USERNAME`/Downloads/

Baixe o pacote abaixo, ele será utilizado independente da arquitetura ser i386 ou amd64:

# wget -v https://launchpad.net/~bumblebee/+archive/stable/+files/bbswitch-dkms_0.5-1%7Eraringppa1_all.deb -P /home/`echo $USERNAME`/Downloads/

3. Após concluir o download dos pacotes, instale-os utilizando o comando abaixo:

# dpkg -i /home/`echo $USERNAME`/Downloads/*.deb

4. Conserte as dependências rodando o comando abaixo:

# apt-get -f install

5. Em seguida, instale os pacotes abaixo:

# apt-get install nvidia-glx linux-headers-$(uname -r) nvidia-kernel-dkms

Obs.: Confirme com “OK” todas as telas que surgirem.

6. Utilize o comando abaixo para escolher o modo de aceleração GLX:

# update-alternatives –set glx /usr/lib/mesa-diverted

7. Instale o Bumblebee, software que permite utilizarmos o recurso NVIDIA Optimus:

# apt-get install bumblebee bumblebee-nvidia

8. Adicione o root e seu usuário ao grupo do Bumblebee:

# adduser $USER bumblebee
# adduser $USERNAME bumblebee

9. Reinicie o sistema:

# reboot

10. Após reiniciar o sistema realize os testes utilizando os comandos abaixo e comparando as saídas:

# glxgears #Verifique a quantidade de FPS
# optirun glxgears
  # Verifique que a quantidade de FPS aumentou, pois está utilizando o segundo adaptador gráfico
# optirun glxgears -info  # Saída com mais detalhes

Java Oracle 7 e Adobe Flash

Nesta parte veremos como instalar e configurar o Java da Oracle e o Flash da Adobe no Debian Wheezy.

1. Instale o Java utilizando o seguinte comando:

# apt-get install oracle-java7-installer oracle-java7-set-default oracle-jdk7-installer

Obs.: Dê um “OK” e depois aceite os termos de utilização.

2. Configure seu sistema para utilizar o Java da Oracle:

# /usr/sbin/update-alternatives –set java /usr/lib/jvm/java-7-oracle/jre/bin/java

3. Instale o Flash Player da Adobe, utilizando o comando abaixo:

# apt-get install flashplayer-mozilla

4. Configure seu sistema para utilizar o Flash da Adobe:

# /usr/sbin/update-alternatives –set flash-mozilla.so /usr/lib/flashplayer-mozilla/libflashplayer.so

Pronto. =)

Plugins / JMicron SD / Finalizando

Plugins de áudio, vídeo e programas

Nesta parte instalaremos os plugins de áudio e vídeo para que possamos assistir nossos vídeos sem surpresas.

Aproveitarei para relacionar softwares que julgo importantes ter em um desktop. Fiquem à vontade para adicionar e remover o que desejar. Para os que não conhecem os programas que instalaremos a seguir, recomendo pegar o nome do pacote e fazer uma rápida pesquisa no Google e ver para que serve o mesmo.

1. Instalando plugins gstreamer:

# apt-get install gstreamer0.10-alsa gstreamer0.10-buzztard gstreamer0.10-crystalhd gstreamer0.10-dvswitch gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-gnonlin gstreamer0.10-hplugins gstreamer0.10-nice gstreamer0.10-plugins-bad gstreamer0.10-plugins-base gstreamer0.10-plugins-cutter gstreamer0.10-plugins-good gstreamer0.10-plugins-really-bad gstreamer0.10-plugins-ugly gstreamer0.10-pulseaudio gstreamer0.10-x libgstreamer0.10-0

2. Instalando o VLC Player e seus plugins:

# apt-get install browser-plugin-vlc mozilla-plugin-vlc vlc vlc-plugin-*

3. Instalando recursos para suportar novas extensões de compactação de arquivos:

# apt-get install unrar p7zip-rar zip

4. Instalando fontes Microsoft:

# apt-get install ttf-mscorefonts-installer

5. Instalando a versão do Google Chrome Open Source:

# apt-get install chromium

6. Instalando o Skype 4.1 no Debian Multiarch:

# dpkg –add-architecture i386
# apt-get update
# wget -O skype-install.deb
http://www.skype.com/go/getskype-linux-deb
# dpkg -i skype-install.deb
# apt-get install -f

7. Instalando o VirtualBox para rodar suas máquinas de teste:

# apt-get install virtualbox-4.2

Obs.: Após finalizar a instalação execute os comando abaixo para adicionar o root e seu usuário ao grupo “vboxusers”:

# gpasswd -a $USER vboxusers
# gpasswd -a $USERNAME vboxusers

8. Instalando programas de escritório que facilitarão o seu trabalho no dia dia:

# apt-get install planner freemind freemind-browser freemind-plugins-script freemind-plugins-svg dia-gnome scribus pdfshuffler

Configurando JMicron SD

Existe um bug conhecido com o leitor de cartão SD da JMicron. Se você inicializar o sistema com o cartão plugado no leitor, você conseguirá utilizar na boa. Porém, se você inicializar o sistema sem o cartão SD plugado e precisar utilizar o mesmo em seguida, o mesmo não será montado automaticamente.

Para resolver isso, faça os passos abaixo:

1. Crie o arquivo “scan_sd_reader.sh” em /etc/init.d/ e adicione o script abaixo:

# vi /etc/init.d/scan_sd_reader.sh

Ou, para os que estão iniciando e não conhecem o Vi ainda:

# gedit /etc/init.d/scan_sd_reader.sh

2. Cole o conteúdo abaixo no arquivo: “scan_sd_reader.sh”

#!/bin/bash

SCAN_FREQUENCY=2
function scan {
echo “Aguardando inserção de disco no leitor JMicron SD”
# Scan every few seconds for the reader until it is found
while true; do
sleep $SCAN_FREQUENCY
# break if the kernel sees the JMicron reader
pciscan=`lspci|grep JMicron`
if [ “$pciscan” != “” ]; then break; fi
sh -c “echo 1 > /sys/bus/pci/rescan”  # rescan
done
echo “Leitor JMicron SD detectado, possivel disco inserido.”
}

function stop {
for val in `pidof -x “$0″`; do if [ $$ != $val ]; then kill $val ; fi ; done
}

function start {
$0 scan &disown
}

function restart {
stop
start
}

# start/stop
case “$1” in
start) start ;;
scan) scan ;;
stop) stop ;;
restart) restart ;;
force-reload) restart ;;
status) ;;
esac

exit 0

3. Faça com que esse arquivo que criamos possa ser executado. Para isso execute o comando abaixo:

# chmod +x /etc/init.d/scan_sd_reader.sh

4. Faça-o iniciar junto com o sistema utilizando o comando abaixo:

# update-rc.d scan_sd_reader.sh defaults

Pronto. Após reiniciar seu sistema e colocar seu cartão de memória em poucos segundos, o mesmo estará montado. =P

Finalizando

Bom pessoal, poderíamos continuar fazendo milhares de modificações, porém, seria para nichos muito específicos de cada usuário.

Até então, fizemos modificações que, geralmente, grande parte dos usuários utilizam em seus desktops. Daqui pra frente basta que vocês instalem os softwares que precisam para o seu trabalho no dia a dia e sejam felizes por utilizar softwares de qualidade e feitos com carinho para todos.

Para realizar todo o processo de instalação e testes utilizei o notebook Dell XPS 15 L502x, todo o hardware irá funcionar 100% se você seguir os passos apresentados anteriormente.

Espero ter ajudado!

Projeto da Topologia da Rede

 Clusterweb, Firewall, Leitura Recomendada, Linux, Redes, Sistemas de Armazenamento  Comentários desativados em Projeto da Topologia da Rede
maio 212013
 
  • Uma topologia é um mapa de uma rede que indica segmentos de rede (redes de camada 2), pontos de interconexão e comunidades de usuários
  • Queremos projetar a rede logicamente e não fisicamente
    • Identificam-se redes, pontos de interconexão, o tamanho e alcance de redes e o tipo de dispositivos de interconexão
    • Não lidamos (ainda) com tecnologias específicas, dispositivos específicos, nem considerações de cabeamento
  • Nosso objetivo é projetar uma rede segura, redundante e escalável

Projeto hierárquico de uma rede

  • Antigamente, usava-se muito uma rede com estrutura chamada Collapsed Backbone
    • Toda a fiação vai das pontas para um lugar central (conexão estrela)
    • O número de fios não era problemático quando as pontas usavam “shared bandwidth” com cabo coaxial em vez de hubs ou switches
    • Oferece facilidade de manutenção
    • Ainda é bastante usado
  • Hoje, com rede maiores, usa-se cada vez mais uma estrutura hierárquica
  • Um modelo hierárquico ajuda a desenvolver uma rede em pedaços, cada pedaço focado num objetivo diferente
  • Um exemplo de uma rede hierárquica aparece abaixo
  • As 3 camadas mostradas:
    • Camada core: roteadores e switches de alto desempenho e disponibilidade
    • Camada de distribuição: roteadores e switches que implementam políticas
    • Camada de acesso: conecta usuários com hubs e switches

redehierarquica.gif (20045 bytes)

Por que usar um modelo hierárquico?

  • Uma rede não estruturada (espaguete) cria muitas adjacências entre equipamentos
    • Ruim para propagação de rotas
  • Uma rede achatada (camada 2) não é escalável devido ao broadcast
  • Minimiza custos, já que os equipamentos de cada camada serão especializados para uma determinada função
    • Exemplo: Usa switches rápidos no core block, sem features adicionais
  • Mais simples de entender, testar e consertar
  • Facilita  mudanças, já que as interconexões são mais simples
  • A replicação de elementos de torna mais simples
  • Permite usar protocolos de roteamento com “sumarização de rotas”
  • Comparação de estrutura hierárquica com a plana para a WAN
    • Pode-se usar um loop de roteadores
      • OK para redes pequenas
      • Para redes grandes, o tráfego cruza muitos hops (atraso mais alto)
      • Qualquer quebra é fatal

flatloop.gif (6928 bytes)

  • Roteadores redundantes numa hierarquia dão:
    • Mais escalabilidade
    • Mais disponibilidade
    • Atraso mais baixo

wanhierarquica.gif (9802 bytes)

  • Comparação de estrutura hierárquica com plana para a LAN
    • O problema básico é que um domínio de broadcast grande reduz significativamente o desempenho
    • Com uma rede hierárquica, os equipamentos apropriados são usados em cada lugar
      • Roteadores (ou VLANs e switches de camada 3) são usados para delimitar domínios de broadcast
      • Switches de alto desempenho são usados para maximizar banda passante
      • Hubs são usados onde o acesso barato é necessário
  • Topologias de full-mesh e mesh hierárquica
    • A full-mesh oferece excelente atraso e disponibilidade mas é muito cara
    • Uma alternativa mais barata é uma mesh parcial
    • Um tipo de mesh parcial é a mesh hierárquica, que tem escalabilidade mas limita as adjacências de roteadores
    • Para pequenas e médias empresas, usa-se muito a topologia hub-and-spokefullmesh.gif (9134 bytes)

Topologia Full Mesh

meshparcial.gif (8854 bytes)

Topologia Mesh Parcial

hubandspoke.gif (7506 bytes)

Topologia Hub-and-Spoke

O modelo hierárquico clássico em 3 camadas

  • Permite a agregação (junção) de tráfego em três níveis diferentes
  • É um modelo mais escalável para grandes redes corporativas
  • Cada camada tem um papel específico
    • Camada core: provê transporte rápido entre sites
    • Camada de distribuição: conecta as folhas ao core e implementa políticas
      • Segurança
      • Roteamento
      • Agregação de tráfego
    • Camada de acesso
      • Numa WAN, são os roteadores na borda do campus network
      • Numa LAN, provê acesso aos usuários finais
  • A camada core
    • Backbone de alta velocidade
    • A camada deve ser projetada para minimizar o atraso
    • Dispositivos de alta vazão devem ser escolhidos, sacrificando outros features (filtros de pacotes, etc.)
    • Deve possuir componentes redundantes devida à sua criticalidade para a interconexão
    • O diâmetro deve ser pequeno (para ter baixo atraso)
      • LANs se conectam ao core sem aumentar o diâmetro
    • A conexão à Internet é feita na camada core
  • A camada de distribuição
    • Tem muito papeis
      • Controla o acesso aos recursos (segurança)
      • Controla o tráfego que cruza o core (desempenho)
      • Delimita domínios de broadcast
        • Isso pode ser feito na camada de acesso também
      • Com VLANs, a camada de distribuição roteia entre VLANs
      • Interfaceia entre protocolos de roteamento que consomem muita banda passante na camada de acesso e protocolos de roteamento otimizados na camada core
        • Exemplo: sumariza rotas da camada de acesso e as distribui para o core
        • Exemplo: Para o core, a camada de distribuição é a rota default para a camada de acesso
      • Pode fazer tradução de endereços, se a camada de acesso usar endereçamento privativo
        • Embora o core também possa usar endereçamento privativo
  • A camada de acesso
    • Provê acesso à rede para usuários nos segmentos locais
      • Frequentemente usa apenas hubs e switches

Guia para o projeto hierárquico de uma rede

  • Controle o diâmetro da topologia inteira, para ter atraso pequeno
  • Mantenha controle rígido na camada de acesso
    • É aqui que departamentos com alguma independência implementam suas próprias redes e dificultam a operação da rede inteira
    • Em particular, deve-se evitar:
      • Chains (adicionando uma quarta camada abaixo da camada de acesso)
        • Causam atrasos maiores e dependências maiores de tráfego
        • Chains podem fazer sentido para conectar mais um pais numa rede corporativa
      • Portas-dos-fundos (conexões entre dispositivos para mesma camada)
        • Causam problemas inesperados de roteamento

chainsbackdoors.gif (24049 bytes)

  • Projete a camada de acesso primeiro, depois a camada de distribuição, depois o core
    • Facilita o planejamento de capacidade

Topologias redundantes no projeto de uma rede

  • A disponibilidade é obtida com a redundância de enlaces e dispositivos de interconexão
  • O objetivo é eliminar pontos únicos de falha, duplicando qualquer recurso cuja falha desabilitaria aplicações de missão crítica
  • Pode duplicar enlaces, roteadores importantes, uma fonte de alimentação
    • Em passos anteriores, você deve ter identificado aplicações, sistemas, dispositivos e enlaces críticos
  • Para dispositivos muito importantes, pode-se considerar o uso de componentes “hot-swappable”
  • A redundância pode ser implementada tanto na WAN quanto na LAN
  • Há obviamente um tradeoff com o custo da solução

Caminhos alternativos

  • Para backupear enlaces primários
  • Três aspectos são importantes
    • Qual deve ser a capacidade do enlace redundante?
      • É frequentemente menor que o enlace primário, oferecendo menos desempenho
      • Pode ser uma linha discada, por exemplo
    • Em quanto tempo a rede passa a usar o caminho alternativo
      • Se precisar de reconfiguração manual, os usuários vão sofrer uma interrupção de serviço
      • Failover automático pode ser mais indicado
      • Lembre que protocolos de roteamento descobrem rotas alternativas e switches também (através do protocolo de spanning tree)
    • O caminho alternativo deve ser testado!
      • Não espere que uma catástrofe para descobrir que o caminho alternativo nunca foi testado de não funciona!
      • Usar o caminho alternativa para balanceamento de carga evita isso

Considerações especiais para o projeto de uma topologia de rede de campus

  • Os pontos principais a observar são:
    • Manter domínios de broadcast pequenos
    • Incluir segmentos redundantes na camada de distribuição
    • Usar redundância para servidores importantes
    • Incluir formas alternativas de uma estação achar um roteador para se comunicar fora da rede de camada 2

LANs virtuais

  • Uma LAN virtual (VLAN) nada mais é do que um domínio de broadcast configurável
  • VLANs são criadas em uma ou mais switches
  • Usuários de uma mesma comunidade são agrupados num domínio de broadcast independentemente da cabeação física
    • Isto é, mesmo que estejam em segmentos físicos diferentes
  • Esta flexibilidade é importante em empresas que crescem rapidamente e que não podem garantir que quem participa de um mesmo projeto esteja localizado junto
  • Uma função de roteamento (noemalmente localizada dentro dos switches) é usada para passar de uma VLAN para outra
    • Lembre que cada VLAN é uma “rede de camada 2” e que precisamos passar para a camada 3 (rotear) para cruzar redes de camada 2
  • Há várias formas de agrupar os usuários em VLANs, dependendo das switches usadas
    • Baseadas em portas do switches
    • Baseadas em endereços MAC
    • Baseadas em subnet IP
    • Baseadas em protocolos (IP, NETBEUI, IPX, …)
    • VLAN para multicast
      • VLAN criada dinamicamente pela escuta de pacotes IGMP (Internet Group Management Protocol)
    • VLANs baseadas em políticas gerais (com base em qualquer informação que aparece num quadro)
    • Baseadas no nome dos usuários
      • Com ajuda de um servidor de autenticação

Segmentos redundantes de LAN

  • Enlaces redundantes entre switches sõ desejáveis para aumentar a disponibilidade
  • Laços são evitados usando o protocolo Spanning Tree (IEEE 802.1d)
  • Isso fornece redundância mas não balanceamento de carga
    • O protocolo Spanning Tree corta enlaces redundantes (até que sejam necessários)

Redundância de servidores

  • Servidor DHCP
    • Se usar DHCP, o servidor DHCP se torna crítico e pode ser duplicado
    • Em redes pequenas, o servidor DHCP é colocado na camada de distribuição onde pode ser alcançado por todos
    • Em redes grandes, vários servidores DHCP são colocados na camada de acesso, cada um servindo a uma fração da população
      • Evita sobrecarga de um único servidor
    • DHCP funciona com broadcast
      • Somos obrigados a colocar um servidor DHCP para cada domínio de broadcast?
        • Não, se utilizar uma função do roteador de encaminhar broadcast DHCP para o servidor de broadcast (cujo endereço foi configurado no servidor)
  • Servidor DNS
    • O servidor DNS é crítico para mapear nomes de máquinas a endereços IP
    • Por isso, é frequentemente duplicado

Redundância estação-roteador

  • Para obter comunicação fora da rede de camada 2 imediata, uma estação precisa conhecer um roteador
  • Como implementar redundância aqui?
  • O problema básico é que o IP do roteador que a estação conhece é frequentemente configurado manualmente (“parafusado”) em cada estação
  • Há algumas alternativas
  • Alternativa 1: Proxy ARP
    • A estação não precisa conhecer roteadore nenhum
    • Para se comunicar com qualquer máquina (mesmo remota), a estação usa ARP
      • O roteador responde com seu próprio endereço MAC
    • Proxy ARP é pouco usado porque nunca foi padronizado
  • Alternativa 2: DHCP
    • DHCP pode infromar mais coisas do que apenas o endereço IP da estação
    • Pode informar o roteador a usar (ou até mais de um roteador)
    • Alternativa muito usada
  • Alternativa 3: Hot Standby Router Protocol (HSRP) da Cisco
    • É uma alternativa proprietária, mas a IETF está padronizando algo semelhante chamado Virtual Router Redundancy Protocol (VRRP)
    • HSRP cria um roteador fantasma (que não existe de verdade) e vários roteadores reais, um dos quais está ativo, os outros em standby
    • Os roteadores reais conversam entre si para saber qual é o roteador ativo
    • O roteadore fantasma tem um endereço MAC e os roteadores reais podem aceitar quadros de um bloco de endereços MAC, incluindo o endereço MAC do fantasma
    • O roteador fantasma (que nunca quebra!) é o roteador default das estações
    • Quando uma estação usa ARP para descobrir o MAC do fantasma, o roteador ativa, responde (com o MAC do fantasma)
    • Mas quem realmente atende a este endereço MAC é o roteador ativo
    • Se o roteador ativo mudar, nada muda para a estação (continua conversando com o roteador fantasma)

Considerações especiais para o projeto de uma topologia de rede corporativa

  • Considerações especiais sobre:
    • Segmentos redundantes de WAN
    • Conexões múltiplas à Internet
    • Redes Privativas Virtuais (VPN) para montar redes corporativas baratas

Segmentos redundantes de WAN

  • Uso de uma mesh parcial é normalmente suficiente
  • Cuidados especiais para ter diversidade de circuito
    • Se os enlaces redundantes usam a mesma tecnologia, são fornecidos pelo mesmo provedor, passam pelo mesmo lugar, qual a probabilidade da queda de um implicar na queda de outro?
    • Discutir essa questão com o provedor é importante

Conexões múltiplas à Internet

  • Há 4 alternativas básicas para ter acesso múltiplo à Internet

multiinternet.gif (24227 bytes)

  • Opção A
    • Vantagens
      • Backup na WAN
      • Baixo custo
      • Trabalhar com um ISP pode ser mais fácil do que trabalhar com ISPs múltiplos
    • Desvantagens
      • Não há redundância de ISPs
      • Roteador é um ponto único de falha
      • Supõe que o ISP tem dois pontos de acesso perto da empresa
  • Opção B
    • Vantagens
      • Backup na WAN
      • Baixo custo
      • Redundância de ISPs
    • Desvantagens
      • Roteador é um ponto único de falha
      • Pode ser difícil trabalhar com políticas e procedimentos de dois ISPs diferentes
  • Opção C
    • Vantagens
      • Backup na WAN
      • Bom para uma empresa geograficamente dispersa
      • Custo médio
      • Trabalhar com um ISP pode ser mais fácil do que trabalhar com ISPs múltiplos
    • Desvantagens
      • Não há redundância de ISPs
  • Opção D
    • Vantagens
      • Backup na WAN
      • Bom para uma empresa geograficamente dispersa
      • Redundância de ISPs
    • Desvantagens
      • Alto custo
      • Pode ser difícil trabalhar com políticas e procedimentos de dois ISPs diferentes
  • As opções C e D merecem mais atenção
    • O desempenho pode frequentemente ser melhor se o tráfego ficar na rede corporativa mais tempo antes de entrar na Internet
    • Exemplo: pode-se querer que sites europeus da empresa acessem a Internet pelo roteador de Paris mas acessem sites norte-americanos da empresa pelo roteador de New York
      • A configuração de rotas default nas estações (para acessar a Internet) pode ser feita para implementar essa política
    • Exemplo mais complexo: Queremos que sites europeus da empresa acessem sites norte-americanos da Internet pelo roteador de New York (idem para o roteador de Paris sendo usado para acessar a Internet européia pelos sites norte-americanos da empresa)
      • Fazer isso é mais complexo, pois os roteadores da empresa deverão receber rotas do ISP
    • Exemplo mais complexo ainda: tráfego que vem da Internet para sites norte-americanos da empresa devem entrar na empresa por New York (idem para Paris)
      • Neste caso, a empresa deverá anunciar rotas para a Internet
      • Observe que, para evitar que a empresa se torne um transit network, apenas rotas da própria empresa devem ser anunciados!

Redes privativas virtuais

  • Redes privativas virtuais (VPN) permitem que um cliente utilize uma rede pública (a Internet, por exemplo) para acessar a rede corporativa de forma segura
    • Toda a informação é criptografada
  • Muito útil para montar uma extranet (abrir a intranet para parceiros, clientes, fornecedores, …)
  • Muito útil para dar acesso a usuários móveis da empresa
  • Solução muito usada quando a empresa é pequena e tem restrições de orçamento para montar a rede corporativa
  • A técnica básica é o tunelamento
  • O protocolo básico é Point-to-Point Tunneling Protocol (PPTP)

Topologias de rede para a segurança

  • Falaremos mais de segurança adiante
  • Por enquanto, queremos ver os aspectos topológicos da questão

Planejamento da segurança física

  • Verificar onde os equipamentos serão instalados
  • Prevenção contra acesso não autorizado, roubo físico, vandalismo, etc.

Topologias de firewalls para alcançar requisitos de segurança

  • Um firewall é um sistema que estabelece um limite entre duas ou mais redes
  • Pode ser implementado de várias formas
    • Simples: um roteador com filtro de pacote
    • Mais complexo: software especializado executando numa máquina UNIX ou Windows NT
  • Serve para separar a rede corporativa da Internet
  • A topologia mais básica usa um roteador com filtro de pacote
    • Só é suficiente para uma empresa com política de segurança muito simples

firewall1.gif (3471 bytes)

  • A tabela de filtragem de pacotes poderia ser como segue
    • A primeira regra que casa com cada pacote examinado é aplicada
Ação Host local Porta local Host remoto Porta remota
Nega * * mau.ladrao.com *
Permite mailserver 25 * *
Permite * * * 25
Nega * * * *
  • Para melhorar as coisas, pode-se usar endereçamento privativo na rede corporativa
    • Uso de Network Address Translation (NAT) implementada no roteador para acessar a Internet; ou
    • Uso de um proxy para certos serviços (web, ftp, …)
  • Para empresas que precisam publicar informação na Internet (Web, DNS, FTP, …), pode-se ter algumas máquinas na Internet, numa área chamada Demilitarized Zone (DMZ)
    • Os hosts têm que ser muito bem protegidos contra invasões (Bastion Hosts)
    • Um firewall especializado pode ser incluído
      • Fornece uma boa GUI e ações especiais para implementar a política de segurança
    • Há duas topologias básicas
      • Com um roteador
      • Com dois roteadores

firewall2.gif (7701 bytes)

Topologia com 1 roteador e firewall dedicado

firewall3.gif (7372 bytes)

Topologia com 2 roteadores filtrando pacotes

Instalação e Configuração do Munin no Debian 7.0

 Clusterweb, Leitura Recomendada, Linux, Redes  Comentários desativados em Instalação e Configuração do Munin no Debian 7.0
maio 172013
 

Munin é uma ferramenta de monitoramento de rede recurso que pode ajudar a analisar as tendências de recursos e “O que aconteceu para matar nosso desempenho?” problemas. Ele é projetado para ser plug and play. Uma instalação padrão fornece uma série de gráficos com quase nenhum trabalho.

Origem do nome Munin:

Na mitologia nórdica, Huginn (do nórdico antigo “pensamento”) e Muninn (do nórdico antigo “memória” ou “mente”) são um par de corvos que voam por todo o mundo conhecido como Midgard, trazendo informações ao deus Odin. As informações sobre Huginn e Muninn são encontradas no Edda poética, compilação do século XIII de fontes mais antigas; no Edda em prosa e no Heimskringla, escritos no século XIII por Snorri Sturluson; no Terceiro Tratado Gramatical, compilado no século XIII por Óláfr Þórðarson; e na poesia dos escaldos. Por vezes seus nomes são modernamente anglicizados como Hugin e Munin.

O que vou utilizar:

  1. Servidor Munin
  2. IP: 192.168.1.30/24
  3. Nome: munin
  1. Cliente Munin
  2. IP: 192.168.1.31/24
  3. Nome: cliente

Prepare o seu sistema com o seguinte script para que não falte nenhum pacote ou configuração:

#############################################################################################################

Script para configuração Inicial do Debian Squeeze

Aqui somente precisamos obter o script, dar permissão e mandar executar

Dar permissão no script

chmod +x ConfInicialSqueeze.sh

Agora precisamos mandar executar ele

./ConfInicialSqueeze.sh -i
ConfInicialSqueeze.sh
#!/bin/sh
#-------------------------------------------------------------------------
# ConfInicialSqueeze
#
# Site	: http://www.*.com.br
# Autor : Douglas Q. dos Santos <douglas@douglas.wiki.br>
# Manutenção: Douglas Q. dos Santos <douglas@douglas.wiki.br>
#
#-------------------------------------------------------------------------
# Efetua a configuração de repositórios e a instalação de alguns pacotes,
# necessários.
#-------------------------------------------------------------------------
# Histórico:
#
# Versão 1:
# Data: 22/02/2011
# Descrição: Efetua a Configuracao do Debian GNU/Linux Squeeze
# configurando repositórios e instalando alguns pacotes
#
# Versão 2: 
# Data: 14/05/2011
# Descrição: Efetuado a validação da atualização dos repositórios,
# validacao da instalacao dos pacotes, e validacao do arquivo de backup
# Adicionadas as opcoes -V, --version, -h, --help, -i, -install, -l, --log
#--------------------------------------------------------------------------
#Licença: http://creativecommons.org/licenses/by-sa/3.0/legalcode
#
#--------------------------------------------------------------------------
#clear
INICIO=$(date)

# DEFINIÇÃO DAS CORES USADAS NO SCRIPT
GREY="\033[01;30m" RED="\033[01;31m" GREEN="\033[01;32m" YELLOW="\033[01;33m"
BLUE="\033[01;34m" PURPLE="\033[01;35m" CYAN="\033[01;36m" WHITE="\033[01;37m"
CLOSE="\033[m"

# VALIDANDO O USUARIO QUE ESTA EXECUTANDO O SCRIPT
USU=$(whoami)

if [ "${USU}" != root ]; then
  echo
  echo "${RED}###################################################################################"
  echo " ESTE PROGRAMA PRECISA SER EXECUTADO COM PERMISSOES DE SUPERUSUARIO!"
  echo " Abortando..."
  echo "####################################################################################${CLOSE}"
  echo
  exit 1
fi

# DECLARAÇÃO DA FUNÇÃO DE INSTALAÇÃO
INSTALL()
{
echo  "${RED}####################################################################${CLOSE}"
echo "${RED} Este script estara trabalhando com o seguinte processo ${GREEN} $$ ${CLOSE}   ${CLOSE}"
echo  "${RED}####################################################################${CLOSE}"
sleep 3

# COMANDOS UTILIZADOS NO SCRIPT 
CAT=$(which cat)
APTGET=$(which apt-get)
APTITUDE=$(which aptitude)
CAT=$(which cat)
CRONTAB=$(which crontab)
CP=$(which cp)
RM=$(which rm)
NTPDATE=$(which ntpdate)
REBOOT=$(which reboot)
TZCONFIG=$(which tzconfig)
WGET=$(which wget)
GPG=$(which gpg)
APT_KEY=$(which apt-key)
MKDIR=$(which mkdir)
SED=$(which sed)
LOCALE_GEN=$(which locale-gen)
CD="cd"
CHSH="/usr/bin/chsh"

# PACOTES A INSTALAR E A REMOVER
#PACOTES_A_REMOVER="dhcp3-client dhcp3-common nfs-common"
PACOTES_A_INSTALAR="vim vim-scripts ctags vim-doc zip unzip rar p7zip bzip2 less links telnet locate openssh-server sysv-rc-conf rsync build-essential libncurses5-dev ntpdate postfix cmake sudo git makepasswd"
FERRAMENTAS="atsar tcpstat ifstat dstat procinfo pciutils dmidecode htop nmap tcpdump usbutils strace ltrace hdparm sdparm iotop atop iotop iftop sntop powertop itop kerneltop dos2unix tofrodos chkconfig zsh"
#SEPRECISAR="mytop ptop dnstop vnstat"
# ARQUIVOS E DIRETÓRIOS USADOS PARA A GERAÇÃO DOS LOGS 
DIR_LOGS="/root/logs"
LOGS="${DIR_LOGS}/ConfInicialSqueeze"

### AJUSTANDO O APT ###
APT="/etc/apt"

# VALIDA SE JA EXISTE O ARQUIVO DE BACKUP DO sources.list
if [ -f ${APT}/sources.list.bkp ]; then
	echo "${GREEN}Digite um novo nome para o arquivo de backup do sources.list ou pressione ENTER${CLOSE}"
	read SOURCES
	APTBKP=${SOURCES}

        if [ -z ${SOURCES} ]; then
	APTBKP=sources.list.bkp
        fi
else
	echo "${RED}Vou fazer um backup do arquivo sources.list com o nome sources.list.bkp${CLOSE}"
	APTBKP=sources.list.bkp
fi

# EFETUANDO BACKUP DO ARQUIVO DE REPOSITORIOS
${CP} -Rf ${APT}/sources.list ${APT}/${APTBKP} 

# REFAZENDO O ARQUIVO COM OS REPOSITORIOS
${CAT} << EOF > $APT/sources.list
# DATA DA GERACAO DO NOVO ARQUIVO: $(date)
# REPOSITÓRIO OFICIAL 
deb http://ftp.br.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.br.debian.org/debian squeeze main contrib non-free

# REPOSITÓRIO DE ATUALIZAÇÕES FREQUENTES
#deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# REPOSITÓRIO DE ATUALIZAÇÕES DE SEGURANÇA 
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# REPOSITÓRIO DE ATUALIZAÇÕES PROPOSTAS
deb http://ftp.br.debian.org/debian squeeze-proposed-updates main contrib non-free
deb-src http://ftp.br.debian.org/debian squeeze-proposed-updates main contrib non-free

#REPOSITORIO BACKPORT
#deb http://ftp.br.debian.org/debian-backports/ squeeze-backports main contrib non-free
#deb-src http://ftp.br.debian.org/debian-backports/ squeeze-backports main contrib non-free

# REPOSITÓRIO BACKPORT 
#deb http://www.backports.org/debian squeeze-backports main contrib non-free
#deb-src http://www.backports.org/debian squeeze-backports main contrib non-free

# PLUGINS MULTIMIDIA 
#deb http://ftp.br.debian.org/debian-multimedia/ squeeze main
#deb http://www.debian-multimedia.org squeeze main

# PHP5 BACKPORT 
#deb http://packages.dotdeb.org squeeze all
#deb-src http://packages.dotdeb.org squeeze all

# POSTFIX COM PATCH PARA COTAS. 
#deb http://debian.home-dn.net/squeeze postfix-vda/
#deb-src http://debian.home-dn.net/squeeze postfix-vda/
EOF

# ATUALIZANDO OS REPOSITÓRIOS
${APTITUDE} -y update || { echo "${RED} FALHA AO ATUALIZAR OS REPOSITORIOS ${CLOSE} "; exit 1; }

# ATUALIZANDO AS CHAVES DE REPOSITÓRIOS (KEYRINGS) 
${APTITUDE} -y install debian-archive-keyring || { echo "${RED} ERRO NO NOME DOS PACOTES"; exit 1; }
${GPG} --keyserver pgp.uni-mainz.de --recv-keys 1F41B907 || { echo "${RED} ERRO NA IMPORTAÇÃO DAS CHAVES ${CLOSE}"; exit 1; }
#${GPG} --keyserver pgpkeys.mit.edu --recv-keys 1F41B907 || { echo "${RED} ERRO NA IMPORTAÇÃO DAS CHAVES ${CLOSE}"; exit 1; }
${GPG} --keyserver pgp.uni-mainz.de --recv-key A2098A6E || { echo "${RED} ERRO NA IMPORTAÇÃO DAS CHAVES ${CLOSE}"; exit 1; }
#${GPG} --keyserver pgpkeys.mit.edu --recv-key A2098A6E || { echo "${RED} ERRO NA IMPORTAÇÃO DAS CHAVES ${CLOSE}"; exit 1; }
${APT_KEY} add ~root/.gnupg/pubring.gpg 

### MUDAR O DEBCONF PARA CRITICAL, PARA QUE NAO SEJAM FEITAS PERGUNTAS DESNECESSARIAS ###
export DEBIAN_PRIORITY=critical 
export DEBIAN_FRONTEND=noninteractive

# INSTALANDO PACOTES ALGUNS PACOTES 
${APTITUDE} install ${PACOTES_A_INSTALAR} -y
${APTITUDE} install ${FERRAMENTAS} -y

### VOLTANDO O DEBCONF AO SEU PADRAO ###
unset DEBIAN_PRIORITY
unset DEBIAN_FRONTEND

# ATUALIZANDO O SISTEMA 
${APTITUDE} -y dist-upgrade || { echo "${RED} ERRO NÃO FOI POSSÍVEL ATUALIZAR O SISTEMA ${CLOSE}"; exit 1; }

# HABILITA A syntax no vim
${WGET} -c http://www.douglas.wiki.br/Downloads/scripts/.vimrc -O /root/.vimrc

#CONVERTE O ARQUIVO PARA O FORMATO UNIX
DOS2UNIX=$(which dos2unix)
${DOS2UNIX} /root/.vimrc

# LIMPANDO O TERMINAL NO LOGOFF 
echo "clear" > .bash_logout

# AJUSTANDO O BASHRC
${CAT} << EOF > /root/.bashrc
#VARIAVEIS PARA O SHELL DO ROOT
alias ls='ls --color=auto'
alias ll='ls -l'
alias l='ls -lA'
alias df='df -Th'
alias grep='grep --color'
alias egrep='egrep --color'
export EDITOR=vim
export PS1='\[\033[01;31m\][\[\033[01;37m\]\t\[\033[01;31m\]] \[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\][\[\033[01;33m\]\w\[\033[01;31m\]] \[\033[01;37m\]# \[\033[00m\]'
EOF

# AJUSTANDO O BASHRC
${CAT} << EOF > /etc/skel/.bashrc
#VARIAVEIS PARA O SHELL DO ROOT
alias ls='ls --color=auto'
alias ll='ls -l'
alias l='ls -lA'
alias df='df -Th'
alias grep='grep --color'
alias egrep='egrep --color'
export EDITOR=vim
export PS1='\[\033[01;31m\][\[\033[01;37m\]\t\[\033[01;31m\]] \[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\][\[\033[01;33m\]\w\[\033[01;31m\]] \[\033[01;37m\]$ \[\033[00m\]'
EOF

${CP} /root/.bashrc /root/.bashrc.old

#ACERTANDO ERRO NA INICIALIZAÇÃO DA MAQUINA
echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist.conf

#ACERTANDO A LOCALIZAÇÃO
${SED} -i "s/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/g" /etc/locale.gen
${SED} -i "s/# pt_BR ISO-8859-1/pt_BR ISO-8859-1/g" /etc/locale.gen

${LOCALE_GEN}

${CP} /etc/default/locale /etc/default/locale.bkp

${CAT} << EOF > /etc/default/locale
LANG="pt_BR.UTF-8"
LANGUAGE="pt_BR:pt:en"
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=
EOF

# AJUSTANDO O CRONTAB 
CRON=/tmp/cron

# TAREFAS AGENDADAS NO CRON
${CAT} << EOF > ${CRON}
# Minuto Hora Dia Mês Dia_da_Semana Usuário Comando
#
# Minuto - Definição dos minutos da execução (0-59)
# Hora - Definição da hora da execução formato 24 horas (0-23)
# Dia - Definição do dia do mês da execução (1-31)
# Mês - Definição do mês da execução (1-12)
# Dia_da_semana - Dia da semana. (0-7; obs.: 0 e 7 referem-se ao domingo).
# Usuário - Definição do usuário responsável pela execução do comando.
# Comando - Comando que será executado conforme o tempo especificado.
# Ex: Agendar tarefa a cada 8 horas: * */8 * * * usuario /dir/tarefa
#
0 */8      *       *       *       /usr/bin/aptitude update
0 */6      *       *       *       /usr/sbin/ntpdate -u ntp.usp.br
0 */12     *       *       *       /usr/bin/updatedb
EOF

# REMOVE O CRONTAB
${CRONTAB} -r

# AGENDAR UM NOVO CRONTAB
${CRONTAB} ${CRON}

# ELIMINAR O ARQUIVO TEMPORARIO DO CRONTAB
${RM} -rf ${CRON}

#Baixando a ultima versão dos firmwares do kernel
GIT=$(which git)
${CD} /usr/src
${GIT} clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git firmware
${CP} -Rfa firmware/* /lib/firmware/

#MUDANDO O SHELL DO ROOT
${CHSH} -s /bin/zsh
${WGET} -c www.douglas.wiki.br/Downloads/scripts/zshrc -O /root/.zshrc
${DOS2UNIX} /root/.zshrc
${CP} /root/.zshrc /etc/skel

# REMOVENDO PACOTES DESNECESSARIOS ###
#${APTGET} remove ${PACOTES_A_REMOVER} --purge -y

# VALIDA SE EXISTE O DIRETÓRIO DE LOGS
if test "${GERA_LOG}" = 1
then
	if [ ! -d ${DIR_LOGS} ]; then
		${MKDIR} -p  ${DIR_LOGS}
	fi

# GERAÇÃO O DO ARQUIVO DE LOG
echo 
echo "LOGS DA INSTALAÇÃO NA MAQUINA $(hostname -f)" >> ${LOGS}
echo "DATA E HORA DO IN͍CIO DA INSTALAÇÃO: ${INICIO}" >> ${LOGS}
echo "NOME DO ARQUIVO DE BACKUP DO APT: ${APTBKP}" >> ${LOGS}
echo "PACOTES QUE FORAM INSTALADOS ${PACOTES_A_INSTALAR}" >> ${LOGS}
echo "FERRAMENTAS QUE FORAM INSTALADAS ${FERRMENTAS}" >> ${LOGS}
echo "PACOTES QUE FORAM REMOVIDOS ${PACOTES_A_REMOVER}" >> ${LOGS} 
echo "DATA E HORA DO FINAL DA INSTALAÇÃO: $(date)" >> ${LOGS}
echo 

fi

# REINICIALIZAR A MAQUINA
${REBOOT}
}

GERA_LOG=0 #DEVE SER GERADO LOGS DAS OPERACOES
export GERA_LOG

MSG_USO="
Uso: $(basename "$0") [OPÇÕES]

OPÇÕES:
-i, --install	Efetua a instalação dos pacotes e a configuracão do sistema.
-l, --log	Efetua a geração de logs dos processos
-h, --help	Mostra esta tela de ajuda e sai
-V, --version	Mostra a versão do programa e sai

EX: ./$(basename "$0") -l -i Habilita a opção de geração de log e efetua a instalação
"

# TRATAMENTO DAS OPÇÕES DA LINHA DE COMANDO
if [ -z "$1" ]; then
echo "${RED} ${MSG_USO} ${CLOSE}"
exit 0
fi

# TRATAMENTO DAS OPÇÕES DE LINHA DE COMANDO
while test -n "$1"
do
case "$1" in
	-h | --help)
		echo "${RED}${MSG_USO}${CLOSE}"
		exit 0 #Programa terminou de forma normal
	;;

	-V | --version)
		echo -n $(basename "$0")
		#Extrai a versão diretamente dos cabeçalhos do programa
		VER=$(grep '^# Versão ' "$0" | tail -1 | cut -d ':' -f 1 | tr -d \#)
		echo "${GREEN} ${VER} ${CLOSE}"
		exit 0
	;;

	-l | --log)
		GERA_LOG=1
		export GERA_LOG
	;;	

	-i | --install)
		INSTALL
	;;

	*)
		if test -n "$1"
		then
		echo "Opção inválida: $1"
		exit 1 #Programa terminou de forma anormal por causa de um erro.
		fi
	;;
esac
#FILA $1 JA PROCESSADA, A FILA DEVE ANDAR
shift 
done

#############################################################################################################

Agora vamos mandar atualizar os repositórios e mandar fazer um upgrade do sistema nos servidores

aptitude update && aptitude dist-upgrade -y

Agora no servidor Munin vamos instalar o Apache que é por onde vamos visualizar os nossos relatórios e vamos instalar também o próprio munin

apt-get install apache2 munin munin-node munin-plugins-extra -y

Agora vamos ajustar a configuração do munin server vamos mudar o nome dele de localhost.localdomain para debian e vamos adicionar o cliente.

vim /etc/munin/munin.conf
[...]
#Agora vamos trocar o localhost.localdomain por debian igual abaixo
[munin]
     address 127.0.0.1
     use_node_name yes

#Agora vamos adicionar as linhas abaixo referente ao cliente
[client]
     address 192.168.1.31
     use_node_name yes

Agora vamos fazer o munin reconhecer todos os plugins que ele pode utilizar

Vamos acessar o diretório dos plugins do munin

cd /usr/share/munin/plugins

Agora vamos mandar rodar o script que reconhece os serviços que ele vai poder monitorar

munin-node-configure --suggest

Agora vamos fazer um ajuste no arquivo de configuração das interfaces de rede

sed -i '/$MUNIN_LIBDIR/{h;s/.*/MUNIN_LIBDIR=\/usr\/share\/munin/;p;x;}' /usr/share/munin/plugins/if_

Agora vamos mandar rodar o script que vai encontrar as interfaces de redes que vão ser monitoradas

./if_ suggest

Agora vamos fazer um ajuste no arquivo de configuração do apache

sed -i 's/Allow from localhost */#Allow from localhost /g' /etc/apache2/conf.d/munin
sed -i '/#Allow from/{h;s/.*/        Allow from all/;p;x;}' /etc/apache2/conf.d/munin

Agora vamos mandar reiniciar o apache e o munin

/etc/init.d/apache2 restart
/etc/init.d/munin-node restart

Configuração do Cliente

Agora vamos instalar os pacotes no cliente.

apt-get install munin munin-node munin-plugins-extra -y

Agora vamos adicionar o endereço ip do servidor para poder obter os dados do servidor

sed -i '/allow ^127\\./{p;s/.*/allow ^192\\.168\\.1\\.30$/;}' /etc/munin/munin-node.conf

Agora vamos fazer o munin reconhecer todos os plugins que ele pode utilizar

Vamos acessar o diretório dos plugins do munin

cd /usr/share/munin/plugins

Agora vamos mandar rodar o script que reconhece os serviços que ele vai poder monitorar

munin-node-configure --suggest

Agora vamos fazer um ajuste no arquivo de configuração das interfaces de rede

sed -i '/$MUNIN_LIBDIR/{h;s/.*/MUNIN_LIBDIR=\/usr\/share\/munin/;p;x;}' /usr/share/munin/plugins/if_

Agora vamos mandar rodar o script que vai encontrar as interfaces de redes que vão ser monitoradas

./if_ suggest

Agora vamos mandar reiniciar o munin

/etc/init.d/munin-node restart

Agora vamos mandar reiniciar o munin do servidor

/etc/init.d/munin-node restart

Agora já podemos acessar o munin em http://192.168.1.30/munin os relatório demoram em média uns 5 minutos para serem gerados os primeiros.

Configuração do VirtualHost

Agora em nosso servidor vamos configurar um virtualhost para o Munin

vim /etc/apache2/sites-available/munin
<VirtualHost *:80>
 ServerName munin.douglas.wiki.br
 ServerAlias monitor.douglas.wiki.br
 DocumentRoot "/var/cache/munin/www"

 #Controle de acesso ao munin
 <Directory "/var/cache/munin/www">
 Options -Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all

 #Autenticação do munin
 AuthUserFile /etc/munin/munin-htpasswd
 AuthName "Munin"
 AuthType Basic
 require valid-user
 </Directory>

 <IfModule mod_expires.c>
     ExpiresActive On
     ExpiresDefault M310
 </IfModule>

 #Configuração dos logs do apache
 ErrorLog ${APACHE_LOG_DIR}/munin.douglas.wiki.br-error.log
 CustomLog ${APACHE_LOG_DIR}/munin.douglas.wiki.br-access.log common

 #Retirando a assinatura do Apache
 ServerSignature Off

 IndexIgnore .??* *~ *# README RCS CVS *,v *,t *

 # Possible values include: debug, info, notice, info, error, crit,
 # alert, emerg.
 LogLevel info
</VirtualHost>

Agora vamos criar um usuário e uma senha para acesso ao munin, aqui eu vou criar o usuário chamado munin

htpasswd -s -c /etc/munin/munin-htpasswd munin
New password: 
Re-type new password: 
Adding password for user munin

Agora vamos remover os sites default do apache

a2dissite default
a2dissite default-ssl

Agora vamos ativar o virtualhost do munin

a2ensite munin

Agora vamos reiniciar o apache

/etc/init.d/apache2 restart

Agora é só acessar http://munin.viazap.wiki.br ou http://ip_servidor, aqui agora vamos precisar informar o usuário munin e a senha que foi definida com htpasswd -s -c

Agora para adicionar mais clientes precisamos somente adicionar no servidor uma nova entrada para o cliente e no cliente adicionar o ip do servidor como já fizemos acima e mandar reiniciar o munin do servidor e do cliente.

Migrando Servidores Zimbra

 Clusterweb, Leitura Recomendada, Linux, Servidor de E-mail  Comentários desativados em Migrando Servidores Zimbra
maio 082013
 

O Zimbra é um servidor de colaboração completo, o “lindo” nome é porque ele foi criado pela empresa Zimbra e depois comprado pelo Yahoo e finalmente pela VMware mas como o nome já estava consolidado ficou :-P . Ele é um concorrente direto do Exchange da Microsoft e como ele tem: Email, agenda colaborativa, interface de administração completa, Porta Arquivos e gerenciamento de recursos, possui cliente integrado de Email (Exchange tem o Outlook ele tem o Zimbra Desktop), etc…

Pode ser comprado com Licença de suporte e uso, pode também ser utilizado em sua versão Open Source que conta com todas as funcionalidades principais. Possui muita documentação (wiki.zimbra.com) e integra com LDAP, Active Directory, etc.

Mas eu vou falar hoje sobre migração entre servidores Zimbra, já trabalho com ele há alguns anos e em alguns clientes chegou a hora de atualizar a versão. É uma tarefa simples, dá um pouco de trabalho mas é simples, basta ter um servidor novo instalado e funcionando(basta seguir alguns dos muitos tutoriais que existem por aí para isso :-) ) e fazer a migração.

Já migrei de Zimbra 5.0.9 para 7, de 6 para 8 e de 7 para 8. Esse procedimento funcionou em todas as migrações que fiz para a versão 8 do Zimbra, que é a mais nova e muito mais rápida. Portanto faça em uma ambiente de teste, confira se há igualdade nas contas dos servidores e depois pode fazer a migração. Lembre-se que não é atualizar o software, é migrar para outro servidor com versão mais nova do software.

Esse procedimento não altera nada no servidor de produção, ou seja, pode fazer que continua tudo funcionando.

 

Vamos à migração.

Com os dois servidores na mesma rede, vamos de 192.168.1.250 produção e 192.168.1.251 migração, vamos começar o processo.

Primeiro sincronizamos as contas, podem ser todas ou apenas algumas, no caso faremos com todas. No servidor de migração faremos o serviços através de linha de comando, mas não se preocupe farei um pequeno tutorial sobra a função na interface de administração posteriormente :-) .

Se você tem 10 ou 20 usuários crie de novo e deixe de preguiça :-P , mas se tem 200, 400, 1500, 2500… Faça com scripts que é muito melhor :-)

Primeiro vamos obter uma lista das contas e dados básicos dos usuários com o seguinte procedimento:

Logue no servidor de produção como root e mude para usuário zimbra:
# su – zimbra

Entre no diretório /tmp e crie um diretório contas:
$ cd /tmp
$ mkdir contas

Crie o seguinte script no /tmp que irá obter os dados(nome completo(displayName, primeiro nome(givenName), sobrenome(sn),senha(userPassword) dos usuários e gravá-los nos diretório contas:

vi obtem-contas-zimbra.sh
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
for MAIL in $($ZMPROV -l gaa | sort); 	do
		DNOME=$($ZMPROV -l ga $MAIL displayName | grep displayName | awk -F " " '{print $2" "$3" "$4" "$5}')
		PNOME=$($ZMPROV -l ga $MAIL givenName | grep givenName | awk -F " " '{print $2}')
		SNOME=$($ZMPROV -l ga $MAIL sn | grep sn | awk -F " " '{print $2}')
		SENHA=$($ZMPROV -l ga $MAIL userPassword | grep userPassword | awk -F " " '{print $2}')

   		echo "Conta: $MAIL" > contas/dados-$MAIL
   		echo "Display: $DNOME" >> contas/dados-$MAIL
		echo "Nome: $PNOME" >> contas/dados-$MAIL
		echo "Sobrenome: $SNOME" >> contas/dados-$MAIL
		echo "Senha: $SENHA" >> contas/dados-$MAIL
done

Esse script irá criar um arquivo no diretório contas com o nome dados-EMAIL_DA_PESSOA com os dados necessários.

Execute o script da seguinte forma:

$ chmod 755 obtem-contas-zimbra.sh
$ ./obtem-contas-zimbra.sh

Agora basta copiar esse diretório para o servidor de migração(ftp, ssh, rsync, pendrive, cd-rom … use seu recurso preferido).

No servidor de migração logue como root, mude para o usuário zimbra e copie o diretório contas para o /tmp :

# su – zimbra
$ cd /tmp

Agora crie o seguinte script para criar os usuários:

vi cria-contas.sh

#!/bin/bash
# Cria as contas no Zimbra
ZMPROV="/opt/zimbra/bin/zmprov"
for DADOS in $(ls contas); do

	EMAIL=$(grep Conta contas/$DADOS | awk -F " " '{print $2}')
	DNAME=$(grep Display contas/$DADOS | awk -F " " '{print $2" "$3" "$4" "$5}')
	PNAME=$(grep Nome contas/$DADOS | awk -F " " '{print $2}')
	SNAME=$(grep Sobrenome contas/$DADOS | awk -F " " '{print $2}')
	SENHA=$(grep Senha contas/$DADOS | awk -F " " '{print $2}')

	$ZMPROV ca "$EMAIL" "$SENHA" displayName "$DNAME" givenName "$PNAME" sn "$SNAME"
	done

Esse script lê todos os arquivos do diretório contas, transforma os dados que obtivemos no servidor de produção e cria as contas, caso algum dados não exista(displayName, givenName, sn) ele cria com valor padrão do nome da conta. Não podem estar vazios EMAIL e SENHA.

Execute o script da seguinte forma:

$ chmod 755 cria-contas.sh
$ ./cria-contas.sh

Pronto, com os usuários criados vamos aos emails, se pudermos parar o servidor de produção podemos criar exportar as mensagens conta a conta e depois importar no servidor de migração, mas se não pudermos temos um script de sincronia chamado imapsync, que pode nos ajudar.

Vou colocar aqui os dois métodos utilizados para que vocês possam escolher.

O primeiro método iremos parar o recebimento de email, pode ser desligando o acesso externo, pode ser bloqueando as portas de leitura/recebimento, bem você é quem sabe. Vamos ao procedimento:

No servidor de produção, faça o seguinte:

# su – zimbra
$ cd /tmp
$ mkdir mensagens

Agora vamos usar o seguinte script para importar as caixas:

vi obtem-mensagens.sh
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
ZMMAILBOX="/opt/zimbra/bin/zmmailbox"
for MAIL in $($ZMPROV -l gaa | sort); 	do
		$ZMMAILBOX -z -m $MAIL getRestURL "//?fmt=tgz" > mensagens/$MAIL.tgz
done

Execute o script da seguinte forma:

$ chmod 755 obtem-mensagens.sh
$ ./obtem-mensagens.sh

Com esse script criamos um arquivos chamado, emaildousuario@dominio.com.br.tgz dentro do diretório mensagens, agora basta compartilhar esse diretório(copiar pode ser inviável se for muito grande, eu lidei com diretórios com mais de 200GB e sei disso :-) ), pode compartilhar via NFS, SMB, CIFS, GlusterFS, o que você desejar, desde que compartilhe com o servidor de migração.

No servidor de migração entre no diretório onde as mensagens foram compartilhadas e faça o seguinte como usuário zimbra(ele tem que ter direito de leitura/escrita no diretório para criar o script e para ler os arquivos. Ex: /mnt/mensagens

# su – zimbra
$ cd /mnt/

Crie o seguinte script:

vi importa-mensagens.sh

#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
ZMMAILBOX="/opt/zimbra/bin/zmmailbox"
for MAIL in $($ZMPROV -l gaa | sort); 	do
                $ZMMAILBOX -z -m $MAIL postRestURL "//?fmt=tgz&resolve=reset" mensagens/$MAIL.tgz 
done

Execute o script da seguinte forma:

$ chmod 755 importa-mensagens.sh
$ ./importa-mensagens.sh

Pronto, todas as mensagens estão importadas, agora basta conferir e habilitar o servidor novo para receber e enviar as mensagens.

Mas se você não pode parar o servidor para exportar/importar as mensagens pode usar o script imasync para fazer a sincronia com os servidores online.

Utilizei a versão 1.3.15, as anteriores deram erro.

Já estando com as contas criadas lembre de liberar o login em texto plano (para a migração apenas), crie no servidor de migração o seguinte script:

vi migra-mensagens.sh
#!/bin/bash
ZMPROV="/opt/zimbra/bin/zmprov"
for USER in $($ZMPROV -l gaa); do

imapsync --nosyncacls --host1 192.168.1.250 --host2 192.168.1.251 --authmech1 PLAIN --authmech2 PLAIN --ssl1 --user1 $USER --authuser1 admin@dominio.com.br --password1 'senha_do_admin_zimbra_producao' --ssl2 --user2 $USER --authuser2 admin@dominio.com.br --password2 'senha_do_admin_zimbra_migracao'

done

Agora execute:

$ chmod 755 migra-mensagens.sh
$ ./migra-mensagens.sh

Pronto, contas e mensagens criadas. Se o servidor não for entrar em produção no dia, basta repetir o script que ele atualiza as mensagens que ainda não estão no servidor de migração.