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.436 ]

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

Internet no Linux através de celular HTC TYTN II

Openfire em Ação nos meios Corporativos

Usando 3G da Vivo no Slackware 13.1

OpenVPN -Linux central x Linux filial

Integração Apache / ASP

  
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