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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.