Tutoriais/Ftpd/Publicfile
De 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 :]


