Tema LinuxBSD Ver. 0.2 lnx
 http://www.linuxbsd.com.br 

  


  

  

Proftpd Trabalhando com MySQL

Enviado por DarkWarrior em Qua, 2007-01-17 14:22.

Autor: Jean Carlos Oliveira Guandalini
eMail: darkwarrior[NOSPAM]linuxbsd.com.br
Data: 2003

Olá Pessoal, já expliquei para vocês uma vez como instalar o Proftpd no modo tradicional, hoje passarei como fazer para usar ele autenticando os usuários num banco de dados sem a necessidade de criar o usuário no sistema. Isso é muito interessante pois esse usuário não precisará de uma shell válida, nem terá sua conta válida pelo servidor, servindo somente para o Proftpd. Então vamos lá.
Primeiro baixe a versão mais recente do Proftpd no site http://www.proftpd.org.
Como já fiz um passo a passo sobre a instalação do Proftpd, as partes básicas de compilação e instalação passarei meio rápido. :-)
Descompacte o arquivo que você baixou, que no meu caso foi o proftpd-1.2.8.tar.gz
[root@nightwish #] tar zxvf proftpd-1.2.8.tar.gz
Entre na pasta criada e rode os seguintes comandos:
[root@nightwish #] ./configure -sysconfdir=/etc -localstatedir=/var -with-modules=mod_sql:mod_sql_mysql
--with-modules=mod_sql:mod_sql_mysql - Essa parte é nova para gente, é ela que irá habilitar os comandos do MySQL no Proftpd.
[root@nightwish #] make && make install
Certo, se tudo correu perfeito, seu Proftpd com suporte a MySQL esta instalado agora precisamos configurar ele corretamente para que funcione o serviço.
Crie o Usuário e o Grupo Proftpd:
[root@nightwish #] groupadd proftpd
[root@nightwish #] useradd -g proftpd proftpd
Edite seu arquivo proftpd.conf:
[root@nightwish #] vi /etc/proftpd.conf

# Configuração Básica do Servidor
ServerName "DarkWarrior FTP Server"
ServerType standalone
DefaultServer on
DefaultRoot ~
RequireValidShell off
ServerIdent on NightWish
TransferLog /var/log/xferlog
SystemLog /var/log/proftpd.log
Port 21
Umask 022
MaxInstances 30
# Usuário e grupo utilizado pelo proftpd
User proftpd
Group proftpd
# Permitir sobrescrever arquivo

AllowOverwrite on

# Grupos que terão acesso ao FTP

Order deny,allow
AllowGroup webmaster
# Aqui você pode adicionar quantos grupos quiser ou nem usar essa parte.

# ------------------------------------------------------------ #
# Configuração do MySQL ###################
# DB@host Usuário Senha
SQLConnectInfo proftpdsenha proftpd
SQLAuthenticate users* groups* usersetfast groupsetfast
SQLAuthTypes Crypt Backend
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupid gid members
SQLLog PASS logincount
# ------------------------------------------------------------ #
Agora precisamos criar o banco de dados e as tabelas que serão usadas.
Logue em seu MySQL como root e faça como a seguir:
[root@nightwish #] mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 9.12.12-der
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database proftpd;
Query OK, 1 row affected (0.03 sec)
mysql> use proftpd;
Database changed
mysql> CREATE TABLE users (
-> userid VARCHAR(30) NOT NULL UNIQUE,
-> passwd VARCHAR(30) NOT NULL,
-> uid INT UNIQUE AUTO_INCREMENT,
-> gid INT, homedir VARCHAR(255),
-> shell VARCHAR(255)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE groups (
-> groupid varchar(10) NOT NULL default '',
-> gid int(10) unsigned NOT NULL auto_increment,
-> members varchar(255) NOT NULL default '',
-> PRIMARY KEY (gid)
-> ) ;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO users (uid) VALUES (9999);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO groups (gid) VALUES (9999);
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM users WHERE uid=9999;
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM groups WHERE gid=9999;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on proftpd.* to proftpd@localhost identified by 'proftpdsenha';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
Com isso configuramos o proftpd.conf e criamos todas tabelas necessárias para rodar o server.
Agora vamos criar e setar as permissões para os arquivos de log.
[root@nightwish #] touch /var/log/proftpd.log
[root@nightwish #] touch /var/log/xferlog
[root@nightwish #] chown proftpd: /var/log/proftpd.log
[root@nightwish #] chown proftpd: /var/log/xferlog
Agora já podemos rodar o servidor:
[root@nightwish #] /usr/local/sbin/proftpd
Veja se o serviço está rodando:
[root@nightwish #] ps aux | grep proftpd
proftpd 6426 0.0 0.5 2748 1328 ? S 00:23 0:00 [proftpd]
Se retornar algo assim está tudo rodando certinho. Caso não rode revise as configurações.
Bom, está rodando e agora como criar usuários e setar diretórios e pastas????
Tudo deve ser feito no MySQL. Teremos que criar os grupos ou um grupo e jogar os usuários também no MySQL. Acompanhe:
Logue como root ou como proftpd:
[root@nightwish #] mysql -u proftpd -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 3.23.56-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use proftpd;
Database changed
mysql> INSERT INTO groups(groupid,gid,members) VALUES ('webmaster','100001','');
Query OK, 1 row affected (0.00 sec)
# Acabei de criar o grupo webmaster com o id 100001, procure usar ids altos para não haver conflito com os ID's do sistema.
mysql> INSERT INTO users(userid,passwd,uid,gid,homedir) VALUES ('jean', PASSWORD('123456'),'100001','100001','/var/www/htdocs');
Query OK, 1 row affected (0.00 sec)
# Aqui criei o usuário jean com a senha 123456 com o id 100001(ids altos pelo mesmo motivo do grupo), e com diretório inicial /var/www/htdocs
mysql>quit
Bye
Agora precisamos setar as permissões no diretório onde o usuário vai acessar.
[root@nightwish #] chown -R 100001.100001 /var/www/htdocs
Colocamos aqueles números pois é assim que é identificado o usuário quando conecta por isso colocamos id's altos. Cada usuário tem seu id.gid assim, ele terá que ter essa permissão para pode mandar arquivos.
Agora você já pode acessar seu servidor para utilizar o ftp com o recurso do MySQL.
Gostaria de lembrar a todos que esse tutorial foi feito explicando a configuração bem básica desse recurso, sendo que ele pode ser utilizado mais a fundo com várias configurações e ferramentas de administração que facilitam o seu dia-a-dia. Em breve farei um artigo de como implementar mais recursos ao proftp rodando com o MySQL.
Quero agradecer a Deus pela minha pequena sabedoria.
E espero que esse tutorial ajude muita gente.

»