Hospedagem Virtual · 7 min read · Nov 26, 2025
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Fedora 20
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Fedora 20
Versão 1.0
Autor: Falko Timme, atualizado por Srijan Kishore
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 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 tutorial é baseado no Fedora 20. Você já deve ter configurado um sistema básico do Fedora 20.
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 apropriado.
2 Instalar MySQL E phpMyAdmin
Tudo isso pode ser instalado com um único comando:
yum install mysql mysql-server phpMyAdmin httpdAgora configuramos o phpMyAdmin. Mudamos a configuração do Apache para que o phpMyAdmin permita conexões não apenas de localhost (comentando tudo na seção
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 |
Em seguida, criamos os links de inicialização do sistema para MySQL e Apache (para que ambos iniciem automaticamente sempre que o sistema for inicializado) e iniciamos ambos os serviços:
systemctl enable mysqld.service
systemctl start mysqld.serviceSe você receber um erro como este:
[root@server1 ~]# systemctl enable mysqld.service
Failed to issue method call: No such file or directory
[root@server1 ~]#Isso acontece devido a esse bug, então prossiga da seguinte forma:
[root@server1 ~]# ln -s '/usr/lib/systemd/system/mysqld.service' '/etc/systemd/system/multi-user.target.wants/mysqld.service'
[root@server1 ~]# ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'systemctl start mysqld.service
systemctl start mariadb.servicesystemctl enable httpd.service
systemctl start httpd.serviceCrie 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 SERVIDORES MySQL EM USO EM PRODUÇÃO! POR FAVOR, LEIA CADA ETAPA COM CUIDADO!
Para fazer login no MySQL e protegê-lo, precisaremos da senha atual para o usuário root. Se você acabou de instalar o MySQL e ainda não definiu a senha do root, a senha estará em branco, então você deve apenas pressionar enter aqui.
Digite a senha atual para root (pressione enter para nenhum): <– ENTER
OK, senha usada com sucesso, prosseguindo…
Definir a senha do root garante que ninguém possa fazer login no usuário root do MySQL sem a devida autorização.
Definir senha do root? [Y/n] <– ENTER
Nova senha: <– yourrootsqlpassword
Reinsira a nova senha: <– yourrootsqlpassword
Senha atualizada com sucesso!
Recarregando tabelas de privilégios..
… 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 testes e para tornar a instalação um pouco mais suave. Você deve removê-los antes de entrar em um ambiente de produção.
Remover usuários anônimos? [Y/n] <– ENTER
… Sucesso!
Normalmente, o root deve ser permitido apenas conectar-se de ‘localhost’. Isso garante que alguém não possa adivinhar a senha do root pela 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 testes e deve ser removido antes de entrar em 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 privilégios no banco de dados de teste…
… Sucesso!
Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora tenham efeito imediato.
Recarregar tabelas de privilégios 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-ftpdEm 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 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 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)
) ENGINE=MyISAM;quit;Como você pode ter notado, com o comando quit; saímos do shell do MySQL e voltamos 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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.