segunda-feira, 23 de novembro de 2009

Instalando e Configurando um Servidor Web com Apache


Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o servidor Web mais utilizado no mundo inteiro: O Apache.
O Servidor Web Apache é robusto e seguro e de longe é um dos projetos mais ativos e promissores do mundo do Software Livre.
O projeto tem sua página oficial em http://www.apache.org/
Além disso o projeto Apache abriga diversos outros projetos de sucesso como o Tomcat e o SpamAssassin.

Arquivo de Configuração:
/etc/apache2/apache2.conf

Daemon:
/etc/init.d/apache2

Porta Tcp: 80

1 - Instalando o Apache
# apt-get install apache2

Depois disso, pode ir a algum browser do tipo (Firefox ou Internet Explorer) e digitar:
http://ip.do.servidor

Exemplo:
http://192.168.0.1

Porém esta é uma configuração muito básica. Neste teste irá apenas aparecer uma página com os dizeres... "It works!" dizendo que o servidor está no ar.

O diretório padrão do apache é o /var/www e se lá você criar um subdiretório chamado teste e colocar uma arquivo index.html com a palavra teste dentro poderá chamá-lo da seguinte maneira:
http://192.168.0.1/teste

Disponibilizando arquivos para Download
As configurações padrões do apache, já fazem com que ele se comporte como um "FTP" via web. Se você apenas criar um link de um diretório na pasta base dele, já aparece como arquivos para download. Vejamos:

# cd /var/www
ln -s /etc/ arquivos (criei um link chamado arquivos que aponta para o diretório /etc)

Vá no browser e digite: http://192.168.0.1/arquivos

Veja o resultado:










Veja que todos os arquivos do diretório /etc/ estão lá disponíveis para download.
Como foi feito isso apenas criando um Link, você também pode criar um diretório tipo /var/www/mp3 e disponibilzar músicas para download.










Se forem criadas várias pastas, elas poderão ser acessadas desta forma. Mas há uma maneira de fazer com que estas pastas sejam acessadas diretamente com números de IP, ou ainda utilizando o nome de Domínio como www.dailson.com.br.
Imagine a seguinte situação:

www.site1.com.br = 192.168.0.2

www.joao.com.br = 192.168.0.3


Essa é a maneira que os provedores trabalham. Cada domínio em um IP. Cada IP em um diretório e assim fazemo com que apenas uma máquina responda por vários domínios.
Para isso temos que aprender a trabalhar com Virtual Hosts (Hospedeiros Virtuais).

Antes disso, precisamos fazer com que nossa máquina responda por vários IPs. Para isso, basta criarmos IPs virtuais.

Configurando Ips Virtuais:
Se você deseja que seu servidor responda por vários Ips, é necessária a criação de interfaces virutais. Isso pode ser feito diretamente com o comando ifconfig ou dentro do arquivo /etc/network/interfaces:
Usando o comando ifconfig
Basta colocar a interface seguida de dois pontos e o número da interface vitual. Iniciando em zero.
Exemplos:

Cria a interface virutal eth0:0
# ifconfig eth0:0 192.168.0.2 netmask 255.0.0.0 up

Cria a interface virutal eth0:1
# ifconfig eth0:1 192.168.0.3 netmask 255.0.0.0 up

Cria a interface virutal eth0:2
# ifconfig eth0:2 192.1681.0.4 netmask 255.0.0.0 up

Se você quiser mais detalhes de como proceder de forma correta com configuração de redes no Linux (Debian e Derivados) acesse este tutorial:

http://www.dailson.com.br/2009/05/configuracao-de-rede-no-debian-gnulinux.html

Criando Virtual Hosts

A Técnica de Virtual Hosts faz com que o apache redirecione o IP diretamente para uma Pasta.
Para criar IPs virtuais:

1 - Abra o arquivo /etc/apache2/httpd.conf
# vi /etc/apache2/httpd.conf

Crie a seguinte configuração:
1 - Crie os IPs virtuais

Neste nosso exemplo vou criar os IPs virtuais: 192.168.0.1 e 192.168.0.2
# ifconfig eth0:0 192.168.0.2 netmask 255.0.0.0 up
# ifconfig eth0:1 192.168.0.3 netmask 255.0.0.0 up

2 - Crie os subdiretórios abaixo de /var/www cada um para seu site.
Criar os diretório /var/www/site1 e /var/www/site2

# mkdir /var/www/site1
# mkdir /var/www/site2


Obs: Não esqueça de colocar dentro destes diretórios o arquivo index.html com algum conteúdo.
Sugestão:
No index.html do site1 escreva SITE1
No index.html do site2 escreva SITE2

3 - Criar a configuração no apache
# vi /etc/apache2/sites-enabled/000-default

Lá já tem uma estrutura de VirtualHost, vamos criar a nossa. Vá ao final do arquivo e escreva as seguintes linhas:
<VirtualHost 192.168.0.2>
DocumentRoot /var/www/site1
ServerName 192.168.0.2

</VirtualHost>

<VirtualHost 192.168.0.3>
DocumentRoot /var/www/site2
ServerName 192.168.0.3

</VirtualHost>

Pronto!!

Reinicie o apache:
# /etc/init.d/apache2 restart

E teste no Browser com o comando:
http://192.168.0.1
http://192.168.0.2

Frase do Dia

"Se houver muitos comandantes, o navio afunda."
(Provérbio Árabe)

Instalando e Configurando o SWAT - Samba Web Administrations Tool


Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o SWAT.
O SWAT é uma ferramenta livre que tem como objetivo facilitar a configuração do SAMBA. Escrevi um artigo rápido sobre configuração do samba neste link. Porém se você deseja configurar e iniciar os serviços de compartilhamento do SAMBA em apenas alguns cliques use o SWAT. A página do SWAT é semelhante as página de configurações de Modems ou ainda de roteadores Wireless. É fácil, intuitiva e ainda mais, o help é super completo e você aprende muitas opções apenas "fuçando" o SWAT.
Porém para conhecer bem o SWAT e mexer nele é necessário que você tenha um conhecimento básico de SAMBA. Para isso, acesse este breve tutorial.
O SWAT é mantido pelos próprios mantenedores do SAMBA e a página oficial fica em:
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html

Obs: Tutorial testado em Debian/Ubuntu

1 - Instalação
# apt-get install swat

2 - Habilitando o Swat
a) abra o seguinte arquivo
# vi /etc/inetd.conf

b)Procure a seguinte linha (geralmente é a útima)
#swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

c) Descomente a linha (o ato de descomentar é tirar o jogo da velha do início da linha)
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

d) Salve o arquivo e reinicie o Super Servidor Inetd para colocar o SWAT no ar.
# /etc/init.d/openbsd-inetd restart

A parte em azul abaixo é opcional.

Nota: Se você já usa o Super Servidor xinetd, será necessário que você crie o arquivo /etc/xinetd.d/swat com o seguinte conteúdo:

service swat

{

port = 901
socket_type = stream
wait = no
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
}

E depois reinicie o xinetd.d com o comando /etc/init.d/xinetd restart

Caso você não use o xinetd e queira usá-lo, utilize o seguinte comando para instalar:

# apt-get install swat xinetd

3 - Acessando o SWAT
Para acessar o SWAT abra um browser da sua preferência (Firefox, Internet Explorer...) e coloque o seguinte endereço
http://ip-da-maquina:901

Exemplo:
http://192.168.0.1:901

A primeira tela que aparece é a de autenticação. É necessário que você logue com o usuário root. O root tem todos os poderes de configuração sobre o swat. Caso você logue com um usuário comum apenas algumas poucas opções irão aparecer.

Tela de Autenticação do SWAT

Logo após uma autenticação bem sucedida, o SWAT apresenta a tela inicial e todas as opções.

Tela Inicial do SWAT

Os Menus são os Botões e a tela inicial é apenas para acesso do HELP onde você tem um manual completíssimo das funções do SAMBA.


Para iniciar, vamos clicar no botão GLOBALS que irá alterar e configurar todas as opções da sessão GLOBALS do SAMBA.





Note que temos as opções exatamente iguais as opções da sessão GLOBALS do SAMBA. Basta alterar e clicar no botão Commit Changes.

Nota Importantíssima: Após qualquer alteração nesta página é obrigatório clicar no botão Commit Changes para que o SWAT grave suas opções no arquivo /etc/samba/smb.conf. Caso você faça alguma alteração e clique em qualquer outro menu acima, tudo o que você fez será perdido. Então não esqueça... Alterou... Botão Commit Changes apertou... ;)


Orientações sobre o botão Commit Changes

O SWAT mostra apenas o que é essencial e prático para configuração do SAMBA. Mas se você quiser fazer uma configuração bem aprofundada é necessário que você pressione o botão Advanced. Este botão irá apresentar todas as opções da sessão GLOBALS. Não se assuste quando você pressionar este botão... Apenas aprecie...

Orientações sobre o botão Advanced


O Botão Shares (Compartilhamento) irá apresentar opções para criar/excluir e manter os compartilhamentos do servidor Samba.



Tela inicial do Botão Shares

Note que na tela acima, não aparecem os compartilhamentos. Para isso você tem duas opções.

1 - Exibindo os compartilhamentos:

Clique no botão Choose Share e escolha um compartilhamento que deseja alterar ou excluir. E logo após clique no botão Choose Share.

Tela de um compartilhamento

Note acima as opções do smb.conf. Algumas eu preenchi como exemplo. Veja que há bastante opções para serem testadas, mas não esqueça que depois de qualquer alteração... O Botão Commit Changes deve ser pressionado para que o arquivo smb.conf seja modificado.
Não esqueça também de explorar todas as opções possíveis de um compartilhamento pressionando o botão Advanced.

2 - Para Criar um Compartilhamento
a) Clique no botão Menu Shares
b) Escreva o nome do compartilhamento que você deseja que apareça na rede Windows e clique no no botão Create Share (para este exemplo, vamos criar o compartilhamento jogos)
c) Logo a após o SWAT irá apresentar a tela com todas as opções em branco. Para você criar um compartilhamento, basta você informar qual o path (caminho) no servidor para a pasta jogos. Vamos usar como exemplo o caminho /home/dailson/jogos
Pronto! Clique no botão Commit Changes e este compartilhamento já estará configurado.

Para configurar impressoras compartilhadas, clique no botão Printers




Ao clicar, o SWAT apresenta a tela de configuração de compartilhamento de impressoras. O processo é o mesmo citado anteriormente em relação aos compartilhamentos. Então basta seguir os mesmos procedimentos para criar, excluir, listar e modificar os compartilhamentos. Lembre-se de também apertar o botão Advanced para ter uma maior leque de opções.

Tela de compartilhamento de Impressoras


O Botão Wizard (Assistente) irá lhe ajudar a fazer tarefas "chatas" de como promover o servidor a controlador de domínio. A tela é bem intuitiva.
Não esqueça de a cada alteração, apertar o botão "Rewrite smb.conf" e depois Commit Changes.

Tela principal do Wizard



O Menu Status, serve para duas funções:



1 - Reiniciar, parar e iniciar os serviços que fazem o SAMBA funcionar, conforme tela abaixo:


2 - Ou ter um log visual das conexões que estão abertas no momento. Veja na tela abaixo que é possível ver quem está acessando, que compartilhamento está sendo usado e que arquivos estão sendo utilizados.

Note que existem uns botões X para que você consiga fechar as conexões dos clientes. Porém, se o cliente abrir novamente ele irá continuando a ter acesso ao compartilhamento.



O Botão view é apenas um visualizador do smb.conf. Aqui também vale a dica. Clique no botão Advanced e veja como é o smb.conf completo...



Visualização do smb.conf


O Menu Password serve para você manter os usuários que poderão acessar o servidor samba. Ao invés de cadastrar usuários com o comando smbpasswd -a usuario, você pode fazer diretamente nesta tela. Isto facilita e muito a gestão de usuarios.


Além disso você pode mudar a senha de usuários e ainda pode cadastrar as máquinas XP que necessitam ser criadas contas para ingressar no domínio.

Bom, o Swat é uma ferramenta muito extensa. Minha intenção é que você consiga dar os primeiros passos nesta maravilhosa ferramenta.

Quaisquer dúvidas, estou as ordens.

Frase do Dia

"Ouve teu pai, que te gerou,
e não desprezes tua mãe,
quando vier a envelhecer."
Provérbios 23:22

sexta-feira, 20 de novembro de 2009

Instalando e Configurando um Servidor SAMBA

Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor SAMBA. SAMBA é um acrônimo para o protocolo SMB da Microsoft. O SMB quer dizer Service Message Block e é responsável pelo compartilhamento de arquivos e impressoras na rede Microsoft.

Criado por Andrew Tridgell, o Samba é uma excelente ferramenta para fornecer conectividade entre sistemas Windows e Unix-like, e sua configuração está basicamente concentrada em um único arquivo, que é altamente complexo, mas isto somente no começo de seu uso. Assim que você se acostumar com o programa, verá inúmeras linhas como boas e velhas amigas.

Para configurar o Samba é necessário abrir o arquivo smb.conf em um editor de textos como nano, vi ou mcedit. Este arquivo se encontra em /etc/samba, é nele que serão feitas todas as alterações para que a conectividade entre o Windows e o Linux funcione.

Arquivo de Configuração:
/etc/samba/smb.conf

Portas:
139 tcp 445 tcp

Daemon:
/etc/init.d/samba

1 - Instalando o Samba:
# apt-get install samba cifs-utils

2 - Configurando o mínimo no /etc/smb.conf
O arquivo smb.conf é dividido em duas sessões:

[GLOBALS]
Opções que alteram o comportamento e recursos do servidor Linux na rede Windows

[SHARES]
Sessão que cria e mantém os compartilhamentos do servidor Linux na rede Windows


Abra o arquivo /etc/samba/smb.conf e altere as seguintes linhas:
Na sessão globals:
[GLOBALS]

Linha que decide o Grupo de Trabalho que o Servidor Linux irá entrar na Rede Microsoft
WORKGROUP = ALUNOS

Linha que configura o nome da máquina na rede Windows
NETBIOS NAME = Server_Linux

Linha que decide o tipo de autenticação. Para exigir que todo usuário que acessar o servidor necessite digitar uma senha:
SECURITY = USER

Você pode usar os seguintes atalhos nas configurações do smb.conf
  • %M, Máquina (Machine)
  • %U, Usuário (User)
  • %L, Nome da Máquina Local (Local Machine)

3 - Configurando os compartilhamentos
Depois da sessão [GLOBALS] qualquer outro nome com chaves que for digitado, o Samba já irá reconhecer como compartilhamento. O nome que vem entre chaves já é o nome do compartilhamento e o único parâmentro obrigatório é o caminho do compartilhamento.
Veja abaixo alguns exemplos:

Exemplo 1: Compartilhando o CDROM
[cdrom]
path = /media/cdrom


Exemplo 2: Compartilhando as Músicas:
[mp3]
path = /home/dailson/mp3


Exemplo 3: Compartilhando Jogos
[jogos]
path = /usr/games


As opções mais comunos na área de compartilhamento são:
Comment: Mostra um comentário para o diretório em questão
Browseable: Define se o diretório pode ser visto por todos
Available: Define se o diretório estará disponível para acesso ou não.
Writable: Define se é possível ou não escrever neste arquivo
Read only: Define se o diretório está ou não disponível para gravação.
Write List: Este parâmetro diz ao servidor qual o grupo ou usuário tem permissão para gravar no diretório, caso este seja definido como "@root", somente quem faz parte do grupo root poderá gravar neste diretório, os outros usuários somente poderão ler o conteúdo deste diretório.

Veja abaixo, um diretório compartilhando com as opções acima:
[mp3]
path = /home/dailson/mp3

comment = Pasta de Musicas

browseable = yes

available = yes

writable = yes
read only = no

write list = dailson, @alunos

Obs:
No samba, existe um compartilhamento especial chamado [HOMES] que faz com que todas as pastas homes dos usuários fiquem disponíveis para eles no momento que eles logam no servidor. Por padrão esta pasta vem comentada no arquivo de configuração. Para deixá-la com acesso aos usuários autenticados e com acesso de gravação, deixe este compartilhamento especial da seguinte forma:

[homes]
comment = Home Directories
read only = no


Note que não tem a opção path


Depois de configurado o /etc/samba/smb.conf você já pode reiniciar o daemon e colocar o servidor samba no ar
# /etc/init.d/samba restart

Mas antes de acessar o servidor SAMBA de uma máquina Windows, é necessário cadastrar usuários no SAMBA. Para isso faça o seguinte comando:
# smbpasswd -a usuário

Exemplo:
# smbpasswd -a dailson

Lembre-se que dailson já deve existir no Linux como um usuário comum criado com o comando useradd ou adduser.
Cadastre a senha do usuário

E você agora já pode acessar o servidor Linux em Iniciar / Executar e digite \\ip.do.servidor.linux
Exemplo:
\\192.168.0.1

O Windows irá apresentar a tela de autenticação. Digite usuário e Senha e pronto!
Referências:
http://www.vivaolinux.com.br/artigo/Configurando-o-Samba/

Como utilizar o SAMBA para acessar uma Estação Windows?
Bom, acessar o Linux a partir do Windows já foi visto. Mas para fazer o inverso, a partir de uma máquina Linux, acessar compartilhamentos no Windows.

Se você tiver interface gráfica, pode utilizar o smb4k (Samba para KDE). O smb4k faz todas as tarefas necessárias para gerenciamento de compartilhamento em máquinas remotas Windows. É um "canivete suíço"! Para instalar o smb4k faça:
# apt-get install smb4k

Tela do smb4k

Ou ainda utilizar os próprios Gerenciadores de Arquivos como o Nautilus ou o Konquerror e digitar na barra de endereços: smb:///

Veja o exemplo no Nautilus do GNOME:

Tela do Nautilus

Via linha de comando, existem diversas maneiras. Para facilitar, vamos instalar alguns clientes do Samba:
# apt-get install smbclient smbfs

1 - Listando os Compartilhamentos disponíveis de uma máquina Windows:
# smbclient -U usuário -L \\host

Exemplo:
#smbclient -U dailson -L \\dailson
Informe a senha e veja os compartilhamentos.

Uma dica também é na hora da senha dar enter em branco, para ver se o smbclient lista toda a rede.

2 - Exibindo todas as máquinas da rede e todos os compartilhamentos
# smbtree

Uma dica também é na hora da senha dar enter em branco, para ver se o smbclient lista toda a rede.

3 - Montando um compartilhamento Windows em uma máquina Linux.
Dados do compartilhamento:
IP da Estação Windows: 192.168.0.1
Usuário: dailson
Compartilhamento: Filmes
Ponto de Montagem no Linux: /media/windows

Um dos comandos para resolver este problema é este:
# mount.cifs //192.168.0.1/filmes /media/windows -o username=dailson

Ou ainda:
# mount.cifs \\\\192.168.0.1\\filmes /media/windows -o username=dailson

Você ainda pode especificar a senha diretamente na linha de comando. Isto é útil caso você queira colocar uma montagem em scripts ou na inicialização do sitema:
# mount.cifs //192.168.0.1/filmes /media/windows -o username=dailson,password=senha

Uma maneira bem interessante de configurar o SAMBA é usar uma ferramenta chamada SWAT. O SWAT é o Samba Web Administration Tool. Neste link você encontra um tutorial completo sobre esta ferramenta.

Frase do Dia

"Uma casa limpa e bem arrumada
é sinal de computador quebrado…"

(Anônimo)

Instalando e Configurando um Servidor FTP com o VSFTPD



Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor FTP - File Transfer Protocol.
FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos (também conhecidos como ficheiros), sendo uma das mais usadas na internet.

Pode referir-se tanto ao protocolo quanto ao programa que implementa este protocolo (Servidor FTP, neste caso, tradicionalmente aparece em letras minúsculas, por influência do programa de transferência de arquivos do Unix).

A transferência de dados em redes de computadores envolve normalmente transferência de arquivos e acesso a sistemas de arquivos remotos (com a mesma interface usada nos arquivos locais). O FTP (RFC 959) é baseado no TCP, mas é anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. É o padrão da pilha TCP/IP para transferir arquivos, é um protocolo genérico independente de hardware e do sistema operacional e transfere arquivos por livre arbítrio, tendo em conta restrições de acesso e propriedades dos mesmos.
Fonte: http://pt.wikipedia.org/wiki/File_Transfer_Protocol

Para instalarmos um servidor FTP poderíamos utilzar várias soluções do mundo Linux como o Proftpd. Mas escolhemos para este tutorial o VSFTP - Very Secure FTP que tem em seu site oficial http://freshmeat.net/projects/vsftpd/

Arquivo de configuração:
/etc/vsftpd.conf

Daemon:
/etc/init.d/vsftpd

Porta TCP/IP envolvidas:
20 e 21 tcp/udp

Instalação:
#apt-get install vsftpd

Pronto. Já neste ponto, você já tem um servidor FTP com acesso anônimo liberado. Vamos testar?

Iniciando o servidor:
#/etc/init.d/vsftpd restart

a) Utilizando a linha de comando:
# ftp localhost Connected to localhost.
220 (vsFTPd 2.0.7)

Name (localhost:root): anonymous

Password: qualquersenha

Porém o acesso anônimo é de somente leitura.
Se você desejar disponibilizar algum arquivo pra que usuários anônimos da sua rede ou da Internet baixem a partir deste servidor que você acabou de montar, coloque no seguinte caminho:
/home/ftp

Este é o diretório local no seu HD que os usuários anônimos caem quando logam no seu servidor.

b) Utilizando o browser
Você pode fazer o teste utilizando o Firefox, Konquerror, Opera, Chomium ou IE. Basta na barra de endereços digitar:
ftp://localhost (caso você esteja na mesma máquina que está o servidor)
ftp://10.0.0.1 (supondo que este é o IP do servidor FTP que você está montando).

c) Utilizando um Cliente FTP
Para fazer testes de FTP, não use Browsers. Use clientes de FTP. No Linux eu utilizo dois: Filezilla e o GFTP
Eu prefiro o Filezilla. Caso você use Debian, Ubuntu ou derivados, basta instalar com o comando:
apt-get install filezilla

Um teste de acesso utilizando o Filezilla.
Se você utiliza Windows, você também pode utilizar o Filezilla.

Para fazer um acesso autenticado, ou liberar gravação do usuário anônimo, é necessário alterar algumas linhas do /etc/vsftpd.conf. Vamos conhecer melhor este arquivo.

As opções do /etc/vsftpd.conf

Habilita o protocolo IPv6
listen_ipv6=YES

Libera/Nega acesso Anônimo
anonymous_enable=YES

Permite que usuários do servidor façam o login no servidor FTP
local_enable=YES

Permite que os usuários tenham acesso de gravação no servidor de FTP (Menos o anônimo)
write_enable=YES

Permite que o usuário anonimo faça upload para o servidor de FTP
anon_upload_enable=YES
Obs: Para esta opção funcionar a linha write_enable=YES deve estar ativada.

# Permite que o usuário Anônimo crie diretorios
anon_mkdir_write_enable=YES

Proibindo usuários de Logar no Servidor FTP
Configure as seguintes linhas:
userlist_deny=YES
userlist_file=/etc/vsftpd.denied_users
Crie o arquivo /etc/vsftpd.denied_users e escreva um por linha os usuários que não podem logar no servidor.

Autorizando somente alguns usuários a logarem no servidor:
Configure as seguintes linhas:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
Crie o arquivo /etc/vsftpd.allowed_users e escreva um por linha quem pode logar no servidor.

Enjaulando Usuários
Para impedir que os usuários autenticados saiam do seu diretório home e possam navegar pelo HD do servidor, ative a opção abaixo:
chroot_local_user=YES
Obs: Esta técnica é chamada de Enjaular usuários

Para "enjaular" somente alguns usuários:
Configure as seguintes linhas
chroot_local_user=NO
chroot_list_enable=YES
Crie o seguinte arquivo: /etc/vsftpd.chroot_list e escreva o nome dos usuários que você deseja enjaular um por linha

Para "enjaular" todos e deixar alguns livres:
Configure as seguintes linhas:
chroot_local_user=YES
chroot_list_enable=YES
Crie o seguinte arquivo: /etc/vsftpd.chroot_list e escreva o nome dos usuários que você deseja que não seja enjaulado um por linha.

Possibilitando que o usuário Anônimo faça Upload.
Obs: Se você ativar esta opção e for logar com no servidor com o usuário anonymous, você irá receber a seguinte mensagem:
500 OOPS: vsftpd: refusing to run with writable anonymous root

Isto contradiz toda a história de permissionamento do Linux, mas é isto mesmo. Para você permitir que o Anonymous faça login e consiga fazer uploads para o servidor de FTP, é necessário que o diretório /home/ftp não pertença ao usuário ftp e ainda mais, não pode ter permissão de gravação. Você deverá criar um subdiretório dentro do diretório /home/ftp e ai sim, você libera a gravação deste subiretório. Então para evitar este erro faça o seguinte:

Passe o diretório /home/ftp para o root
# chown root:root /home/ftp

Tire as permissões de gravação deste diretório
# chmod 555 /home/ftp

Crie um subdiretório que contenha permissão para gravação
# mkdir /home/ftp/upload

Altere as permissões deste subdiretório
# chmod 777 /home/ftp/upload

Faça o teste: Logue como anonimo utilizando o filezilla e faça uploads de arquivos.

Referências:
http://ubuntuforums.org/showthread.php?t=518293

Frase do Dia

"Malandro mesmo é o Mario, que tira moeda até de tijolo."
(Anônimo)

quarta-feira, 18 de novembro de 2009

Instalando e Configurando um Servidor DHCP - Dynamic Host Control Protocol


Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor DHCP - Dynamic Host Control Protocol.
O DHCP, Dynamic Host Configuration Protocol, é um protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP de host e outros parâmetros de configuração para clientes de rede. Este protocolo é o sucessor do BOOTP que, embora mais simples, tornou-se limitado para as exigências atuais. O DHCP surgiu como padrão em Outubro de 1993. O RFC 2131 contém as especificações mais atuais (Março de 1997). O último standard para a especificação do DHCP sobre IPv6 (DHCPv6) foi publicado a Julho de 2003 como RFC 3315.

Resumidamente, o DHCP opera da seguinte forma:

* Um cliente envia um pacote UDP em broadcast (destinado a todas as máquinas) com um pedido DHCP
* Os servidores DHCP que capturarem este pacote irão responder (se o cliente se enquadrar numa série de critérios — ver abaixo) com um pacote com configurações onde constará, pelo menos, um endereço IP, uma máscara de rede e outros dados opcionais, como o gateway, servidores de DNS, etc.

O DHCP usa um modelo cliente-servidor, no qual o servidor DHCP mantém o gerenciamento centralizado dos endereços IP usados na rede.
Fonte: Wikipedia - http://pt.wikipedia.org/wiki/DHCP

Para instalar o Servidor DHCP
# apt-get install isc-dhcp-server

Arquivo de Configuração
/etc/dhcp/dhcpd.conf

Daemon
/etc/init.d/isc-dhcp-server

Modelo do Arquivo /etc/dhcp/dhcpd.conf

ddns-update-style none;
ignore client-updates;


option domain-name "lab-c2.com.br";
default-lease-time 86400;

max-lease-time 86400;

authoritative;

log-facility local7;


subnet 10.0.0.0 netmask 255.0.0.0 {

range 10.0.0.150 10.0.0.250;

option domain-name-servers 10.0.0.254, 10.0.0.245;

option routers 10.0.0.254;

}


# Este exemplo abaixo é para fixar um número de IP a uma estação.

# Para fazer isso, é necessário saber o MAC da placa de rede da estação em questão.

host fantasia {

hardware ethernet 08:00:07:26:c0:a5;

fixed-address 10.0.17.253;
}



Para colocar as alterações no ar:
# /etc/init.d/isc-dhcp-server restart

Para acompanharmos o fornecimento de IP´s na rede, poderemos utilizar o tail para visualizar o arquivo dhcpd.leases que armazena os IP´s fornecidos pelo servidor DHPC. Façamos da seguinte forma:

# tail -f /var/lib/dhcp/dhcpd.leases

lease 10.0.0.11 {starts 1 2007/05/28 22:41:54;
ends 1 2007/05/28 22:51:54;

hardware ethernet 00:14:2a:42:ad:6b;

uid 01:00:14:2a:42:ad:6b;

client-hostname "beto";

}

Frase do Dia

"Prestígio só dá dinheiro para a Nestlé"
(Anônimo)

Instalando e Configurando um Servidor NFS - Network File System




Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor NFS - Network File System. Utilizados em redes Unix para compartilhamento de arquivos e diretórios. Muitos preferem compartilhar dados utilizando o próprio SSH ou ainda o SAMBA, porém este importante servidor é utilzado em tarefas como implementação de Terminais Burros (Thinclients) e de Instalação de Sistemas Operacionais utilizando Boot Remoto.
Apresentaremos tanto o cliente como o Servidor NFS .

1 - Utilizando um Servidor NFS

Utilizando um compartilhamento remoto:

Para usar um compartilhamento NFS, basta usar o comando mount. Porém antes de fazer, você pode utilizar o comando para exibir os compartilhamentos do servidor alvo:

Exibindo os compartilhamentos
showmount –e IP_DO_SERVIDOR
Exemplo:
# showmount –e 10.0.17.254

Exibindo os serviços de compartilhamento
# rpcinfo –p 10.0.17.254

Montando um Diretório
A sintaxe é a seguinte:
mount –t nfs IP_SERVIDOR:/diretório /local_a_ser_montado

Exemplo:
# mount –t nfs 10.0.17.254:/arquivos /media/servidor
# mount –t nfs 10.0.17.254:/jogos /media/jogos-servidor


Onde /media/servidor e /media/jogos-servidor são diretórios que você terá que criar para poder montar estes compartilhamentos remotos.

2 - Configurando o Servidor NFS
NFS – Network File System
Servidor de Arquivos e compartilhamento entre máquinas Unix*.

Para instalar o servidor NFS:
# apt-get install nfs-kernel-server

Arquivo de Configuração:
/etc/exports

Daemons Responsáveis:
/etc/init.d/portmap
/etc/init.d/nfs-common

/etc/init.d/nfs-kernel-server


Assegure de executar os seguintes comandos, antes de começar a compartilhar seus diretórios:
# /etc/init.d/portmap start
# /etc/init.d/nfs-common start


Para compartilhar:
Todos os compartilhamentos devem ser declarados no arquivo /etc/exports. E deve ser escrito dessa forma:
/diretório estacao1(opcao1,opcao2)
/diretório estacao1(opcao1,opcao2) estacao2(opcao1,opcao2)


Onde opção pode ser:
ro – Somente leitura
rw – Leitura e gravação
sync – Mantém a sincronia em tempo real (Síncrono)
async – Faz transferência de forma assíncrona
noaccess – compartilha arquivos, mas não subdiretórios
no_root_squash – trata o usuário root remoto como usuário root local
root_squash - evita que o root cliente tenha direito de root sobre os diretórios do servidor.
no_subtree_check – Desabilita a verificação de estados de arquivos dentro de um filesystem.
subtree_check – Habilita esta verificação.
Obs: Por questões de desempenho, deixe esta opção desabilitada, ou seja, no_subtree_check. Não esqueça de colocar sempre esta opção

Exemplos:

/arquivos 10.0.17.100(rw,sync,no_subtree_check)
/arquivos 10.0.17.*(rw,sync,no_subtree_check)
/arquivos *(rw,sync,no_subtree_check)

/arquivos 10.0.17.100(rw,sync,no_subtree_check) 10.0.17.1(ro,no_subtree_check)


Obs: É bom lembrar que independente da opção ro ou rw, a permissão do diretório no servidor deve ou não permitir a gravação. Altere isso com o comando chmod.

Ativando os compartilhamentos:
# /etc/init.d/nfs-kernel-server restart
Ou
# exportfs –r

Exibindo os compartilhamentos
showmount –e IP_DO_SERVIDOR

Exibindo os serviços de compartilhamento
# rpcinfo –p
# rpcinfo –p 10.0.17.254

Frase do Dia

"Uma civilização é julgada pelo tratamento que dispensa às minorias."
Gandhi

Instalando e Configurando um Servidor SSH - Secure Shell





Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor SSH - Security Shell. O mais popular dos softwares de acesso remoto. Tem como principal característica a criptografia de dados, uso simples, possibilidade de transferência de arquivos entre máquinas, criação de túneis e túneis reversos e também cria túneis para qualquer aplicação mandar seus dados.

Por padrão, os servidores Debian vem sem o Servidor SSH. Para instalar use o seguinte comando:
# apt-get install ssh

Uso do Cliente SSH
1 – Se conectando a um servidor SSH
# ssh usuario@ip

Exemplo:
# ssh dailson@10.0.17.254

Copiando um arquivo de um servidor:
# scp usuario@ip:/local destino

Exemplos:
# scp root@10.0.17.254:/etc/services /home/dailson
# scp dailson@10.0.17.254:~/texto.txt ~


Copiando Diretórios:
# scp -r dailson@10.0.17.254:/etc /tmp

Copiando arquivos e Diretórios de uma máquina local para o servidor (Basta inverter a ordem)
# scp /etc/services root@10.0.17.254
# scp -r /etc root@10.0.17.254


Em interfaces gráficas como KDE e GNOME, você pode usar o gerenciandor de arquivos (Nautilus no Gnome e Konqueror no KDE) para fazer cópias de conteúdos entre máquinas.
Na barra de endereços do Gerenciador, faça: sftp://usuario@ip
Exemplo:
sftp://dailson@10.0.17.254

É possível também usar acesso remoto entre as plataformas Windows e Linux, através dos clientes putty e winscp.

O Comportamento padrão do cliente ssh é definido no arquivo /etc/ssh/ssh_config
Para aprender mais sobre estes parâmetros de configurações do cliente ssh consulte o manual de opções do cliente ssh através do comando:
# man ssh_config

Servidor SSH

Porta Padrão:
22 tcp

Arquivo de configuração:
/etc/ssh/sshd_config

Daemon:
/etc/init.d/ssh

A instalação padrão do ssh já deixa o servidor configurado. Para alterar o estado do servidor ssh use:
Para parar, iniciar e reiniciar o servidor ssh
# /etc/init.d/ssh stop
# /etc/init.d/ssh start

# /etc/init.d/ssh restart


Alterando algumas configurações do Arquivo /etc/ssh/sshd_config

Protocolo a ser usado pelo servidor (Existem as versões 1 e 2)
Protocol 2

Tempo para o seu servidor criar novas chaves
KeyRegenerationInterval 1h

tamanho da chave,quanto maior é melhor
ServerKeyBits 768

Nível de detalhamento das mensagens exibidas nos logs
SyslogFacility AUTH

Define opção de mensagens dos logs
LogLevel INFO

Estabelece tempo por inatividade na conexão SSH (No login e não no uso)
LoginGraceTime 2m

Essa opção define se o usuário root pode ou não se conectar via SSH no servidor
PermitRootLogin yes

É bom ativar essa opção para o servidor detectar se as chaves estão com com suas permissões adequadas, ou seja, seguras
StrictModes yes

Tentativas máximas de senhas erradas ao logar.
MaxAuthTries 6

Estabelece o número de conexões simultâneas
MaxStarups 3

Permite autenticação de chaves com senhas
PasswordAuthentication yes

Permite ou não a opção de senhas em branco
PermitEmptyPasswords no

Exibe o login da última pessoa que logou
PrintLastLog yes

Separa os processos de todos os usários em áreas de memórias diferentes. Isso resulta em maior segurança.
UsePrivilegeSeparation yes

Mantém a conexão ativa mesmo em inatividade (Manda pacotes de tempo em tempo para manter o socket aberto)
TCPKeepAlive yes

Arquivo que será exibido no login de todos os usuário.
Banner /etc/issue.net

Ativa o sftp-server, servidor ftp com criptografia.
Subsystem sftp /usr/libexec/sftp-server

Define se será usada compactação na transferência.
Compression yes

Limita que somente este usuário poderá logar
AllowUser dailson

Ídem ao ítem anterior, porém com grupos
AllowGroups administradores

Proibe joao de usar o ssh
DenyUsers joao

Proibe os usuários deste grupo de logarem no servidor ssh
DenyGroups usuarios

Não esqueça que qualquer alteração no arquivo de configuração do servidor SSH, o serviço DEVE ser reiniciado:
/etc/init.d/ssh restart

Para aprender mais sobre estes parâmetros consulte o manual de opções do servidor ssh através do comando:
man sshd_config

Frase do Dia

"Antes de começar ao trabalho de mudar o mundo,
dê três voltas dentro da sua casa"
Provérbios Chinês

terça-feira, 17 de novembro de 2009

Cuba se prepara para trocar o Windows pelo Linux



As autoridades Cubanas se preparam seriamente para deixar o sistema operacional Windows e usar o software livre GNU/Linux no lugar, assim evitando qualquer  sanção ao usar esse sistema de computador por parte do dono do Windows, a gigante Microsoft.

Mais de 3800 técnicos foram treinados no país e Ciego de Ávila, localizada na parte noroeste da ilha é um bom exemplo disso. Nessa província há cerca de 600 pessoas tendo cursos intensivos de quatro meses para aprender sobre o uso do Linux e trocar o sistema operacional Windows.

É uma medida voltada para quebrar a dependência em programas que estão sobre o controle de seus donos americanos, e também antecipando qualquer contestação dos donos das patentes pelo uso desse sistema em Cuba, que não pode ser pago por conta do embargo comercial americano, entre outros motivos.

É por isso que as Autoridades Cubanas decidiram treinar seus especialistas entregando o Linux e o Operador de Computador a cursos que iniciaram no final de 2005.



No último Domingo, 9 de Setembro, o país celebrou o 20º aniversário da tão clamada fundação "Clube de Computadores para Jovens"; idéia que foi promovida pelo presidente Cubano Fidel Castro.

No Sábado, o líder Cubano enviou uma mensagem de parabéns a essa organização de TI que tem milhares de membros pelo país, como também equipamentos estado-da-arte e professores que ensinam sobre as técnicas digitais diferentes.

O Linux veio como uma alternativa gratuita ao programa Windows, criado pela empresa de Bill Gates, e ele provém ao usuário a liberdade de acessar o seu código fonte e modificá-lo, assim, melhorando a privacidade da informação. E é totalmente de graça.

O software foi criado em 1991 por um aluno concluinte chamado Linus Torvalds. Entre outras vantagens ele permite a compatibilidade com equipamentos que temos no país e é imune à maioria dos vírus de computador, diz o jornal.

Fonte: http://www.ghabuntu.com/2009/11/cuba-preparing-to-quit-windows-in-favor.html

Tradução de Rennê Lyra

Frase do Dia

"Quem nunca errou...
nunca experimentou nada novo"
Albert Einstein

Implementando servidor web Java com Tomcat no Linux

Autor: José Cleydson Ferreira da Silva
Este artigo foi originalmente publicado em:
http://www.vivaolinux.com.br/artigo/Implementando-servidor-web-Java-com-Tomcat-no-Linux



1. Introdução

A tecnologia JavaTM há algum tempo tem sido a principal escolha do mercado de TI para o desenvolvimento de sistemas distribuídos.

Segundo a empresa TIOBE Software, em sua pesquisa para acompanhar as linguagens de programação no mercado, designando o índice TIOBE (pesquisa), de Novembro de 2009, o Java ainda é a linguagem mais popular para o desenvolvimento de sistemas.

Java é uma plataforma rica, que permite o desenvolvimento de aplicações para dispositivos móveis, bem como, celulares e PDAs, até aplicações corporativas complexas, baseadas em web services, passando ainda por aplicações desktop e discos Blueray.

Linux: Implementando servidor web Java com Tomcat no Linux
Imagem customizada por Beatriz Ansani
A tecnologia JavaTM é dividida em seguimentos: JSE (Java Standard Edition), que é uma versão padrão do Java utilizado na programação de aplicações para desktop, JEE (Java Enterprise Edition), fortemente voltada para aplicações web e aplicações distribuídas e JME (Java Micro Editon) para computadores com pouco recurso computacional, geralmente utilizada em dispositivos móveis.

O JEE possui, para o desenvolvimento de sistemas corporativos, APIs (Interface de Programação de Aplicativos), que possibilitam seu uso por meio da web. Considerando esse contexto, é necessário um software que permita que a aplicação web seja executada. Um dos softwares mais usados para esse fim é o Apache Tomcat. Seu desenvolvimento está sob a responsabilidade da Apache Software Foundation, que o disponibiliza como Software Livre e de Código Aberto.


Configurando Java e procedimentos para a instalação do Tomcat

2. Configurando ambiente Java no Sistema Operacional Linux

Para que os programas javac (responsável por compilar a aplicação) e java (responsável por executar a aplicação) sejam reconhecidos pelo shell, é necessário que a variável de ambiente $PATH seja modificada. Além disso, também deve ser definida a variável de ambiente $JAVA_HOME, que deve apontar para o diretório onde o JDK foi instalado.

Para isso devem ser adicionadas as seguintes linhas ao arquivo bash.bashrc (lembrando que o local de instalação do JDK pode variar, como no exemplo abaixo):

Exemplo 1:

export JAVA_HOME=/opt/java
export PATH=/opt/java/bin:$PATH

O pacote de instalação da Máquina Virtual Java está disponível no site http://java.sun.com/javase/downloads/index.jsp. Há dois tipos de arquivos binários, um com extensão rpm.bin para distribuições Linux derivadas do Red Hat, outro com extensão .bin para as demais distribuições.

Após fazer o download faremos o processo de instalação do pacote. Para padronizar o processo de instalação usaremos o diretório /opt. Usaremos esse diretório com o intuito de centralizar somente um diretório para o java no sistema, uma vez que ao instalá-lo poderíamos adicioná-lo ao diretório /usr/bin - mas caso haja necessidade de atualização de versão, acrescentar novas bibliotecas ou fazer backup, o diretório /opt se tornará mais acessível.

Para iniciar o processo de instalação, copie o arquivo jdk-6u13-linux-i586.bin para o diretório /opt, a execução do mesmo se dará pelo comando sh seguido do nome do arquivo. Após a compilação, um subdiretório será gerado no diretório corrente com o mesmo nome do arquivo binário, portanto, renomeie a pasta para o nome "java" e, em seguida, defina no PATH o diretório no qual a pasta renomeada "java" está; esse processo não é uma convenção, é somente uma forma de padronização de instalação. No quadro 1 temos o passo-a-passo para a instalação.

Quadro 1:

Comandos executados no terminal:

Copiar para diretório /opt:

# cp jdk-6u13-linux-i586.bin /opt/

Executar o arquivo:

# sh jdk-6u13-linux-i586.bin

Renomear diretório:

# mv jdk1.6.0_13 java

As duas linhas abaixo devem ser acrescentadas ao arquivo bash.bashrc:

# vim /etc/bash.bashrc

export JAVA_HOME=/opt/java
export PATH=/opt/java/bin:$PATH

Testando variáveis de ambiente:

# echo $JAVA_HOME
# echo $PATH


É importante testar a variável de ambiente após definí-la, pois ela só é reconhecida após sair da sessão atual. Em seguida, ao abrir uma nova sessão, podemos usar o comando echo nas variáveis de ambiente. Desta maneira padronizada, seu ambiente Java está pronto para ser usado.

3. Procedimentos para a instalação do Tomcat

O Tomcat é um servidor web Java, capaz de processar aplicações java servelets, que são responsáveis por gerenciar dinamicamente requisições de pedido e resposta, que, em muitos casos, são consideradas extensões para Servidores Web Java. O Tomcat possui suas características próprias de servidores de aplicações, porém não dá suporte EJB - Enterprise JavaBeans - para aplicações distribuídas.

Sua versão atual é a 6.0.20, lançada em 30 de Junho de 2008, pela Apache Software Foundation, que atualmente mantém o projeto. Pode-se fazer o download do Apache Tomcat no site www.tomcat.apache.org, no menu download ou utilizar o comando wget como mostrado no quadro 2, que detalha todo o processo de instalação.

Após ter feito o download, é necessário descompactar o arquivo no diretório em que se irá trabalhar, ou seja, um diretório padrão que neste caso será o /opt, como fizemos na instalação do java. Após descompactá-lo, para padronizar a instalação, renomeie o diretório que foi criado para o nome tomcat6. O diretório /opt/tomcat6 consiste em diversos subdiretórios, que contêm arquivos binários, bibliotecas, logs, subdiretórios das aplicações e arquivos de configurações.

Por padrão o daemon de inicialização está no diretório /bin com o nome catalina.sh. Como estamos padronizando a instalação, teremos que criar um script para que, ao inicializar o sistema operacional, o serviço HTTP na porta 8080 seja inicializado. O quadro 2 mostra a forma de instalação do Tomcat.

Quadro 2:

Comandos para a instalação do Tomcat:

Entrar no diretório /opt:

# cd /opt

Fazer o download dentro:

# wget http://linorg.usp.br/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

Descompactar arquivo:

# tar -xvzfj apache-tomcat-6.0.20.tar.gz

Renomear a pasta de apache-tomcat-6.0.20 para tomcat6 ou tomcat:

# mv apache-tomcat-6.0.20 tomcat6

Iniciar o tomcat /opt/tomcat/bin/catalina.sh:

# sh /opt/tomcat6/bin/catalina.sh start

Testar Tomcat (teste de funcionamento), acessando via browser:

http://localhost:8080/

É necessário a criação de um script para a inicialização do programa quando o sistema operacional for inicializado. Este script deverá permanecer dentro do diretório /etc/init.d, onde será criado um link nativo para todos os diretórios da runlevel de inicialização. Também poderá ser colocado na inicialização padrão.

Para saber a runlevel padrão que o sistema está utilizando, basta executar o comando runlevel no terminal, ou caso queira adicioná-lo em todos os diretórios de inicialização, usa-se o comando update-rc.d.

Para que não seja necessário iniciar o tomcat todas as vezes que desligar ou reiniciar o computador, foi elaborado o seguinte script para iniciá-lo todas as vezes que esse fato ocorrer:

Quadro 3:

Comando para script de inicialização do Tomcat. Criar um arquivo no /etc/init.d/:

# touch tomcat

Adicionar o texto abaixo:

#!/bin/sh
echo Inicializa tomcat
export JAVA_HOME=/opt/java
/opt/tomcat6/bin/catalina.sh start

Mudar a permissão de execução:

# chmod +x tomcat

Adicionar o script na runlevel do sistema:

# update-rc.d tomcat defaults 99

Adicionar o script na runlevel padrão (no Debian, Ubuntu):

# ln -n tomcat /etc/rc2.d/S99tomcat


Diretório e subdiretórios do Tomcat

4. Diretório e subdiretórios do Tomcat

Assim como os diversos softwares que possuem um arquivo de configuração, não há diferença com o Tomcat. Por padrão, os arquivos de configuração do sistema operacional Linux estão alocados em um único diretório que contém subdiretórios de cada programa, que de fato é o /etc. Um exemplo de subdiretório clássico e conhecido em distribuições derivadas do Debian é o /etc/apache2/, diferente das distribuições derivadas do Red Hat que se encontram em /etc/httpd.conf.

Conforme o padrão de instalação que usamos, o diretório /opt/tomcat tornou-se um local onde concentram-se todos os seus subdiretórios e arquivos, podendo assim proporcionar ao administrador do sistema uma melhor manipulação do mesmo em relação ao software que usa diversos subdiretórios do sistema. As vantagens desse sistema podem consistir em não somente facilitar para o usuário mas em outras rotinas diárias, como backup e centralização dos arquivos e diretórios que por sua vez poderiam estar em uma partição separada.

No diretório /opt/tomcat/ estão todos os subdiretórios necessários para os seu funcionamento; abaixo há uma breve explicação:

/bin

Neste local encontram-se os arquivos binários do sistema, bem como o arquivo que permite parar e inicializar o sistema, chamado catalina.sh. Para executá-lo basta adicionar 2 parâmetros, um antes do nome do arquivo e outro indicando qual é a ação a ser realizada, se pára o serviço ou o inicia-o, conforme o comando: sh catalina.sh start

/lib

Todas as bibliotecas estão armazenadas neste local, podendo ser as bibliotecas das aplicações que são desenvolvidas ou bibliotecas do Tomcat, incluindo driver JDBC para conexão com banco de dados.

/logs

O Apache Tomcat registra todas as ações e execuções das aplicações. Neste diretório estão armazenados informações de logs, bem como, execução das aplicações, instalação, erros de acesso, requisição de conexão e entre outros.

/temp

Consiste em um subdiretório para alocar uso de arquivos temporários das aplicações.

/webapps

Considerando o clássico /var/www que o apache utiliza, o subdiretório /webapps possui o mesmo fundamento: Armazenar as aplicações que serão executadas pelo Tomcat. Por padrão, dentro do mesmo, há arquivos do próprio programa e alguns exemplos de jsp e servelets. Caso queira testá-los, acesse http://localhost:8080.

/conf

Esse diretório, em especial, é o mais usado, pois nele se encontram os arquivos de configuração, bem como configuração de usuário, do servidor e do componentes que serão executados. Cada aplicação terá um arquivo de configuração que por sua vez determinará a politica de execução.


Configurando usuários

5.1. Configurando usuários

Um dos primeiros procedimentos a serem tomados na configuração do programa é a definição de usuários, pois a administração do sistema ou programa dependerá desse ajuste para instalar qualquer sistema ou programa que será executado pelo Tomcat. Embora ao testar o seu funcionamento e perceber que o Tomcat está funcionando, como mostra a última linha do quadro 2 (www.localhost:8080), é de extrema importância a definição da função de cada usuário.

Basicamente os usuários podem desempenhar diferentes papéis, como administrador do Tomcat, gerente e usuário comum, que serão usados pelas aplicações Java. O arquivo de configuração encontra-se em /opt/tomcat/conf, conforme o padrão de instalação deste documento; caso o tenha instalado pelo mirror padrão de seus sistema operacional, podendo ser da linha Debian, o diretório será /etc/tomcat6. O arquivo está nomeado como tomcat-users.xml.

Sua configuração consiste em definições de usuário, senha e qual papel será atribuído para este usuário. Como já mencionado os papéis, ou seja, a função que cada um pode desenvolver, é atribuída pelo parâmetro rolename dentro da tag , que, por sua vez, se encontra dentro da tag ; por padrão, aconselha-se definir primeiramente os papéis e, em seguida, os usuários.

A tag define os usuários, senhas e função, com os parâmetros username e password, como visto no exemplo 2.

Exemplo 2:

Modelo de arquivo de configuração de usuário:


<--! Comentário são feitos assim -->


Os usuários que contém papel manager possuem privilégios para realizar ações juntamente com o Tomcat, como iniciar aplicações e configurações nos diversos arquivos de configuração e fazer a implantação das aplicações no servidor. As funções (papéis) dos usuários Tomcat e role1 são padrões do sistema, - se por ventura não as encontrar ao abrir o arquivo, adicione-as. Para se orientar, use o exemplo 2.



Configurando o servidor

5.2. Configurando o servidor

Existem diversas formas de configurar o servidor. Embora seja interessante ou até mesmo necessário que saibamos todas as opções de configuração, não é o objetivo deste documento apresentar todas as opções, mas sim uma configuração básica essencial para o funcionamento.

O arquivo de configuração do servidor encontra-se no mesmo diretório da configuração do usuário. O arquivo referente à configuração do servidor chama-se server.xml; nele pode-se configurar quais portas serão utilizadas para a conexão, o protocolo e o redirecionamento de portas, dentre outros. Essas opções, por padrão, já vêm configuradas.

Quando usamos uma aplicação compactada, ou seja, em arquivo.war, é necessário fazer a configuração da tag para que ela não seja descompactada ao ser instalada. Com isso é preciso configurar o atributo unpackWARs para receber o valor false; assim, ao ser reconhecida pelo programa (Tomcat) ela não será descompactada. O item 1 do exemplo 3 exibe a configuração desta tag. A utilização da extensão do arquivo war não é uma convenção - você poderá utilizá-la em modo descompactado, porém pode estar exposto a alguns erros. Caso escolha utilizá-la como subdiretório, poderá copiar o diretório da aplicação (contexto) para o diretório /opt/tomcat6/webapps.

Na tag podemos configurar a porta de conexão, que por padrão é a porta 8080, juntamente com o protocolo, tempo de conexão com servidor e redirecionamento de portas, dentre outras opções. Existem basicamente três tipos de conectores: o HTTP, que responde a requisições na porta 8080, o AJP, que abre conexão com o apache web server na porta 8009 e o HTTPS, que se refere à conexão segura utilizando certificado digital.

Pode-se configurar o servidor para fazer autenticação em um servidor LDAP, bastando, para isto, configurar o server.xml. Dentro da tag pode-se configurar a tag , sendo necessário acrescentar atributos relacionados com a url de conexão do servidor e informações de usuários, bem como usuário, papel do usuário, dentre outros.

Caso haja necessidade de configuração para autenticação com LDAP, o trecho 3 do exemplo 3 pode ser usado.

Exemplo 3:

Trechos de configuração do arquivo server.xml:

1. Tag :



  unpackWARs="false" autoDeploy="true"
  xmlValidation="false" xmlNamespaceAware="false">


2. Tag Connector:



   connectionTimeout="20000"
   redirectPort="8443" />


3. Autenticação com LDAP:



connectionURL="ldap://[LDAP-HOST]:389"
   userBase="dc=uf??,dc=br"
   userRoleName="ObjectClass"
   userSearch="uid={0}"
   userSubtree="true"
   roleName="objectClass"/>



5.3. Configurando o contexto

Toda aplicação desenvolvida a ser instalada no Tomcat necessita de uma configuração em um arquivo web.xml, que se encontra dentro do subdiretório /WEB-INF da aplicação. Podemos configurar dentro desse arquivo as descrições dos aplicativos e sua exibição, bem como o path, Display Name, sessões, dentre outras configurações.

A configuração deste arquivo pode ser feita manualmente ou automaticamente, se usada a aplicação manager web do Tomcat (http://localhost:8080/manager/html). Geralmente, a instalação automática, por padrão, poderá fazer algum tipo de configuração; mesmo tendo isso a favor, pode-se configurá-lo conforme as indicações. Ao desenvolver a aplicação, é necessário criar um arquivo web.xml dentro do subdiretório /WEB-INF da aplicação. Ele poderá possuir o mínimo de configuração, contendo somente o tipo de charset, podendo ser UTF-8, que é padrão do sistema operacional Linux.

Para melhorar a configuração da aplicação, deve-se abrir uma tag para colocar os atributos que poderão configurá-la, pois, por padrão, ao colocar uma aplicação no diretório /opt/tomcat6/webapps, o Tomcat define o path, sendo preciso somente configurar a exibição do nome da aplicação que, para isso, configura o atributo apontando o nome e uma descrição da aplicação com o atributo . Veja no exemplo 4 um modelo de configuração deste arquivo e na figura abaixo o resultado da configuração.

Exemplo 4:

Configuração do web.xml:



Sistema de Teste (Artigo)
  
      Exemplo de Arquivo web.xml.


5.4. Configurações fundamentais

Outra configuração importante é a configuração do uso de memoria RAM da máquina virtual no Tomcat (que como sabemos, é inteiramente desenvolvido em Java) sua interpretação se dá por meio da máquina virtual Java, que, por sua vez, fará o uso da memória exigindo um valor mínimo de 64MB por padrão - mas caso essa aplicação realize um número elevado de acessos a um banco de dados, poderá comprometer o serviço fazendo com que o processamento do servidor atinja o máximo do seu uso. Quando esse fato chega a acontecer, geralmente ocorrem erros de interpretação da maquina virtual java e perda do PATH, ocorrendo erros de interpretação do $JAVA_HOME - Variável de ambiente -. Para isso, precisamos configurar a JVM (Maquina Virtual).

Essa configuração deve ser feita no arquivo catalina.sh, que se encontra no diretório /opt/tomCat6/bin. A sintaxe dos comandos a serem acrescentados neste arquivo estão mencionados no exemplo 5 item 1. O parâmetro -Xmx768M indica a quantidade de memória que a JVM (Máquina Virtual Java) irá usar. O parâmetro -XX:MaxPermSize=256M indicará ao Tomcat a quantidade de memória RAM disponível a ele e os outros são para configuração de hora, linguagem e referência de fuso-horário. É importante lembrar que essa sintaxe deve ser adicionada após os comentários iniciais do arquivo, antecedendo os primeiros comandos do script.

Essa configuração refere-se a uma quantidade de 1GB no total, que um computador esteja porventura usando; caso tenha mais que essa quantidade ou menos, siga a seguinte orientação: usar 3/4 da capacidade da memória RAM para o parâmetro -Xmx768M e 1/4 para -XX:MaxPermSize=256M.

Outra observação importante que precisa ser colocada é a ausência do driver JDBC dentro da pasta lib do Tomcat. Caso deixe de colocar o driver nesta pasta, sua aplicação não conseguirá fazer uma consulta ou rotina na base de dados. O driver JDBC é responsável por todas as rotinas de interação com bases de dados relacionais.

Cada Sistema de Gerenciamento de Bando de Dados - SGBD - possui um driver JDBC que pode ser encontrado no site oficial da Sun (http://devapp.sun.com/product/jdbc/drivers) ou no próprio site do SGBD que está usando.

Os arquivos de configuração que ajudaram na elaboração deste documento estão disponíveis no site www.vivaolinux.com, na sessão conf. Para melhor acompanhamento na elaboração ou no teste de configuração os arquivos podem ser consultados ou baixados no seguinte link:

Caso tenha necessidade de uma aplicação JSP para testar os procedimentos descritos neste documento, também está disponível no site www.vivaolinux.com.br, uma aplicação simples desenvolvida por Hermes Júnior - hnpjunior - para teste deste documento. O download pode ser feito no link abaixo.

Ao fazer o download do arquivo sistemaExibeJSTL.tar.gz, deverá copiá-lo para o diretório /opt/tomcat6/webapps e descompactá-lo, usando o comando:

# tar -xvzf sistemaExibeJSTL.tar.gz

Para acessar a aplicação, direcione o navegador para a seguinte url:

http://localhost:8080/sistemaExibeJSTL/paginas

Exemplo 5:

Configurações gerais:

1. Configuração de memória da Máquina Virtual Java:


CATALINA_OPTS="-Xmx768M -XX:MaxPermSize=256M -Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.country=BR"


Considerações finais

Sobre o autor:

José Cleydson Ferreira da Silva, graduando em Sistemas de Informação - Faculdade de Viçosa-MG. Usuário do Linux por filosofia, acredita que o Software Livre e de Código Aberto podem mudar a forma e o modelo de mercado atual.


Referência bibliográfica