Servidor FTP · 5 min read · Jan 30, 2026
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Ubuntu 14.04LTS
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 limites de quota e upload/download com essa configuração. As senhas serão armazenadas criptografadas como strings MD5 no banco de dados. Este tutorial é baseado no Ubuntu 14.04.
Para a administração do banco de dados MySQL, você pode usar ferramentas baseadas na web como o phpMyAdmin, que também será instalado neste guia. O phpMyAdmin é uma interface gráfica confortável, o que significa que você não precisa se preocupar com a linha de comando.
Este guia é destinado a ser um manual 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 Nota Preliminar
Neste tutorial, uso o nome do host server1.example.com com o endereço IP 192.168.0.100. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado.
Certifique-se de que você está logado como root (digite
sudo supara se tornar root), porque devemos executar todos os passos deste tutorial como usuário root.
2 Instalar MySQL E phpMyAdmin
Tudo isso pode ser instalado com um único comando:
apt-get install mysql-server mysql-client phpmyadmin apache2Você será perguntado estas questões:
Nova senha para o usuário “root” do MySQL: <– sua senha de root sql
Repita a senha para o usuário “root” do MySQL: <– sua senha de root sql
Servidor web para reconfigurar automaticamente: <– apache2
Configurar banco de dados para phpmyadmin com dbconfig-common? <– Não
3 Instalar PureFTPd Com Suporte A MySQL
Para o Ubuntu 14.04, há um pacote pré-configurado pure-ftpd-mysql disponível. Instale-o assim:
apt-get install pure-ftpd-mysqlEntã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 ftpuser4 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 -pCREATE 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)
) ENGINE=MyISAM;quit;Como você pode ter notado, com o comando quit; saímos do shell MySQL e estamos de volta ao shell Linux.
A propósito, (estou assumindo que o nome do host do seu sistema de servidor ftp é server1.example.com) você pode acessar o phpMyAdmin em 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 o usuário pureftpd. Então você pode dar uma olhada no banco de dados. Mais tarde, você pode usar o phpMyAdmin para administrar seu servidor PureFTPd.
5 Configurar PureFTPd
Edite /etc/pure-ftpd/db/mysql.conf. Deve ficar assim:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
vi /etc/pure-ftpd/db/mysql.conf| MYSQLSocket /var/run/mysqld/mysqld.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 é MUITO RECOMENDADO em relação ao texto claro MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") |
Certifique-se de substituir a string ftpdpass pela senha real do usuário MySQL pureftpd na linha MYSQLPassword! Observe que usamos md5 como método MYSQLCrypt, o que significa que armazenaremos as senhas dos usuários como uma string MD5 no banco de dados, o que é muito mais seguro do que usar senhas em texto claro!
Em seguida, crie o arquivo /etc/pure-ftpd/conf/ChrootEveryone que simplesmente contém a string yes:
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryoneIsso fará com que o PureFTPd chroot cada usuário virtual em seu diretório home, para que ele não possa navegar por diretórios e arquivos fora de seu diretório home.
Crie também o arquivo /etc/pure-ftpd/conf/CreateHomeDir que novamente simplesmente contém a string yes:
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDirIsso fará com que o PureFTPd crie um diretório home do usuário quando o usuário fizer login e o diretório home ainda não existir.
Por fim, crie o arquivo /etc/pure-ftpd/conf/DontResolve que novamente simplesmente contém a string yes:
echo "yes" > /etc/pure-ftpd/conf/DontResolveIsso fará com que o PureFTPd não procure nomes de host, o que pode acelerar significativamente as conexões e reduzir o uso de largura de banda.
Depois, reiniciamos o PureFTPd:
service pure-ftpd-mysql restartReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.