Hospedagem Virtual · 4 min read · Dec 09, 2025
Hospedagem Virtual Com Proftpd E MySQL (Incl. Quota) No Debian Etch
Hospedagem Virtual Com Proftpd E MySQL (Incl. Quota) No Debian Etch
Versão 1.0
Autor: Falko Timme
Este documento descreve como instalar um servidor Proftpd 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 com essa configuração.
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 Debian Etch (Debian 4.0). Você já deve ter configurado um sistema básico Debian Etch, conforme descrito nos primeiros seis capítulos deste tutorial: https://www.howtoforge.com/perfect_setup_debian_etch
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 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 for apropriado.
2 Instalar MySQL E phpMyAdmin
Tudo isso pode ser instalado com um único comando:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2Crie uma senha para o usuário root do MySQL (substitua yourrootsqlpassword pela senha que você deseja usar):
mysqladmin -u root password yourrootsqlpasswordEntão verifique com
netstat -tap | grep mysqlem quais endereços o MySQL está escutando. Se a saída parecer com isto:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqldo que significa que o MySQL está escutando apenas em localhost.localdomain, então você está seguro com a senha que definiu antes. Mas se a saída parecer com isto:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqldvocê deve definir uma senha MySQL para seu nome de host também, porque caso contrário, qualquer um pode acessar seu banco de dados e modificar dados:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword3 Instalar Proftpd Com Suporte A MySQL
Para Debian, há um pacote proftpd-mysql pré-configurado disponível. Instale-o como um daemon autônomo assim:
apt-get install proftpd-mysqlVocê será perguntado a seguinte questão:
Executar proftpd a partir do inetd ou autônomo? <– autônomo
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 proftpd" -g ftpgroup ftpuser4 Criar O Banco De Dados MySQL Para Proftpd
Agora criamos um banco de dados chamado ftp e um usuário MySQL chamado proftpd que o daemon proftpd usará mais tarde para se conectar ao banco de dados ftp:
mysql -u root -pcreate database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;Substitua a string password pela senha que você deseja usar para o usuário MySQL proftpd. Ainda no shell MySQL, criamos as tabelas do banco de dados que precisamos:
USE ftp;CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='Tabela de grupo ProFTP';CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='Tabela de usuário ProFTP';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ê pode usar o endereço IP em vez de server1.example.com) em um navegador e fazer login como proftpd. Então você pode dar uma olhada no banco de dados. Mais tarde, você pode usar o phpMyAdmin para gerenciar seu servidor Proftpd.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.