VSFTPD + Usuários Virtuais + MySQL

Neste artigo desejo compartilhar com a comunidade uma maneira de configurar um servidor FTP com suporte aos usuários 100% virtuais, em uma base de dados MySQL a fim de facilitar a administração, backups, trocas de senhas, entre tantos outros benefícios.

[ Hits: 65.119 ]

Por: Eduardo Frazão em 02/12/2005


PAM - Pluggable Authentication Modules for Linux



Antes de iniciarmos a instalação do servidor FTP, gostaria de salientar que será necessária a instalação do PAM (Pluggable Authentication Modules for Linux), pois é através dele e de seu módulo PAM-MYSQL que será feita a intermediação da autenticação dos usuários dentro do MySQL.

É importante, para não dizer essencial, que o PAM seja instalado antes que o VSFTPD, pois no caso das bibliotecas PAM não estarem presentes, o VSFTPD não será linkado a elas.

A grande maioria das distros já vem com o PAM instalado, mas algumas, como o Slackware, que é o meu caso, não.

Todavia, instalar o PAM não exige nenhum esforço, justo que ele já vem com todos os prefixos de instalação corretos e bem organizados.

A instalação foi baseada no PAM 0.80. Acredito que futuras versões, desde que obviamente não muito distantes desta, não se tornem diferentes.

Se você não tem o PAM instalado, siga os procedimentos abaixo. Caso já tenha, instale somente o módulo do MySQL.

Baixe os pacotes Linux-PAM no endereço das referências de softwares que está na introdução. Descompacte e entre no diretório, execute:

# ./configure --enable-read-both-confs
# make
# make install


Como disse antes, não se preocupe com os prefixos. O instalador deixará tudo no seu devido lugar. Após o termino da instalação, aconselho a migrarmos o antigo modelo de 'pam.conf' para o 'pam.d'. Os arquivos de configuração ficarão mais legíveis e organizados. Siga os seguintes passos.

Dentro do diretório onde foi descompactado o PAM, execute:
# cd conf/pam_conv1
# make
# ./pam_conv1 < ../pam.conf


Este utilitário converte o PAM.CONF original para o novo modelo 'pam.d'. No diretório atual, você perceberá que ele criou um diretório com o nome de 'pam.d'. Logo:
# cp pam.d /etc -R

OK. Agora o PAM já está instalado. Por via das dúvidas, vamos carregar as novas libs, que foram instaladas dentro de /lib/security:
# /sbin/ldconfig

OK. Vamos instalar agora o módulo MySQL para PAM.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. PAM - Pluggable Authentication Modules for Linux
   3. PAM - MySQL
   4. VSFTP
   5. Considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Monitoramento de portas com netcat

Compartilhando acesso à internet com iptables

VLAN entre GNU/Linux, MikroTik e equipamentos Ubiquiti

Criando uma rede virtual com servidor de internet e estações utilizando VirtualBox

aMSN com fontes bonitas

  
Comentários
[1] Comentário enviado por gustavo_marcon em 02/12/2005 - 12:12h

Legal teu artigo, mas tenho uma dúvida semelhante:

Alguém sabe se tem como fazer a mesma coisa só que com o SQUID?
Gravar os usuários em uma base mySQL e fazer o Squid consultar lá na hora de autenticar?

Obrigado!

[2] Comentário enviado por EduFrazao em 02/12/2005 - 17:20h

Tem sim amigo:
http://freshmeat.net/projects/mysql_auth/
Esse é um Basic Auth Helper. Ele é facilmente acoplado ao SQUID e pode validar suas consultas no MySQL...
O SQUID tb tem um Helper embutido, pra fazer autenticação via PAM, ou seja. Mais um metodo pra autenticar em MySQL

Abraços
Frazão

[3] Comentário enviado por gpr.ppg.br em 14/12/2005 - 18:52h

como faço para baixar tudo de uma pasta, arquivos e subpastas. no ftp em modo texto ??? pois eu usei o comando: mget *.* e só baixa os arquivos.

[4] Comentário enviado por ip3 em 06/02/2006 - 20:28h

Otimo artigo! muito bem explicado , só um errinho ali no final , no comando "vsftp &" no caso , pelo menos aqui foi "vsftpd &" faltou o "d" ali , mas muito bom o artigo , parabens!

[5] Comentário enviado por sergioalsp em 22/10/2006 - 22:27h

Ai Edu eu fiz da forma que tu escreveu ai só que na hora de autenticar dar o erro:

500 OOPS: child died

e até agora não consegui detectar o que pode está errado...

A minha distrib é Ubuntu..

[6] Comentário enviado por macinux em 16/01/2007 - 17:59h

pessoal seguinte... eu consegui fazer um usuario acessar o ftp dele normalmente... rola o acesso tanto por browser, como via terminal e via Zend studio, so que o problema está na hora do usuário gravar dentro da pasta da permissão negada so que a pasta em que o cara esta gravando está até com a permissão 777 e nada adianta... alguém sabe o que pode ser?? desde ja agradeço e parabéns pelo post Edu!!!

[7] Comentário enviado por diegofa em 03/05/2007 - 15:47h

Aqui não estava autenticando e eu achei em outro artigo a seguinte linha no arquivo /etc/pam.d/vsftpd:
session required /lib/security/pam_mysql.so user=vsftpd passwd=senha host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0

Dai ficou blz!
Se alguem estiver com problemas tente adicionar essa linha.

[8] Comentário enviado por biosterlinux em 20/06/2007 - 11:06h

Eu fiz e deu certo, mas só funciona com o crypt=0

Que será heim?
Minha intenção mesmo era por criptografia no login!

Valeu!!

[9] Comentário enviado por apokalypse em 30/09/2008 - 01:27h

olha amigos...
fiquei com uma dúvida aqui. pelo que entendi, o diretorio com os arquivos do usuario ficariam dentro de /var/vsftp/nome_do_usuario. Como estu configurando um servidor de host, seria mais obvio organizar os arquivos do cliente dentro do diretorio /home/nome_do_usuario, da mesma forma que o cpanel faz.
ja modifiquei pra cair dentro dessa pasta, mas minha duvida ficou a seguinte: a pasta deve ter permissao para o usuario/grupo virtualftp:secureftp. Mas desta forma o meu apache nao consegue acessar os arquivos!!

alguem ai teria alguma solução??? Deixar como nobody talvez??

abraços!

[10] Comentário enviado por ikkarus em 14/04/2011 - 11:35h

bom dia,

como previsto no artigo, o servidor esta utilizando meu usuario root,
em qual arquivo de configuração faço a seguinte alteração?


virtualftp:x:1009:110::/var/vftp/root:/bin/false

Se assim estiver, altere para:

virtualftp:x:1009:110::/var/vftp/$USER:/bin/false



abraço galera.

[11] Comentário enviado por ikkarus em 16/04/2011 - 01:08h

ola!
a quem interessar, o arquivo a que me referi eh o /etc/passwd
=)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts