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.
O que vimos até agora foi uma configuração básica do ProFTPD.
Na verdade ele possui um grande número de funções que podem ser
de grande uso para vocês. Justamente por ser um grande número,
citarei apenas algumas destas funções aqui.
Existem funções, por exemplo, que servem para personalizar as
mensagens mostradas durante uma seção no ProFTPD.
Para mostrar uma mensagem quando um usuário se logar você usa:
AccessGrantMsg "mensagem"
Exemplo:
AccessGrantMsg "Seja bem vindo %u"
%u --> Será trocado pelo nome do usuário.
Para mostrar uma mensagem quando um usuário falhar ao
tentar se logar use:
AccessDenyMsg "mensagem"
Exemplo:
AccessDenyMsg "Acesso negado à %u ! Vá com Deus filho ..."
Para mostrar uma mensagem antes do login você usa:
DisplayConnect diretório/arquivo.msg
Exemplo:
DisplayConnect /usr/local/proftpd/connect.msg
Setando mensagem de login e logout:
DisplayLogin login.msg
DisplayQuit logout.msg
OBS: Os arquivos login.msg e logout.msg devem estar abaixo
do diretório principal do usuário.
Existem funções que usam o tempo que o usuário está conectado
para executar determinadas ações. Para desconectar um usuário
se ele ficar ocioso durante um certo tempo:
TimeoutIdle Tempo_em_segundos
Exemplo:
TimeoutIdle 180
Desconecta o usuário se ele ficar ocioso por 3 minutos.
Para desconectar alguém que não se logou com sucesso durante
um determinado tempo:
TimeoutLogin tempo_em_segundos
Exemplo:
TimeoutLogin 60
Para desconectar um usuário caso ele fique um determinado
tempo sem transferir nada:
TimeoutNoTransfer tempo_em_segundos
Exemplo:
TimeoutNoTransfer 120
Desconecta o usuário depois de 2 minutos sem transferência.
Para desconectar alguém depois de um determinado tempo:
TimeoutSession tempo_em_segundos
Exemplo:
TimeoutSession 600
Desconecta qualquer usuário logado por 10 minutos.
Uma função bastante útil é a "TransferRate". Com ela você pode
limitar a taxa de transferência do servidor. Para usá-la:
TransferRate RETR taxa_em_kbps:byteslivres
Exemplo:
TransferRate RETR 8:10
Limita a taxa de transferência para 8kbps.
taxa_em_kbps: é a taxa limite de transferência que você deseja aplicar.
bytes_livres: é a quantidade de bytes que podem ser transferidos antes do controle de taxa de transferência ser aplicado.
Outra bastante utilizada é a:
DefaultRoot diretório
Exemplo:
DefaultRoot /home/tal
Com ela você pode limitar os usuários a um determinado usuário.
Caso use:
DefaultRoot ~
você estará limitando o usuário ao seu próprio home (recomendável).
[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.