Hospedagem Virtual · 3 min read · Dec 16, 2025

Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda)

Este documento descreve como instalar um servidor PureFTPd que utiliza usuários virtuais de um banco de dados MySQL em vez de usuários reais do sistema. Isso é muito mais eficiente e permite ter milhares de usuários ftp em uma única máquina. Além disso, mostrarei o uso de quota e limites de largura de banda de upload/download com esta configuração. As senhas serão armazenadas criptografadas como strings MD5 no banco de dados.

Para a administração do banco de dados MySQL, você pode usar ferramentas baseadas na web como phpMyAdmin, que também será instalado neste tutorial. O phpMyAdmin é uma interface gráfica confortável, o que significa que você não precisa se preocupar com a linha de comando.

Este tutorial é baseado no Debian Sarge (Debian 3.1). Você já deve ter configurado um sistema Debian básico, conforme descrito aqui: https://www.howtoforge.com/perfect_setup_debian_sarge e https://www.howtoforge.com/perfect_setup_debian_sarge_p2. Deve se aplicar a outras distribuições baseadas em Debian, como Ubuntu, Knoppix, etc., sem modificações. Em outras distribuições como SuSE, Fedora, Mandriva, etc., apenas a instalação do PureFTPd é diferente; a configuração do PureFTPd deve se aplicar a essas distribuições também.

Este tutorial é destinado a ser um guia prático; não cobre os fundamentos teóricos. Eles são tratados em muitos outros documentos na web.

Este documento vem sem garantia de qualquer tipo! Quero dizer que esta não é a única maneira de configurar tal sistema. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!

1 Instalar MySQL E phpMyAdmin

Tudo isso pode ser instalado com um único comando:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

Você será perguntado algumas questões:

Habilitar suExec? <– Sim
Configurando mysql-server (Dicas de Instalação) <– OK
Qual servidor web você gostaria de reconfigurar automaticamente? <– apache, apache2
Você quer que eu reinicie o apache agora? <– Sim

Crie uma senha para o usuário MySQL root (substitua yourrootsqlpassword pela senha que você deseja usar):

mysqladmin -u root password yourrootsqlpassword

2 Instalar PureFTPd Com Suporte A MySQL

Para Debian, existe um pacote pré-configurado pure-ftpd-mysql disponível. Instale-o como um daemon independente assim:

apt-get install pure-ftpd-mysql

Executar pure-ftpd a partir do inetd ou como um servidor independente? <– independente
Você quer que o pure-ftpwho seja instalado com setuid root? <– Não

Então, criamos um grupo ftp (“ ftpgroup “) e um usuário (“ ftpuser “) ao qual todos os nossos usuários virtuais serão mapeados. Substitua o grupo e o ID do usuário 2001 por um número que esteja livre em seu sistema:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “usuário pureftpd” -g ftpgroup ftpuser

3 Criar O Banco De Dados MySQL Para PureFTPd

Agora criamos um banco de dados chamado pureftpd e um usuário MySQL chamado pureftpd, que o daemon PureFTPd usará mais tarde para se conectar ao banco de dados pureftpd:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.
TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd. TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;

Substitua a string ftpdpass pela senha que você deseja usar para o usuário MySQL pureftpd. Ainda no shell MySQL, criamos a tabela do banco de dados que precisamos (sim, há apenas uma tabela!):

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘’,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘’,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘
‘,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;*

quit;

Como você pode ter notado, com o comando quit; saímos do shell MySQL e voltamos ao shell Linux.

A propósito, (estou sugerindo que o nome do host do seu sistema de servidor ftp é server1.example.com) você pode acessar phpMyAdmin através de http://server1.example.com/phpmyadmin/ (você também pode usar o endereço IP em vez de server1.example.com) em um navegador e fazer login como pureftpd. Então você pode dar uma olhada no banco de dados. Mais tarde, você pode usar phpMyAdmin para administrar seu servidor PureFTPd.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.