ProFTPD com autenticação via MySQL
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.
Parte 2: Criando a tabela de usuários no MySQL
Agora que já temos o ProFTPD instalado com os
módulos corretos, precisamos criar uma database e uma
tabela onde serão guardados os dados dos usuários do FTP.
Primeiro chame o MySQL:
# mysqld_safe &
(no Slackware)
Agora crie uma database:
# mysqladmin create ftp -u root -p
Logando-se ao MySQL:
# mysql -u root -p
Agora vamos criar as tabelas. Primeiramente temos que pensar no que precisaremos para cadastrar um usuário. Acho que nome, login, senha, UID, GID, shell e diretório são suficientes. É bom colocar um campo mostrando se o usuário é ativo ou não, pois assim você poderá desativar determinados usuários temporariamente apenas modificando o conteúdo desse campo.
Uma vez logado e supondo que o nome da database criada seja "ftp", digite:
mysql> use ftp
Database changed
Criando a tabela:
mysql> CREATE TABLE ftpusers (
-> nome varchar(255) NOT NULL DEFAULT 'fulano',
-> login varchar(20) NOT NULL UNIQUE,
-> senha varchar(20) NOT NULL,
-> uid int(10) UNIQUE AUTO_INCREMENT,
-> gid int(10),
-> ativo char(1) NOT NULL DEFAULT 's',
-> dir varchar(255) NOT NULL,
-> shell varchar(255) NOT NULL,
-> email varchar(255));
Query OK, 0 rows affected (0.00 sec)
Com a tabela criada, precisamos criar um usuário para que o ProFTPD possa acessar a database "ftp", que foi a que criamos e dar a ele todos os privilégios de acesso a essa database:
mysql> GRANT ALL PRIVILEGES ON ftp.* to usuario@localhost IDENTIFIED BY 'ftpsenha';
Query OK, 0 rows affected (0.03 sec)
Assim o usuário "usuario", que tem como senha "ftpsenha", terá todos os privilégios sobre a database "ftp".
Entenderam? É só trocar "usuario" e "ftpsenha" pelo nome e senha que deseja.
Em seguida mandamos o MySQL atualizar as permissões:
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
Agora vamos inserir um usuário para usarmos como teste:
mysql> INSERT INTO ftpusers VALUES ('nome de teste', 'teste', 'casa', 8099, 8099, 's', '/home/teste', '/bin/bash', 'teste@mail.com');
O comando acima mandou inserir na tabela "ftpusers" os valores: 'nome de teste', 'userteste', 'senhateste', 9000, 8099, 's', '/home/teste', '/bin/bash', 'teste@mail.com'.
Para verificar os usuários cadastrados é só digitar:
mysql> SELECT * FROM ftpusers;
Caso queira em ordem alfabética (usando "login" como referência):
mysql> SELECT * FROM ftpusers ORDER BY login;
Agora já podemos sair do MySQL:
mysql> quit
Bye
Primeiro chame o MySQL:
# mysqld_safe &
(no Slackware)
Agora crie uma database:
# mysqladmin create ftp -u root -p
Logando-se ao MySQL:
# mysql -u root -p
Agora vamos criar as tabelas. Primeiramente temos que pensar no que precisaremos para cadastrar um usuário. Acho que nome, login, senha, UID, GID, shell e diretório são suficientes. É bom colocar um campo mostrando se o usuário é ativo ou não, pois assim você poderá desativar determinados usuários temporariamente apenas modificando o conteúdo desse campo.
Uma vez logado e supondo que o nome da database criada seja "ftp", digite:
mysql> use ftp
Database changed
Criando a tabela:
mysql> CREATE TABLE ftpusers (
-> nome varchar(255) NOT NULL DEFAULT 'fulano',
-> login varchar(20) NOT NULL UNIQUE,
-> senha varchar(20) NOT NULL,
-> uid int(10) UNIQUE AUTO_INCREMENT,
-> gid int(10),
-> ativo char(1) NOT NULL DEFAULT 's',
-> dir varchar(255) NOT NULL,
-> shell varchar(255) NOT NULL,
-> email varchar(255));
Query OK, 0 rows affected (0.00 sec)
- O comando: "CREATE TABLE ftpusers (" está dizendo ao MySQL para iniciar a criação de uma tabela chamada "ftpusers".
- "nome varchar(255) NOT NULL DEFAULT 'fulano'" significa que a variável "nome" poderá ter até 255 caracteres e "fulano" como padrão.
- Os outros campos seguem o mesmo esquema.
Com a tabela criada, precisamos criar um usuário para que o ProFTPD possa acessar a database "ftp", que foi a que criamos e dar a ele todos os privilégios de acesso a essa database:
mysql> GRANT ALL PRIVILEGES ON ftp.* to usuario@localhost IDENTIFIED BY 'ftpsenha';
Query OK, 0 rows affected (0.03 sec)
Assim o usuário "usuario", que tem como senha "ftpsenha", terá todos os privilégios sobre a database "ftp".
Entenderam? É só trocar "usuario" e "ftpsenha" pelo nome e senha que deseja.
Em seguida mandamos o MySQL atualizar as permissões:
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
Agora vamos inserir um usuário para usarmos como teste:
mysql> INSERT INTO ftpusers VALUES ('nome de teste', 'teste', 'casa', 8099, 8099, 's', '/home/teste', '/bin/bash', 'teste@mail.com');
O comando acima mandou inserir na tabela "ftpusers" os valores: 'nome de teste', 'userteste', 'senhateste', 9000, 8099, 's', '/home/teste', '/bin/bash', 'teste@mail.com'.
Para verificar os usuários cadastrados é só digitar:
mysql> SELECT * FROM ftpusers;
Caso queira em ordem alfabética (usando "login" como referência):
mysql> SELECT * FROM ftpusers ORDER BY login;
Agora já podemos sair do MySQL:
mysql> quit
Bye
RootLogin on
Espero que ajude....
Ótimo artigo n0z3y.