Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

Publicfile: Servidores FTP e HTTP com Segurança

Tabela de conteúdo

Introdução

Tenho quase certeza que você nunca ouviu falar desse programa na sua vida, realmente ele não é tão famoso quanto o seu irmão mais velho o Qmail, felizmente os principais focos de uso do Qmail se aplicam também ao Publicfile, ou seja, a segurança reforçada e a estabilidade.

Antes que você pense em jogar fora o Apache e o Proftpd, sugiro que leia com atenção o que o ftpd e o httpd (que são os programas do pacote Publicfile) podem fazer por você.

  • Ftpd

Servidor de ftp roda em chroot por padrão, ocupando pouco espaço na memória, infelizmente (ou felizmente para alguns casos) sua aplicação so é valida para um servidor que apenas suporte usuários anônimos, pois o ftpd não faz checagem de senhas. Existem patches que podem contornar esse problema fazendo que o ftpd faça a checagem de senhas, mas isso fica para o próximo tutorial do Publicfile que eu farei :-] .

  • Httpd

Basicamente tem as mesmas características do ftpd como segurança e uso otimizado de memória, entretanto so permite publicar páginas estáticas, portanto esqueça qualquer linguagem dinâmica (php, cgi, jsp e etc) pois o httpd não oferece essa opção. Existe um patch que permite o httpd exibir páginas em cgi, mas isso fica para o próximo tutorial também :-).

Instalando

Primeiro você tem que instalar as dependências para o Publicfile que são o ucspi-tcp e o daemontools como mostrado abaixo, lembrando que o diretório que esta sendo usado para a descompressão dos arquivos é o /usr/local/src.

bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf ucspi-tcp-0.88.tar.gz
bash-2.05a# cd ucspi-tcp-0.88/
bash-2.05a# make setup check
bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf daemontools-0.76.tar.gz
bash-2.05a# cd admin/daemontools-0.76/
bash-2.05a# package/install

Agora vamos a instalação do Publicfile .

bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf publicfile-0.52.tar.gz
bash-2.05a# cd publicfile-0.52/
bash-2.05a# make setup check

Pronto, o Publicfile foi instalado em /usr/local/publicfile

Criando os usuários que o Publicfile precisa.

bash-2.05a# groupadd publicfile
bash-2.05a# useradd publicfile -g publicfile
bash-2.05a# useradd publiclog -g publicfile

Configurando

Para configurar o Publicfile basta ir ao diretório onde esta o aplicativo configure e executar o mesmo satisfazendo os parâmetros de configuração.

bash-2.05a# cd /usr/local/publicfile/bin/
bash-2.05a# ./configure

configure: usage: configure acct logacct /public hostname hostip ...

Entendendo os parâmetros.

acct: usuário usado pelo Publicfile.

logacct: usuário usado para os logs do Publicfile.

/public: diretório onde vai ser criado a arvore hierárquica do Publicfile.

hostname: hostname da sua maquina .

hostip: endereço ip da sua maquina.

Usando o configure com os parâmetros.

bash-2.05a# ./configure publicfile publiclog /public

Para iniciar os serviços basta criar um link simbólico do diretório /public/ftpd e /public/httpd na pasta /service

</pre> bash-2.05a# cd /service/ bash-2.05a# ln -s /public/ftpd/ bash-2.05a# ln -s /public/httpd/ </pre>

Agora olhe os processos que estão rodando na maquina (ps aux) e você vera alguns processos como os descritos abaixo.

root 9531 0.0 0.0 1272 296 ? S 16:31 0:00 supervise ftpd
root 9532 0.0 0.0 1272 296 ? S 16:31 0:00 supervise log
root 9533 0.0 0.0 1296 300 ? S 16:31 0:00 tcpserver -vDRHl0 -b20 -c40 -B220 Features: a p .?? 0 21 /usr/local/publicfile/
publicl 9534 0.0 0.0 1284 288 ? S 16:31 0:00 multilog t ./main -* +* * status: * =status
root 9537 0.0 0.0 1272 296 ? S 16:32 0:00 supervise httpd
root 9538 0.0 0.0 1272 296 ? S 16:32 0:00 supervise log
root 9539 0.0 0.0 1296 300 ? S 16:32 0:00 tcpserver -vDRHl0 -b50 -c100 0 80 /usr/local/publicfile/bin/httpd /public/file
publicl 9540 0.0 0.0 1284 288 ? S 16:32 0:00 multilog t ./main -* +* * status: * =status

Agora vamos ao diretório /public para esclarecer algumas questões

bash-2.05a# cd /public/
bash-2.05a# ls

file ftpd httpd

O diretório file/ é onde se armazena os arquivos do ftpd e do httpd, e os diretórios ftpd/ e httpd/ armazenam configurações e arquivos de log.

Indo mais a fundo no file/.

bash-2.05a# cd file/
bash-2.05a# ls

0

O diretório "0/" é onde fica armazenado os arquivos que serão oferecidos pelo ftpd, vamos testa-lo criando um arquivo de teste dentro do 0/.

bash-2.05a# cd 0/
bash-2.05a# touch teste-ftpd

Agora vamos acessar o ftpd

bash-2.05a# ftp localhost

Connected to localhost.

220 Features: a p .

Name (localhost:root):

230 Hi. No need to log in; I'm an anonymous ftp server.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

200 Okay.

150 Making transfer connection...

+i771.114974,r,s0, teste-ftpd

226 Success.

ftp> get teste-ftpd

local: teste-ftpd remote: teste-ftpd

200 Okay.

150 Making transfer connection...

226 Success.

ftp> exit

221 Bye.

Como foi visto, para publicar arquivos pelo ftpd basta inclui-los no diretório "/public/file/0" .

Voltando para o "/public/file/" para a explicação de como o httpd trabalha.

bash-2.05a# cd /public/file/

Basta imaginar o diretório /public/file como o http://, se por exemplo você hospeda uma pagina basta criar o diretório para completar o endereço, por exemplo meu domínio é verme.org e minha pagina é acessada por www.verme.org pelo ip 192.168.1.1, então basta eu configurar o meu dns para resolver corretamente os nomes e criar o diretório www.verme.org dentro do /public/file como mostrado abaixo.

bash-2.05a# mkdir www.verme.org
bash-2.05a# cd www.verme.org/
>/pre>

Agora crie um index.html bem simples para testar, o meu index.html ficou assim

<pre>
TESTE DO HTTPD

Testando com o lynx consegui o resultado esperado. Lembrando que basta seguir essa linha de pensamento apenas mudando o www.verme.org para o que você deseja que o resultado sera o mesmo.

O httpd também suporta virtual hosts sem problemas, veja um exemplo do host virtual allisson.verme.org, lembrando que o meu dns esta apontando o endereço allisson.verme.org para o ip 192.168.1.1 caracterizando assim um host virtual baseado em nomes.

bash-2.05a# cd /public/file/
bash-2.05a# mkdir allisson.verme.org
bash-2.05a# cd allisson.verme.org/

Basta criar um index.html aqui dentro, eu tirei uma copia do index.html ja criado.

bash-2.05a# cp /public/file/www.verme.org/index.html .

Testando com o lynx funcionou perfeitamente.

Agora vou criar o host virtual allisson2.verme.org que esta apontando para o ip 192.168.1.2 da minha maquina (minha placa de rede esta com dois ips) que caracteriza um host virtual por ip.

bash-2.05a# cd /public/file/
bash-2.05a# mkdir allisson2.verme.org
bash-2.05a# cd allisson2.verme.org/
bash-2.05a# cp /public/file/www.verme.org/index.html .

Testando com o lynx funcionou perfeitamente.

Considerações finais

Espero ter sido o mais claro possível nesse tutorial, lembrando que os serviços ftpd e httpd podem ser usados em separado (so o ftpd ou o httpd ligado) ou em conjunto dependendo do que você precisar, queria lembrar também que os serviços estão rodando sobre o daemontools portanto toda vez que o sistema for reiniciado os serviços automaticamente serão iniciados e supervisionados pelo daemontools.

Espero fazer outro tutorial sobre o Publicfile mostrando como alguns patches que podem ser aplicados podem torna-lo mais interessante.

Fim da transmissão :]




Autor: Allisson Azevedo ( allisson@linuxmail.org)
Horários baseados na GMT -3. Agora são 17:44.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.