Servidor FTP · 6 min read · Feb 13, 2026
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Fedora 18
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Fedora 18
Versão 1.0
Autor: Falko Timme
Siga-me no Twitter
Este documento descreve como instalar um servidor PureFTPd que usa 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 largura de banda de upload/download com essa 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 18. Você já deve ter configurado um sistema básico Fedora 18.
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
Agora 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.service
systemctl enable httpd.service systemctl start httpd.service
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 SERVIDORES MySQL EM USO EM PRODUÇÃO! POR FAVOR, LEIA CADA ETAPA COM ATENÇÃO!
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 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 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 agora deve 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) ) ENGINE=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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.