|
|||||||
| 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 WikiPutftpd Tutorial - Servidor FTP Seguro e Robusto
[editar] IntroduçãoImagine um servidor ftp com essas características: robusto, seguro, autenticação totalmente separada do sistema, controle da quantidade de arquivos, controle do tamanho dos arquivos e que so permita o envio de arquivos. Se você precisa de algo desse tipo leia esse tutorial :-). O Putftpd reúne todas as características acima além de ser de fácil instalação e configuração. O mesmo trata-se de um patche para o Publicfile, depois do patche modificar alguns arquivo fonte o resultado da compilação sera o putftpd. [editar] Arquivos necessários
[editar] InstalaçãoPara começar vamos instalar as dependências para o putftpd que são o "daemontools" e o "ucspi-tcp", lembrando que todos os arquivos estão localizados em "/usr/local/src". 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 bash-2.05a# cd /usr/local/src/ bash-2.05a# tar -xzvf ucspi-tcp-0.88.tar.gz bash-2.05a# cd ucspi-tcp-0.88/ bash-2.05a# make setup check Agora vamos descompactar o fonte do publicfile e aplicar o patche putftpd 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# gzip -dc /usr/local/src/putftpd-0.1.patch.gz | patch -p1 bash-2.05a# make setup check O putftpd foi instalado no diretório "/usr/local/putftpd" [editar] ConfiguraçãoO putftpd gera um binário chamado configure localizado no diretório "/usr/local/putftpd/bin", executando esse arquivo temos a seguinte resposta bash-2.05a# /usr/local/putftpd/bin/configure configure: usage: configure acct logacct /public Traduzindo isso temos acct: usuário responsável pela execução do putftpd logacct: usuário responsável pelos logs do putftpd /public: diretório base do putftpd [editar] Criando os usuáriosbash-2.05a# groupadd putftpd bash-2.05a# useradd -g putftpd -s /bin/false putftpd bash-2.05a# useradd -g putftpd -s /bin/false putlog Agora executando o configure novamente para finalizar bash-2.05a# /usr/local/putftpd/bin/configure putftpd putlog /public Como visto o diretório base escolhido foi o "/public", vamos acessa-lo bash-2.05a# cd /public/ bash-2.05a# ls ftp-incoming putftpd Agora para que o putftpd inicie basta criar um link simbólico do diretório /public/putftpd em /service bash-2.05a# ln -s /public/putftpd/ /service/ Para verificar se o putftpd foi iniciado basta olhar os processos que estão em execução e verificar a existência dos processos mostrados abaixo bash-2.05a# ps -aux root 3026 0.0 0.0 1272 296 ? S 21:37 0:00 supervise putftpd root 3027 0.0 0.0 1272 296 ? S 21:37 0:00 supervise log root 3028 0.0 0.0 1296 300 ? S 21:37 0:00 tcpserver -vDRHl0 -B220 Features: a p .?? 0 2001 /usr/local/putftpd/bin/putftpd putlog 3029 0.0 0.0 1284 288 ? S 21:37 0:00 multilog t ./main -* +* * status: * =status Lembrando que o putftpd roda por padrão na porta 2001 Criando usuários O processo para criação de usuários no putftpd é bastante simples, basta criar um diretório com o mesmo nome do login do usuário dentro de "/public/ftp-incoming", no exemplo abaixo eu vou criar o usuário allisson bash-2.05a# cd /public/ftp-incoming/ bash-2.05a# mkdir allisson Para definir uma senha para o usuário "allisson" basta criar um arquivo com o nome .passwd (incluindo o ponto) contendo a senha dentro do diretório "/public/ftp-incoming/allisson" como mostrado abaixo bash-2.05a# cd allisson/ bash-2.05a# echo 123456 > .passwd bash-2.05a# cat .passwd 123456 Por fim vamos criar mais dois arquivos dentro do diretório "/public/ftp-incoming/allisson", o primeiro com o nome de ".maxfiles" (incluindo o ponto) deve ter em seu conteúdo o numero máximo de arquivos permitido ao usuário bash-2.05a# echo 10 > .maxfiles O outro arquivo deve ter o nome de ".maxfilesize" e no seu conteúdo deve conter o tamanho máximo permitido ao usuário bash-2.05a# echo 1000000 > .maxfilesize Para funcionar o diretório "/public/ftp-incoming/allisson" tem que ter seu dono e grupo setados corretamente como mostrado abaixo bash-2.05a# chown putftpd.putftpd /public/ftp-incoming/allisson/ -R [editar] TestandoAgora com um usuário criado chegou a hora de testar o putftpd bash-2.05a# ftp localhost 2001 Connected to localhost. 220 Features: a p . Name (localhost:root): allisson 331 Password required. Password: 230 Ok, logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> put /etc/passwd passwd local: /etc/passwd remote: passwd 200 PORT Okay. 150 Making transfer connection... 226 Success, now total filesize is 900. 900 bytes sent in 0.000117 secs (7.5e+03 Kbytes/sec) ftp> ls 200 PORT Okay. 150 Making transfer connection... -rw-r--r-- 1 pub pub 900 Jan 17 00:00 passwd 226 Success. ftp> exit 221 Bye. [editar] Alterando a porta padrão do putftpdO putftpd roda sobre a porta 2001 por padrão, para alterar a porta basta editar o arquivo "/public/putftpd/run" e mudar o valor 2001 para o desejado. Abaixo segue o "/public/putftpd/run" original. bash-2.05a# cat run #!/bin/sh exec 2>&1 exec envdir ./env softlimit -o20 -d50000 tcpserver -vDRHl0 -B'220 Features: a p . ' 0 2001 /usr/local/putftpd/bin/putftpd Segue abaixo o /public/putftpd/run modificado para rodar sobre a porta 20202 bash-2.05a# cat run #!/bin/sh exec 2>&1 exec envdir ./env softlimit -o20 -d50000 tcpserver -vDRHl0 -B'220 Features: a p . ' 0 20202 /usr/local/putftpd/bin/putftpd [editar] Limitando o acesso ao putftpdPodemos limitar o acesso ao putftpd por ip, criando o arquivo "/public/putftpd/tcp.putftpd" veja o conteúdo do meu abaixo bash-2.05a# cat /public/putftpd/tcp.putftpd 192.168.1.:allow 127.0.0.1:allow Como mostrado acima os endereços ips "127.0.0.1" e "192.168.1.1-192.168.1.255" estão aptos a usar o putftpd. Ainda é necessário transformar esse arquivo para o formato .cdb como descrito abaixo bash-2.05a# /usr/local/bin/tcprules /public/putftpd/tcp.putftpd.cdb /public/putftpd/tcp.putftpd.tmp < /public/putftpd/tcp.putftpd Temos que adicionar o parâmetro -x /service/putftpd/tcp.putftpd.cdb no arquivo /public/putftpd/run veja como ficou o meu abaixo. bash-2.05a# cat run #!/bin/sh exec 2>&1 exec envdir ./env softlimit -o20 -d50000 tcpserver -x /public/putftpd/tcp.putftpd.cdb -vDRHl0 -B'220 Features: a p . ' 0 2001 /usr/local/putftpd/bin/putftpd [editar] FinalizandoResolvi fazer esse tutorial para mostrar mais um programa interessante mais pouco conhecido, espero que sirva para alguém. Queria lembrar também que o putftpd pode conviver sem problemas com o publicfile E a minha procura por programas desconhecidos continua :-).
|