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 phpmyadminVocê 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 -pCREATE 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 vsftpdEm 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.confO 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_confAgora 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 restartReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.