você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

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.



Veja a relação completa dos artigos de André Jaccon