Configuração FTP · 2 min read · Feb 09, 2026

Hospedagem Virtual Com vsftpd E MySQL No Debian Etch - Página 2

4 Configurar vsftpd

Primeiro, criamos um usuário não privilegiado chamado vsftpd (com o diretório home /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 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 popular o banco de dados, você pode usar o shell do 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 home 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 WS_FTP ou SmartFTP se você estiver em um sistema Windows ou gFTP em um desktop Linux) e tente se conectar. Como nome do host, você usa 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 home 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.