Proftp 1.3.x com autênticação via MySQL
Colaboração: André Jaccon
Data de Publicação: 30 de Março de 2007
Neste tutorial iremos mostrar como instalar o Profptd com autênticação pelo MySQL, desta forma fica mais fácil gerênciar as contas de FTP como usuários e grupos, esta documentação foi criada recéntemente para um projeto desenvolvido no laboratório da Blue Systems Tecnologia.
1. Ambiente utilizado:
- Sistema Operacional Debian Gnu/Linux 4.0 ( Etch )
- Kernel 2.6.20
- Proftpd-1.3.1rc2
- MySQL Standard-4.1.21-pc-linux-gnu-i686-glibc23
2. MySQL
Logado como super usuário, entre com os seguintes comandos no ambiente shell padrão:
groupadd mysql useradd -g mysql mysql cd /usr/local gunzip < /path/para/mysql/mysql.tar.gz |tar -xvf - ln -s mysql-full-path mysql cd mysql scripts/mysql_install_db chown -R root . chown -R mysql data chgrp -R mysql . bin/mysqld_safe --user=mysql &
Para conferir se o MySQL foi iniciado use
ps -aef |grep mysql
3. Proftpd
Logado como super usuário, entre com os seguintes comandos no ambiente shell padrão:
tar -zxvf proftpd-1.3.1rc2.tar.gz
será criado uma pasta como proftpd-1.3.1rc2, para isso entre no diretório
cd proftpd-1.3.1rc2
depois execute
./configure \ --with-modules=mod_sql:mod_sql_mysql \ --with-includes=/usr/local/mysql/include/ \ --with-libraries=/usr/local/mysql/lib/ make make install
Por padrão o arquivo de configuração do Proftpd fica localizado em
/usr/local/etc/proftpd.conf
para ter um acesso mais rápido crie um link
simbólico para /etc/
utilizando o comando abaixo:
ln -s /usr/local/etc/proftpd.conf /etc/
4. Exemplo de arquivo proftpd.conf
ServerName "SERVER" ServerType standalone DeferWelcome off ServerIdent on "[Not Available]" MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayFirstChdir .message ListOptions "-l" DenyFilter \*.*/ Port 21 MaxInstances 30 User nobody Group nogroup Umask 022 022 DefaultRoot ~ AllowOverwrite on RequireValidShell off SQLAuthTypes Plaintext Crypt SQLAuthenticate userid SQLConnectInfo proftpd@localhost proftpd proftpd SQLUserInfo ftpusers login senha uid gid homedir shell
5. Carga nos scripts de SQL para criação de tabelas de usuários e grupos
Logado como root no shell entre com o comando abaixo:
/usr/local/mysql/bin/mysqladmin create proftpd -u root -p /usr/local/mysql/bin/mysqladmin create proftpd -u root -p/mysql -u root -p
carregue os scripts que encontram-se dentros da pasta sql com o comando source:
CREATE TABLE ftpusers ( userid VARCHAR(30) NOT NULL UNIQUE, passwd VARCHAR(80) NOT NULL, uid INTEGER UNIQUE, gid INTEGER, homedir VARCHAR(255), shell VARCHAR(255) )
É importante criar um usuário e senha para o banco de dados proftpd, para isso entre com os comando abaixo:
Crie um usuário no banco de dados MySQL com o comando:
depois garanta o acesso ao usuário proftpd com o comando:
GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , FILE , INDEX , ALTER , CREATE TEMPORARY TABLES , EXECUTE ON * . * TO 'proftpd'@'locahost' IDENTIFIED BY 'senha'
após adicionar o usuário garanta o acesso ao banco de dados proftd ao usuário proftpd com o comando:
GRANT ALL PRIVILEGES ON `proftpd` . * TO 'proftpd'@'localhost' WITH GRANT OPTION ;
depois
flush privileges;
6. Reiniciando o serviço:
killall -HUP proftpd
Pronto, o serviço de FTP com o Proftpd estará no ar e funcionando normalmente.