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.
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
[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:
[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).
[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.
[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):
[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
[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...
[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?
[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 é penetta@tecnovideo.com.br
[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: 'proftpd@localhost' (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 proftpd_admin@localhost root
"
[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.
root@ftp:/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 :
[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.