Servidor FTP · 5 min read · Feb 11, 2026

Hospedagem Virtual Com vsftpd E MySQL No Debian Squeeze

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 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 Debian Squeeze (Debian 6.0). Você já deve ter configurado um sistema básico Debian Squeeze.

Este guia é destinado a ser um manual 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 embutido para MySQL, 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:

apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin

Você será solicitado a responder às seguintes perguntas:

Nova senha para o usuário “root” do MySQL: <– sua senha de root do sql Repita a senha para o usuário “root” do MySQL: <– sua senha de root do sql Servidor web para reconfigurar automaticamente: <– apache2 Configurar banco de dados para phpmyadmin com dbconfig-common? <– Não

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 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 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ê 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

5 Criar O Primeiro Usuário Virtual

Para preencher o banco de dados, você pode usar o shell MySQL:

mysql -u root -p
USE vsftpd;

Agora criamos o usuário virtual testuser com a senha secret (que será armazenada criptografada usando a função PASSWORD do MySQL):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));  
quit;

o diretório inicial de testuser é /home/vsftpd/testuser; infelizmente, o vsftpd não cria esse diretório automaticamente se ele não existir. Portanto, criamos manualmente agora e o tornamos propriedade do usuário vsftpd e do grupo nogroup:

mkdir /home/vsftpd/testuser  
chown vsftpd:nogroup /home/vsftpd/testuser

Agora abra seu programa cliente FTP na sua estação de trabalho (algo como FileZilla ou FireFTP) e tente se conectar. Como nome do host, use server1.example.com (ou o endereço IP do sistema), o nome de usuário é testuser e a senha é secret.

Se você conseguir se conectar - parabéns! Se não, algo deu errado.

6 Administração do Banco de Dados

Para a maioria das pessoas, é mais fácil ter uma interface gráfica para o MySQL; portanto, você também pode usar o phpMyAdmin (neste exemplo em http://server1.example.com/phpmyadmin/) para administrar o banco de dados vsftpd.

Sempre que você criar ou modificar um usuário, certifique-se de usar a função PASSWORD do MySQL para criptografar a senha desse usuário. Além disso, ao criar um novo usuário virtual, não se esqueça de criar o diretório inicial desse usuário no shell, como mostrado no final do capítulo anterior.

7 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.