ProFTPD + MySQL - Servidor FTP com usuários em banco de dados

cvs

Aqui vamos instalar o servidor de FTP ProFTPd com suporte a MySQL para criar usuários virtuais e filtrar o IPs que podem se conectar ao serviço, assim aumentando a segurança do servidor e melhorando seu desempenho.

[ Hits: 82.816 ]

Por: Thiago Alves em 26/07/2006 | Blog: http://www.seeufosseopresidente.com.br


Instalações



MySQL


# tar zxf mysql-xx.tar.gz
# cd mysql-xx
# ./configure --prefix=/usr/local/mysql
# make
# make install


Pronto, instalado, agora vamos configurar. Para facilitar, vamos alterar o /etc/profile e inserir a seguinte linha:

export MYSQLPATH=/usr/local/mysql/bin

e alterar o linha do PATH para ficar assim:

PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:$MYSQLPATH"

Agora sim, efetue o logout e depois logue novamente parar entrar em vigor a alteração no profile e agora vamos configurar o MySQL:

# mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/var
# mysqld_safe &
# mysqladmin -u root password 'password'


Pronto, lembre-se de anotar essa senha, senão vai dar trabalho pra conseguir recuperá-la.

ProFTPD


# tar jxf proftpd-xxx.tar.bz2
# cd proftpd-xxx
# ./configure --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/mysql/include/mysql/ --with-libraries=/usr/local/mysql/lib/mysql/
# make
# make install


Pronto, instalação concluída.

ProFTPD-Admin


Agora vamos instalar o proftpd-admin para podermos configurar o proftpd e terminar o tutorial.

# tar xfvz proftpd_admin_v1.0.tar.gz
# cd proftpd_admin_v1.0
# mysql -psenha < misc/database_structure_mysql/db_structure.sql


Vamos ver como está o banco de dados do proftpd:

mysql> use proftpd_admin Database changed mysql> show tables;
+--------------------------+
| Tables_in_proftpd_admin  |
+--------------------------+
| ftpquotalimits           | 
| ftpquotatallies          | 
| grouptable               | 
| usertable                | 
| xfer_stat                | 
+--------------------------+
5 rows in set (0.01 sec)

Se apareceu isso é porque o banco foi criado corretamente.

Vamos para o próximo passo, dar permissão ao diretório logs e criar o diretório onde os usuários vão poder colocar os arquivos que forem "uploadeados".

# chmod -R o+w logs
# mkdir /ftp
Agora vamos editar os arquivos de configuração do proftpdadmin:

# mcedit include_config_oldstyle.php

Altere os seguintes campos:

$config_database_type     = 'MySQL';
$config_database_host     = 'localhost';
$config_database_user     = 'root';
$config_database_passord  = 'senha';
$config_database_database = 'proftpd_admin';

Agora vamos à configuração proftpd.conf, próxima página.

Página anterior     Próxima página

Páginas do artigo
   1. Iniciando
   2. Instalações
   3. proftpd.conf
   4. Bônus - Limitando IPs que podem se conectar
   5. Finalizando e criando usuários
   6. Conclusão
Outros artigos deste autor

Incremente o iptables com patch-o-matic

Sylpheed - a GTK+ based, lightweight, and fast e-mail client

Compilando Apache 2 com PHP, MySQL, mod_perl e mod_ssl

Sistema de arquivos distribuídos usando Gmail

Slackpkg, uma ótima ferramenta para Slackware

Leitura recomendada

Configurando modem MF622 no Linux com velocidade superior a 512K

Twitter Clone - Floopo - Mais um Micro blogging open source

Chrome Remote Desktop - O serviço de acesso remoto do Google

Problema do navegador Opera com temas GTK+2 escuros [Resolvido]

Identificando problemas básicos de redes Linux para principiantes

  
Comentários
[1] Comentário enviado por thelinux em 26/07/2006 - 13:37h

Thiago,

Parabéns pelo artigo.

[2] Comentário enviado por fabianotecnico em 26/07/2006 - 13:41h

Eae,

cara

Artigo de Respeito einh...muito bom!!!

[3] Comentário enviado por celiojs em 27/07/2006 - 13:45h

E aí rapaz!!
Mandando ver nos artigos!!!!
Artigo interessante.
Até mais,
Célio

[4] Comentário enviado por Airozi em 28/07/2006 - 02:44h

Legal o artigo, unica coisa ruim e q ele não
cria diretório especificado efim!!

[5] Comentário enviado por gilsonpaulo em 05/11/2006 - 01:56h

SQLHomedirOnDemand on / Adicione esta linha ao proftpd.conf
# se o diretorio nao existir criar no primeiro login

[6] Comentário enviado por baladao em 25/04/2007 - 12:25h

Usamos essa solução em servidores de hospedagem compartilhados, no entanto identificamos um problema que é um grande delay para estabelecer a conexão FTP.

Será pelo volume de acessos que é alto, ou por alguma config?

[7] Comentário enviado por airozi em 25/04/2007 - 21:05h

baladao, vc fez uma filtragem se não é o server que é fraco, link , verificou conf do BD, lembrando que bd que autentica tudo

[8] Comentário enviado por rbg000 em 27/06/2007 - 10:24h

Opa, Legal o artigo, tive um problema na parte do proftpd admin!
Estou com o proftpd e o phpmyadmin instalado e funcionando.
Qdo fui configurar o proftpd admin 1.0.4 tive um problema ao utilizar o comando mysql -psenha < misc/database_structure_mysql/db_structure.sql pois nao achou esse arquivo e tb nao entendi o q ele faz!
Qdo rodo no brownser o proftpd admin ele apresenta o seguinte erro:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/proftpdadmin/includes/db.php on line 72

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/proftpdadmin/index.php on line 25

Acredito que ele n esta enxergando minha database.
A distribuicao q estou usando eh o debian 3.1
Grato aguardo um retorno!

[9] Comentário enviado por rbg000 em 27/06/2007 - 13:56h

Acredito q o promema seja o ProFTPD admin identificar o database mysql!! se for o q devo fazer?

[10] Comentário enviado por metall em 14/11/2008 - 17:33h

Boa Tarde Estou implantando esta solucao num servidor Debian 4.0 estou com o seguinte problema apos cadastrar o usuario ele cadastra normal mais aparece este erro quando da um submit

Warning: Missing argument 4 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 5 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 6 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 7 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 8 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Alguem saberia onde qual eh o problema

Desde Ja Agradeço.

Abraço.

[11] Comentário enviado por letwu em 17/03/2009 - 16:00h

Essa parte de limitação de IP's não funcionou aqui comigo não!

Limitei, conforme dito no passo a passo, mas não limitou a ninguém! Acessando tanto internamente quanto externamente, qualquer IP consegue acessar, independente se tem a opção Allow from xxx.xxx.xxx.xx Deny from all

Outro problema que estou tendo é que no Internet Explorer ele lista todos os diretórios, desde a raiz, e preciso que ele fique somente no diretório permitido. Este problema só acontece quando é acessado pelo Internet Explorer. Nos demais navegadores, clientes de email ou mesmo no Explorer não acontece.

PS: já coloquei a opção " DefaultRoot ~ " (sem aspas) no meu arquivo proftpd.conf


Mais alguém teve algum destes problemas?

[12] Comentário enviado por gabrielsimas em 07/04/2010 - 16:43h

Falta uma informação:

Dentro do diretório misc do proftpd_admin, existe uma subdiretório chamado config_sample, dentro dele existe este arquivo proftpd.conf no qual deve ser copiado ou apontado com link dinâmico para o diretório /usr/local/etc/ e lá se encontra justamente este arquivo copiado acima. Segue a linha encontrada no manual do Proftpd_admin:
cp misc/sample_config/proftpd.conf /usr/local/etc/proftpd.conf


Contribuir com comentário