ProFTPD com autenticação via MySQL

Artigo mostrando como instalar e configurar o ProFTPD para usar autenticação via banco de dados. Mostra também como criar Virtual Hosts e algumas configurações adicionais do ProFTPD.

[ Hits: 101.903 ]

Por: Hugo Doria em 28/01/2005 | Blog: http://hugodoria.org


Download e instalação do ProFTPD



OBS: Estou supondo que você já possui o MySQL instalado no seu computador, por isso não abordarei a instalação do mesmo neste tutorial.

Pacotes utilizados

  • Distribuição utilizada: Slackware 10;
  • Versão do ProFTPD: 1.2.10;
  • Versão do MySQL: 4.0.20.

Hora de colocar a mão na massa.

A primeira coisa que você deve fazer é verificar se o ProFTPD foi instalado na tua máquina através de um pacote pré-compilado. Se sim, você terá que o desinstalar.

Aí você se pergunta: "Pra que desinstalar e instalar de novo? No mínimo esse cara quer me fazer de besta x/".

Não é bem assim. O problema é que precisamos instalar o ProFTPD através do source para podermos habilitar o suporte ao MySQL, afinal, o objetivo é esse certo?

No Slackware eu fiz isso:

# ls /var/log/packages/ | grep proftpd*
proftpd-1.2.9-i486-3

daí:

# removepkg /var/log/packages/proftpd-1.2.9-i486-3*

Você terá que adaptar os comandos de acordo com sua distribuição ou usar o gerenciador de pacotes de sua distro.

# pkgtool
(Slackware)

Agora que desinstalamos o pacote pré-compilado, é hora de baixar o source.

A página oficial do ProFTPD é:
E o link para a versão mais atual (no momento em que fiz o tutorial) é:

ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10.tar.bz2

use:

# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10.tar.bz2

ou seu navegador preferido.

Terminado o download, temos que descompactar o arquivo:

# tar xvjf proftpd-1.2.10.tar.bz2 -C /usr/local/src/

(isso descompactará o arquivo na pasta /usr/local/src/)

# cd /usr/local/src/proftpd-1.2.10/

Preparando o arquivo para a compilação:

Antes temos que encontrar as pastas "include" e "lib" relacionadas ao MySQL.

# find / -name mysql | grep lib

Saída: /usr/lib/mysql (pode variar de acordo com sua distribuição)

# find / -name mysql | grep include

Saída: /usr/include/mysql (pode variar de acordo com sua distribuição)

Com esses resultados eu posso preparar a compilação:

# ./configure --with-modules=mod_sql:mod_sql_mysql \
   --with-libraries=/usr/lib/mysql \
   --with-includes=/usr/include/mysql


Se tudo estiver OK:

# make

Espere terminar (o tempo vai variar de acordo com seu computador) e faça:

# make install

OBS: Não esqueça de substituir as pastas no --with-libraries e --with-includes pelas pastas encontradas no seu sistema ao usar os comandos:

# find / -name mysql | grep include
# find / -name mysql | grep lib


    Próxima página

Páginas do artigo
   1. Download e instalação do ProFTPD
   2. Criando a tabela de usuários no MySQL
   3. Configurando o ProFTPD
   4. Entendendo o arquivo proftpd.conf
   5. Criando Virtual Hosts
   6. Configurações adicionais
   7. Exemplo de proftpd.conf
   8. Concluindo
Outros artigos deste autor

As melhores ferramentas de segurança pra Linux

AUR - Arch Linux User-Community Repository

Colocando ícones no menu do Fluxbox

Como criar pacotes para o Arch Linux

Gerenciando pacotes com o pacman

Leitura recomendada

PuTTY - Release 0.66 - Parte I

Deixando o Fluxbox com a sua cara

AirPlay Receptor em Raspberry Pi

KMenuEdit, Alacarte, freedesktop.org - Como funcionam?

Configurando NFS + NIS (Ubuntu)

  
Comentários
[1] Comentário enviado por elbriga em 28/01/2005 - 10:12h

As vezes eu queria acessar meu servidor para fazer uma manutenção e demorei pra descobrir como entrar no FTP como root, então se alguém precisar é só adicionar esta linha no conf:

RootLogin on

Espero que ajude....

Ótimo artigo n0z3y.

[2] Comentário enviado por hdoria em 28/01/2005 - 14:17h

vlw pela dica ai elbriga.

E também eu acho que encontrei um erro no artigo... logo no começo. Deveria ser assim:

# ls /var/log/packages/ | grep proftpd
proftpd-1.2.9-i486-3

Sem o asterisco no final.

Desculpem

Abraços \o/




[3] Comentário enviado por fabio em 28/01/2005 - 14:27h

Essa solução é bem bacana. Certa vez migrei todas as contas de e-mail de um provedor pra MySQL, daí tive de encontrar as soluções pra POP, FTP e radius, acabei encontrando: qpopper, proFTPD e freeradius.Fica tudo bem integrado e o bom é que isso lhe permite uma facilidade incrível na hora de programar sistemas de gerenciamento de usuários (PHP + MySQL).

[]'s

[4] Comentário enviado por removido em 28/01/2005 - 20:23h

como eu faço para fazer um script de receba uma tela e teste o valor, se for impar mostrar na tela do dialog (calendario) onde a data marcada vai ser o número digitado,. E se for par me mostrar uma janela do dialog (horario), onde a hora vai coincidir com o numero digitado.

[5] Comentário enviado por fernandoamador em 28/01/2005 - 21:52h

ótimo

[6] Comentário enviado por claytom em 01/03/2005 - 14:35h

Amigo esta dando este erro depois da instalação, estou do FEDORA CORE 3.

Connected to localhost.
220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [127.0.0.1]
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (localhost:root):

[7] Comentário enviado por hdoria em 01/03/2005 - 17:09h

já tentou usar outro cliente ftp?
Qual vc está usando?

[8] Comentário enviado por freehand em 02/03/2005 - 10:59h

Parabéns pelo artigo, muito bom e muito funcional ..........t+

[9] Comentário enviado por hdoria em 02/03/2005 - 17:11h

obrigado cara,
espero ter ajudado.

[10] Comentário enviado por mafioso em 04/03/2005 - 15:11h

Connected to localhost.
421 Service not available, remote server has closed connection

Alguma sugestão? Por favor, enviar para vitor em noclique.com.br.

[11] Comentário enviado por hdoria em 29/03/2005 - 10:38h

iso deve ser algo da parte referente ao mysql no proftpd.conf.

Revise suas configurações. qualquer coisa so mandar um email

[12] Comentário enviado por mafioso em 19/11/2005 - 12:03h

Ótimo artigo! Comigo funcionou blz! Parabéns por mais essa contribuição!

[13] Comentário enviado por danilorlima em 03/12/2005 - 14:31h

Instalei o vsFtp mas quero desisntalar e instalar o ProFtpd , como faço isso, ja removi o vsftpd do /usr/local/sbin mas parece que ainda esta rodando

[14] Comentário enviado por danilorlima em 03/12/2005 - 14:49h

quando vou executar proftpd, surge esse erro :
proftpd: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory

uso mysql 5.0.16

[15] Comentário enviado por nesken em 28/12/2005 - 17:34h

e se eu quiser instalar soment o proftpd pra uma simples ftp... sem autenticaçao em SQl... como eu faria????

[16] Comentário enviado por diegoszch em 12/03/2006 - 15:29h

danilorlima eu tava com o mesmo problema q vc. Testei no Mysql 3,4,5, e sempre dava este mesmo erro: "proftpd: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory", então descobri que só funcionava quando o mysql era binario. Contudo futriquei e descobri que vc tem que editar o arquivo "/etc/ld.so.conf", e colocar o endereco do lib do teu mysql (/usr/local/mysql/lib/mysql). Depois é só digitar 'ldconfig' e tudo vai funcionar corretamente.
[ ]'s
Diego

[17] Comentário enviado por d.darlan em 29/11/2006 - 14:52h

Muito bom esse artigo, me ajudou muito, muito legal mesmo, pois o artigo está muito bem explicado ao ponto de se criar um ftp server sem nenhum problema e sem nenhuma dificuldade. Seja livre, seja Linux...

[18] Comentário enviado por cleitão em 07/03/2007 - 10:55h

Fala Galera do VOL to montando um servidor de ftp na empresa onde trabalho só que o proftpd não levanta o serviço da a seguinte mensagem:

Fatal: unknown configuration directive 'SQLAuthTypes'

alguém sabe me dizer o que esta faltando???

Desde já agradeço a atenção!!!!!

[19] Comentário enviado por tpozzi em 17/04/2007 - 21:41h

Ae o artigo ficou muito bom mas eu estou com o seguinte problema.
tenho 2 dominios e os ftps deles ficam em /var/www/dominio1 e /var/www/dominio2 mas quando eu logo com o usuario do dominio1 eu consigo ir para sem problemas para a pasta do usuario2 e assim vale para o outro tambem. Como eu vou solucionar isso vcs podem me ajudar?

[20] Comentário enviado por TSM em 03/08/2007 - 20:51h

Muito bom, um dos mais completos sobre o assunto.
Parabéns.

t+

[21] Comentário enviado por gabrielvivian em 12/09/2007 - 16:31h

Quando dei o comando find / -name mysql | grep lib
apareceu o seguinte

/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib/mysql
/usr/lib/perl5/site_perl/5.8.4/i486-linux/DBD/mysql
/usr/lib/perl5/site_perl/5.8.4/i486-linux/auto/DBD/mysql

qual diretorio devo usar?
abraco t+

[22] Comentário enviado por freehand em 13/09/2007 - 13:00h

gabrielvivian use o /usr/lib/mysql

Espero que ajude....

[23] Comentário enviado por gabrielvivian em 13/09/2007 - 13:18h

Opa
valeu,
usei esse mesmo e deu certo
obrigado

[24] Comentário enviado por seniDEac em 24/11/2007 - 19:35h

?comentario= seguindo o mesmo problema do FREEHAND, eu sequer acho o "--with-libraries=/usr/lib/mysql"

nãotem nada que bata com "include" + "mysql" na minha máquina, mas o MySQL está 100$ fubcionando na versão 5.0

agradeço qualquer ajuda

[]s Sena

[25] Comentário enviado por fernando_penetta em 18/01/2008 - 17:29h

Olá amigo segui passo a passo o artigo postado. A instalação não deu nenhum erro, porém quando coloco ftp.localhost pede usuário e senha, coloco o usuario cadastrado na tabela ftpusers e retorna um erro 530 login incorrect. O que faço? Obrigado.. meu e-mail é [email protected]

[26] Comentário enviado por raihom em 24/04/2008 - 12:14h

OLA PESSOAL CONFIGUREI O PROFTPD

MAS SO NA HORA DE LOGAR ESTA DANDO O SEGINTE ERRO

PRECISO DE UM HELP

421 Service not available

favor enviar algo..para o email [email protected]

[27] Comentário enviado por zete em 28/05/2008 - 22:43h

EU INSTALEI TUDO E CONFERI , MAS NA HORA DE EXECUTAR O PROFTPD DA ESTE ERRO :


Fatal: unknown configuration directive 'SQLAuthTypes' on line 33 of '/etc/proftpd.conf'

POR FAVOR ALGUEM PODE ME AJUDAR ?

[28] Comentário enviado por petslack em 29/08/2008 - 22:59h

raihom,
não sei se vc ainda num sanou o seu problema com o erro 421.
mas vai ai uma dica...

tive o mesmo problema e fui dar uma olhada nos logs, que na minha configuração estava no arquivo "/var/log/proftpd.mysql"...se não for o seu caso então procure no arquivo de configuração do proftpd onde está o tal log do MySQL (SQLLogFile)...

Veja o erro que está dando lá...provalvelmente vai ser igual ao meu:

Aug 28 23:53:06 mod_sql/4.2.2[32179]: name: 'default'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: user: 'proftpd'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: host: 'localhost'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: db: 'proftpd_admin'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: port: '3306'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: ttl: '0'
Aug 28 23:53:06 mod_sql/4.2.2[32179]: exiting mysql cmd_defineconnection
Aug 28 23:53:06 mod_sql/4.2.2[32179]: entering mysql cmd_open
Aug 28 23:53:07 mod_sql/4.2.2[32179]: exiting mysql cmd_open
Aug 28 23:53:07 mod_sql/4.2.2[32179]: unrecoverable backend error
Aug 28 23:53:07 mod_sql/4.2.2[32179]: error: '1045'
Aug 28 23:53:07 mod_sql/4.2.2[32179]: message: 'Access denied for user: '[email protected]' (Using password: YES)'

Então é só mudar os parametros do usuário da database, no meu caso que criei a database sem senha:
No proftpd.conf
"
SQLConnectInfo [email protected] root
"

então é só ir pra galera!!!!

[29] Comentário enviado por letwu em 04/03/2009 - 14:29h

Prezados,

Estou utilizando o Slackware 12.2 e tentei seguir o passo a passo. Estou utilizando o Mysql 5 (versão mysql-5.0.67-i486-1) e baixei a versão 1.3.2 do proftpd. Ao dar o "./configure", o arquivo roda sem nenhum problema, porém ao dar "make", ocorre os seguintes erros:

Ps: "make" e "./configure" é sem aspas. As aspas foram só pra enfatizar.


[email protected]:/usr/local/src/proftpd-1.3.2# make
cd lib/ && make lib
make[1]: Entering directory `/usr/local/src/proftpd-1.3.2/lib'
make[1]: Nothing to be done for `lib'.
make[1]: Leaving directory `/usr/local/src/proftpd-1.3.2/lib'
cd src/ && make src
make[1]: Entering directory `/usr/local/src/proftpd-1.3.2/src'
make[1]: Nothing to be done for `src'.
make[1]: Leaving directory `/usr/local/src/proftpd-1.3.2/src'
cd modules/ && make static
make[1]: Entering directory `/usr/local/src/proftpd-1.3.2/modules'
gcc -DHAVE_CONFIG_H -DLINUX -I.. -I../include -Iusr/include/mysql -O2 -Wall -cmod_sql_mysql.c
mod_sql_mysql.c:138:19: error: mysql.h: No such file or directory
mod_sql_mysql.c:164: error: expected specifier-qualifier-list before 'MYSQL'
mod_sql_mysql.c: In function '_build_error':
mod_sql_mysql.c:302: warning: implicit declaration of function 'mysql_errno'
mod_sql_mysql.c:302: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:304: warning: implicit declaration of function 'mysql_error'
mod_sql_mysql.c:304: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function '_build_data':
mod_sql_mysql.c:315: error: 'MYSQL' undeclared (first use in this function)
mod_sql_mysql.c:315: error: (Each undeclared identifier is reported only once
mod_sql_mysql.c:315: error: for each function it appears in.)
mod_sql_mysql.c:315: error: 'mysql' undeclared (first use in this function)
mod_sql_mysql.c:316: error: 'MYSQL_RES' undeclared (first use in this function)
mod_sql_mysql.c:316: error: 'result' undeclared (first use in this function)
mod_sql_mysql.c:317: error: 'MYSQL_ROW' undeclared (first use in this function)
mod_sql_mysql.c:317: error: expected ';' before 'row'
mod_sql_mysql.c:326: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:332: warning: implicit declaration of function 'mysql_store_result'
mod_sql_mysql.c:338: warning: implicit declaration of function 'mysql_num_rows'
mod_sql_mysql.c:339: warning: implicit declaration of function 'mysql_num_fields'
mod_sql_mysql.c:344: error: 'row' undeclared (first use in this function)
mod_sql_mysql.c:344: warning: implicit declaration of function 'mysql_fetch_row'
mod_sql_mysql.c:354: warning: implicit declaration of function 'mysql_free_result'
mod_sql_mysql.c: In function 'cmd_open':
mod_sql_mysql.c:407: warning: implicit declaration of function 'mysql_ping'
mod_sql_mysql.c:407: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:419: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:419: warning: implicit declaration of function 'mysql_init'
mod_sql_mysql.c:421: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:432: warning: implicit declaration of function 'mysql_options'
mod_sql_mysql.c:432: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:432: error: 'MYSQL_READ_DEFAULT_GROUP' undeclared (first use in this function)
mod_sql_mysql.c:434: warning: implicit declaration of function 'mysql_real_connect'
mod_sql_mysql.c:434: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:436: error: 'CLIENT_INTERACTIVE' undeclared (first use in this function)
mod_sql_mysql.c: In function 'cmd_close':
mod_sql_mysql.c:571: warning: implicit declaration of function 'mysql_close'
mod_sql_mysql.c:571: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:572: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function 'cmd_select':
mod_sql_mysql.c:885: warning: implicit declaration of function 'mysql_real_query'
mod_sql_mysql.c:885: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function 'cmd_insert':
mod_sql_mysql.c:998: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function 'cmd_update':
mod_sql_mysql.c:1096: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function 'cmd_query':
mod_sql_mysql.c:1211: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c:1226: warning: implicit declaration of function 'mysql_field_count'
mod_sql_mysql.c:1226: error: 'db_conn_t' has no member named 'mysql'
mod_sql_mysql.c: In function 'cmd_escapestring':
mod_sql_mysql.c:1314: warning: implicit declaration of function 'mysql_escape_string'
mod_sql_mysql.c: In function 'cmd_checkauth':
mod_sql_mysql.c:1380: warning: implicit declaration of function 'make_scrambled_password'
make[1]: *** [mod_sql_mysql.o] Error 1
make[1]: Leaving directory `/usr/local/src/proftpd-1.3.2/modules'
make: *** [modules] Error 2

O interessante foi que eu procurei arquivo por arquivo e TODOS eles (que aparecem nos erros) existem, como por ex o primeiro que está dentro de :

/usr/include/mysql/mysql.h


Alguém tem idéia do que possa ser?

Obrigado.

[30] Comentário enviado por letwu em 05/03/2009 - 14:37h

O erro acima eu consegui resolver desinstalando o MySQL que vêm default no Slackware 12.2 e instalando "na mão", passando os seguintes parâmetros:

Depois de descompactado o pacote:

#> groupadd mysql
#> useradd -g mysql mysql
#> ./configure --prefix=/usr/local/mysql --with-unix-socket-path=/usr/local/mysql/mysql.sock
#> make
#> make install
#> cp support-files/my-medium.cnf /etc/my.cnf
#> cd /usr/local/mysql
#> bin/mysql_install_db --user=mysql
#> chown -R root .
#> chown -R mysql var
#> chgrp -R mysql .
#> bin/mysqld_safe --user=mysql &

Porém ao rodar o comando ./configure --with-modules=mod_sql:mod_sql_mysql \ --with-libraries=/usr/lib/mysql \ --with-includes=/usr/include/mysql (alterando os caminhos de acordo com os meus diretórios de instalação) , ele não encontra o "mysql.c" depois de ter compilado por vários minutos.

O engraçado é que em vários outros servidores com o MySQL rodando e em funcionamento, não se encontra este mesmo arquivo.

Alguém tem alguma idéia?



Contribuir com comentário