Hospedagem Virtual · 4 min read · Feb 10, 2026

Hospedagem Virtual Com vsftpd E MySQL No Debian Lenny

Hospedagem Virtual Com vsftpd E MySQL No Debian Lenny

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

Vsftpd é um dos servidores FTP mais seguros e rápidos para Linux. Normalmente, o vsftpd é configurado para trabalhar com usuários do sistema. Este documento descreve como instalar um servidor vsftpd 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.

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 Lenny (Debian 5.0). Você já deve ter configurado um sistema básico Debian Lenny, conforme descrito nos primeiros sete capítulos deste tutorial: O Servidor Perfeito - Debian Lenny (Debian 5.0) [ISPConfig 2]

Este guia é destinado como 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 vsftpd, MySQL E phpMyAdmin

Vsftpd não tem suporte MySQL embutido, portanto, devemos usar o PAM para autenticar contra o banco de dados MySQL. Então, instalamos libpam-mysql além do vsftpd, MySQL e phpMyAdmin:

aptitude install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin

Você será questionado sobre as seguintes perguntas:

Nova senha para o usuário “root” do MySQL: <– sua senhadobanco
Repita a senha para o usuário “root” do MySQL: <– sua senhadobanco
Servidor web para reconfigurar automaticamente: <– apache2

3 Criar O Banco De Dados MySQL Para vsftpd

Agora criamos um banco de dados chamado vsftpd e um usuário MySQL chamado vsftpd que o daemon vsftpd usará mais tarde para se conectar ao banco de dados vsftpd:

mysql -u root -p
CREATE DATABASE vsftpd;  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';  
FLUSH PRIVILEGES;

Substitua a string ftpdpass pela senha que você deseja usar para o usuário MySQL vsftpd. Ainda no shell do MySQL, criamos a tabela do banco de dados que precisamos (sim, há apenas uma tabela!):

USE vsftpd;
CREATE TABLE `accounts` (  
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
`username` VARCHAR( 30 ) NOT NULL ,  
`pass` VARCHAR( 50 ) NOT NULL ,  
UNIQUE (  
`username`  
)  
) 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 vsftpd. Então você pode dar uma olhada no banco de dados. Mais tarde, você pode usar o phpMyAdmin para administrar seu servidor vsftpd.

4 Configurar vsftpd

Primeiro, criamos um usuário não privilegiado chamado vsftpd (com o diretório inicial /home/vsftpd) pertencente ao grupo nogroup. Executaremos o vsftpd sob este usuário, e os diretórios FTP de nossos usuários virtuais estarão no diretório /home/vsftpd (por exemplo, /home/vsftpd/user1, /home/vsftpd/user2, etc.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Em seguida, fazemos um backup do arquivo original /etc/vsftpd.conf e criamos o nosso:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig  
cat /dev/null > /etc/vsftpd.conf  
vi /etc/vsftpd.conf

O arquivo deve ter o seguinte conteúdo:

| listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |

As opções de configuração são explicadas em http://vsftpd.beasts.org/vsftpd_conf.html. As opções importantes para nossa configuração virtual são chroot_local_user, guest_enable, guest_username, user_sub_token, local_root e virtual_use_local_privs.

Com a opção user_config_dir, você pode especificar um diretório para arquivos de configuração por usuário que substituem partes das configurações globais. Isso é totalmente opcional e depende de você se deseja usar esse recurso. No entanto, devemos criar esse diretório agora:

mkdir /etc/vsftpd_user_conf

Agora devemos configurar o PAM para que ele use o banco de dados MySQL para autenticar nossos usuários FTP virtuais em vez de /etc/passwd e /etc/shadow. A configuração do PAM para o vsftpd está em /etc/pam.d/vsftpd. Fazemos um backup do arquivo original e criamos um novo assim:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig  
cat /dev/null > /etc/pam.d/vsftpd  
vi /etc/pam.d/vsftpd

| auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |

Por favor, certifique-se de substituir a senha do MySQL pela sua própria!

Depois, reiniciamos o vsftpd:

/etc/init.d/vsftpd restart
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.