Hospedagem Virtual · 5 min read · Feb 14, 2026

Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quotas E Largura De Banda) No Fedora 13

Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quotas E Largura De Banda) No Fedora 13

Versão 1.0
Autor: Falko Timme
Siga-me no Twitter

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 quotas 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 o 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 Fedora 13. Você já deve ter configurado um sistema básico do Fedora 13, por exemplo, conforme descrito nos primeiros cinco capítulos deste tutorial: https://www.howtoforge.com/perfect-server-fedora-13-x86_64-ispconfig-2

Este guia é 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 este não é o único modo 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 for apropriado.

2 Instalar MySQL E phpMyAdmin

Tudo isso pode ser instalado com um único comando:

yum install mysql mysql-server phpMyAdmin httpd

Depois, devemos editar o arquivo /etc/httpd/conf.d/phpMyAdmin.conf para tornar o phpMyAdmin acessível de todos os endereços IP. Por padrão, ele é acessível apenas de 127.0.0.1. Comente esta seção:

#  
#   Order Deny,Allow  
#   Deny from All  
#   Allow from 127.0.0.1  
#   Allow from ::1  
#

para que o arquivo fique assim:

vi /etc/httpd/conf.d/phpMyAdmin.conf

| # phpMyAdmin - Navegador MySQL baseado na web escrito em php # # Permite apenas localhost por padrão # # Mas permitir phpMyAdmin a qualquer um além de localhost deve ser considerado # perigoso, a menos que devidamente protegido por SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin # # Order Deny,Allow # Deny from All # Allow from 127.0.0.1 # Allow from ::1 # Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 # Esses diretórios não requerem acesso via HTTP - retirado do tarball original # do phpMyAdmin # Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None # Esta configuração impede que o mod_security nos diretórios do phpMyAdmin # filtre SQL etc. Isso pode quebrar sua implementação do mod_security. # # # # SecRuleInheritance Off # # |

Então, criamos os links de inicialização do sistema para MySQL e Apache (para que ambos iniciem automaticamente sempre que o sistema for iniciado) e iniciamos ambos os serviços:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start
chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

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

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

NOTA: EXECUTAR TODAS AS PARTES DESTE SCRIPT É RECOMENDADO PARA TODOS OS MySQL
SERVIDORES EM USO PRODUÇÃO!  POR FAVOR, LEIA CADA PASSO COM CUIDADO!

Para fazer login no MySQL para segurá-lo, precisaremos da senha atual para o usuário root.  Se você acabou de instalar o MySQL, e não definiu a senha do root ainda, a senha estará em branco, então você deve apenas pressionar enter aqui.

Digite a senha atual para root (pressione enter para nenhuma): <– ENTER
OK, senha usada com sucesso, seguindo…

Definir senha para root? [Y/n] <– ENTER
Nova senha: <– yourrootsqlpassword
Reinsira nova senha: <– yourrootsqlpassword
Senha atualizada com sucesso!
Recarregando tabelas de privilegiados..
… Sucesso!

Por padrão, uma instalação do MySQL tem um usuário anônimo, permitindo que qualquer um
faça login no MySQL sem precisar ter uma conta de usuário criada
para eles.  Isso é destinado apenas para teste, e para tornar a instalação
mais suave.  Você deve removê-los antes de mover para um
environmento de produção.

Remover usuários anônimos? [Y/n] <– ENTER
… Sucesso!

Normalmente, o root deve ser permitido apenas conectar de ’localhost’.  Isso
assegura que alguém não possa adivinhar a senha do root a partir da rede.

Desabilitar login remoto do root? [Y/n] <– ENTER
… Sucesso!

Por padrão, o MySQL vem com um banco de dados chamado ’test’ que qualquer um
pode acessar.  Isso também é destinado apenas para teste, e deve ser removido
antes de mover para um ambiente de produção.

Remover banco de dados de teste e acesso a ele? [Y/n] <– ENTER
- Removendo banco de dados de teste…
… Sucesso!
- Removendo privilegios no banco de dados de teste…
… Sucesso!

Recarregar as tabelas de privilegiados garantirá que todas as mudanças feitas
fins então entrem em vigor imediatamente.

Recarregar tabelas de privilegiados agora? [Y/n] <– ENTER
… Sucesso!

Limpando…

Tudo pronto!  Se você completou todas as etapas acima, sua instalação do MySQL
deve agora estar segura.

Obrigado por usar o MySQL!

[root@server1 ~]#

3 Instalar PureFTPd Com Suporte A MySQL

O pacote PureFTPd do Fedora suporta vários backends, como MySQL, PostgreSQL, LDAP, etc. Portanto, tudo o que precisamos fazer é instalar o pacote normal do PureFTPd:

yum install pure-ftpd

Em seguida, 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

4 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 do 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 do MySQL e estamos de volta ao shell do 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.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.