|
|||||||
| Wiki | Classificados | Galeria | Reviews | Jogos | Comunidades | RSS Feeds | FAQ | Termos de Uso | Sobre |
| Cadastre-se | Fotos | Blogs | Lista de Membros | Calendário | Pesquisar | Mensagens de Hoje | Marcar Fóruns Como Lidos |
FerramentasPublicidade |
From UnderLinux WikiPublicfile: Servidores FTP e HTTP com Segurança
[editar] IntroduçãoTenho 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ê.
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 :-] .
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 :-). [editar] InstalandoPrimeiro 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 [editar] ConfigurandoPara 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. [editar] Considerações finaisEspero 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 :]
|