O Luciano Barcaro (luciano@alvaro.com.br) enviou o tutorial abaixo explicando como ele fez para criar um servidor ProFTPd com autenticação via usuários registrados em um banco de dados SQL.
Luciano Barcaro (luciano@alvaro.com.br)
Motivação:
A poucos dias atrás, um amigo me pediu pra montar um servidor FTP. Ele tem uma empresa de software e gostaria de facilitar a atualização de seus clientes.
Mas tinha um detalhe importante a ser contemplado. Quem cuidaria das atualizações era o pessoal de suporte, que, por medidas de segurança, não deveriam ter a senha do usuário root. Mas como criar os usuários no linux (seus clientes) sem permissão para tal?
Após uma vasculhada rápida, vi que o ProFTPd tinha autenticação via Banco de dados. Mas tive uma grande decepção quando praticamente não encontrei documentação para aplicar esta idéia.
Foi aí que resolvi escrever este tutorial, depois de quebrar um pouco a cabeça.
Software necessário:
MySQL (www.mysql.com)
ProFTPd (www.proftpd.org)
Documentação utilizada:
www.mysql.com/doc/en/index.html
www.proftpd.org/docs/configs/mysql_simple.conf
www.castaglia.org/proftpd/modules/mod_sql.html
www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-SQL.html
Download e instalação dos softwares utilizados
MySQL (Não é obrigatório utilizar o MySQL, esta escolha foi com base em minha experiência com este banco. Nada impede que você utilize postgreSQL).
Baixe a versão estável mais recente do mysql de www.mysql.com. No momento, esta versão é a 4.0.15.
Para instalar esta versão do mysql, descompacte-a dentro do diretório /usr/local:
tar zxvf /usr/local/downloads/mysql-standard-4.0.15-pc-linux-i686.tar.gz
Será criado um diretório mysql-standard-4.0.15-pc-linux-i686
Crie o seguinte link:
ln -s mysql-standard-4.0.15-pc-linux-i686 mysql
Caso seja necessário, crie um usuário chamado mysql pertencendo ao grupo mysql.
Crie a base inicial do MySQL
cd mysql
scripts/mysql_install_db
Vamos agora modificar as permissões de acesso dos arquivos do MySQL
chmod -R 770 *
chown -R mysql.mysql *
Vamos agora colocar o MySQL no ar
bin/mysqld_safe &
Para testar se o MySQL está funcionando, digite:
bin/mysql
Deve aparecer uma mensagem de boas vindas e abrir um prompt "mysql>" . Saia, digitando o comando quit e pressionando a tecla ENTER.
Para facilitar um pouco, insira o caminho /usr/local/mysql/bin em seu PATH
PATH=$PATH:/usr/local/mysql/bin
Isto garante que não seja necessário digitar toda a vez o caminho completo para o cliente do mysql.
Com isto encerramos a etapa de instalação do MySQL.
ProFTPd
Baixe a versão estável (1.2.8p).
Descompacte o arquivo baixado:
cd /usr/local/src
tar jxvf /usr/local/downloads/proftpd-1.2.8p.tar.bz2
entre no diretório criado:
cd proftpd-1.2.8
Agora, vamos compilar o proftpd, não nos esquecendo de ligar o suporte a MySQL (ou postgres):
./configure --with-modules=mod_sql:mod_sql_mysql \
--with-includes=/usr/local/mysql/include \
--with-libraries=/usr/local/mysql/lib
Para utilizar o PostgreSQL em vez do MySQL, troque o mod_sql_mysql por mod_sql_postgres
Após alguns instantes, o ProFTPd estará pronto para ser compilado. Mas antes de compilar-mos, é necessário fazer uma alteração em um arquivo do proftpd. Abra o arquivo modules/mod_sql_mysql.c com o editor de sua preferência e localize a linha 136:
#include <mysql/mysql.h>
Deixe-a assim:
#include <mysql.h>
Agora sim, o ProFTPd está pronto para ser compilado e instalado
make
Caso você, como eu, esteja utilizando o Kurumin, e nesta etapa apresentar um erro /usr/bin/ld: cannot find -lz, instale o pacote zlib1g-dev e re-execute o comando make.
E finalmente, vamos instalar o ProFTPd:
make install
Neste ponto, temos o MySQL rodando e o ProFTPd instalado. Vamos agora configurar o ProFTPd:
Precisamos antes, criar as tabelas necessárias no MySQL (usuários de postgres precisam adaptar este trecho):
mysql Chama o cliente em modo texto do mysql
create database proftpd; Cria um banco de dados chamado proftpd, este nome foi escolhido por ficar fácil de lembrar
use proftpd Seleciona o banco recém criado
create table usuario (
Usuario char(30),
Senha char(30),
UID int,
GID int,
DirBase char(30),
Shell char(30)); Cria a tabela de usuários. Aqui são definidos os usuários que podem utilizar o serviço de ftp, que UID/GID serão atribuídos a eles e qual o diretório que eles tem acesso.
grant all on proftpd.* to proftpd_user@localhost identified by 'proftpd_password'; Cria um usuário para o ProFTPd poder acessar a base de dados, dando todos os direitos a ele sobre o banco de dados "proftpd". Este usuário chama-se proftpd_user e sua senha é proftpd_password.
flush privileges; Faz com que o mysql re-leia a tabela de permissões.
insert into usuario values ('teste','teste',1001,1001,'/home/teste','/bin/bash'); Insere um usuário para testes. Note que os campos UID e GID devem ser válidos.
Preparando o ProFTPd para utilizar esta base de dados criada:
Edite o arquivo /usr/local/etc/proftpd.conf com seu editor favorito.
Insira as seguintes linhas no arquivo:
SQLAuthTypes Plaintext
SQLAuthenticate users
SQLConnectInfo proftpd@localhost proftpd_user proftpd_password
SQLUserInfo usuario usuario senha uid gid dirbase shell
O segredo está nestas 2 últimas linhas:
SQLConnectInfo indica ao ProFTPd qual banco deve conectar e com que usuário e senha.
SQLUserInfo é composto dos seguintes campos:
Nome da tabela (neste nosso exemplo, usuario)
Campos utilizados (Login, password, UID, GID, HomeDir e Shell).
Inicialize o proFTPd (execute o comando proftpd) e tente fazer um ftp com o usuário teste e senha teste (criados agora a pouco).
Neste ponto já temos o proFTPd autenticando via MySQL. Nada mais é necessário para funcionar. Abaixo tem alguns pontos que podem ser melhorados nesta integração ProFTPd e MySQL.
Para dificultar um pouco as coisas, vamos supor que seja necessário fazer uma verificação extra para aceitar ou não a conexão de determinado usuário. (Você pode manter o cadastro de usuários mas por algum motivo quer bloquear momentaneamente algum usuário, por exemplo).
Vamos inserir um novo campo na tabela de usuários. Este campo indicará se o usuário está temporariamente bloqueado ou não.
mysql proftpd
alter table usuario add bloqueado char(1) default 'N';
quit
Agora precisamos informar ao proFTPd que ele também precisa verificar se este campo contém 'N'.
Edite novamente o arquivo /usr/local/etc/proftpd.conf e insira o seguinte parâmetro:
SQLUserWhereClause "bloqueado='N'"
Você pode criar qualquer verificação extra necessária, como limitar alguns usuários a se conectarem apenas de manhã, ou apenas nas quintas-feiras. Sua imaginação é o limite.
Reinicialize o profTPd e teste novamente, variando os valores para o campo bloqueado.
Gerando o log de conexões e transferências.
Agora, nós precisamos gerar no MySQL as informações referentes ao log do ProFTPd, quem conectou, quando conectou e o que transferiu, por exemplo.
Novamente vamos voltar ao MySQL para criar as tabelas que reterão estas informações. Neste exemplo, vou criar apenas uma tabela que conterá o que o usuário fez. Nada impede que você crie mais tabelas.
mysql proftpd
create table log (id int unsigned not null auto_increment primary key,
Usuario char(30),
Host char(15),
DataHora datetime,
Acao char(20),
Referencia text);
quit
Com a tabela criada, vamos agora alterar o ProFTPd para gravar nela os dados necessários. Abra o arquivo /usr/local/etc/proftpd.conf novamente e insira as seguintes linhas:
SQLNamedQuery conexao INSERT "'%u','%a',now(),'conexão',null" log
SQLNamedQuery download INSERT "'%u','%a',now(),'download','%f'" log
SQLNamedQuery upload INSERT "'%u','%a',now(),'upload','%f'" log
SQLNamedQuery err_download INSERT "'%u','%a',now(),'ERRO download','%f'" log
SQLNamedQuery err_upload INSERT "'%u','%a',now(),'ERRO upload','%f'" log
SQLLog PASS conexao
SQLLog RETR download
SQLLog STOR upload
SQLLog ERR_RETR err_download
SQLLog ERR_STOR err_upload
Coloquei abaixo algumas substituições que podem ser feitas:
%a IP do usuário
%A Anonymous ou Unknown se não anônimo
%b Bytes transferidos (tanto upload quanto download)
%d Nome do diretório
%D Nome do diretório (caminho completo)
%f Arquivo transferido, com caminho absoluto
%F Arquivo transferido, da mesma forma que o cliente o encherga
%h Nome do host do cliente
%l Usuário remoto ou UNKNOWN se desconhecido
%L IP do servidor
%m Comando recebido pelo cliente
%p Número da porta local
%P Pid do processo local
%r Linha de comando completa recebida pelo cliente
%s Código numérico de resposta do FTP
%t Hora local
%T Tempo de transferência do arquivo
%u Nome do usuário autenticado
%U Nome do usuário, enviado originalmente pelo cliente
Com isso, chegamos ao final deste mini tutorial sobre autenticação do ProFTPd via banco de dados.
Não quis entrar em detalhes de como colocar os softwares rodando automaticamente a cada boot, mesmo por que não era este o objetivo deste documento.
-----
Sobre o autor:
Luciano Barcaro é graduando em ciência da computação, trabalha com desenvolvimento de software e brinca com linux desde 1998.
Email: luciano@alvaro.com.br
» Postado por: sandro lemanski em outubro 27, 2003 08:08 AM, 200.181.199:
ow.. este tutorial ficou bala, bem explicativo, valeu...
» Postado por: Júnio José dos Santos em novembro 19, 2003 09:24 AM, 200.103.111:
Ótimo tutorial.
Segui todos os passos.
Fiz todas as auterações necessárias, mas quando tento logar aparece a seguinte mensagem:
421 Service not availabe, remote server has closed connection
Login failed.
No control connection for command: Permission denied.
Alguma idéia do que pode estar errado?
Seria algum problema de permissão em algum lugar?
Antecipadamente agradeço a atenção.
» Postado por: Luciano Barcaro em novembro 26, 2003 11:27 PM, 200.138.63.:
Como você está inicializando o serviço?
o ProFTPd está rodando standalone ou via inet?
Qual sua distro ?
» Postado por: chrdm em março 9, 2004 11:02 AM, 200.222.60.:
Não tem pra ninguém! Era o que realmente queria...Sem comentários
» Postado por: Jefferson em março 17, 2004 02:41 PM, 200.204.77.:
Boa tarde, estou seguindo o tutorial de instalacao do MySql , so que na hora que aplico esse comando
scripts/mysql_install_db ele da uma mensagem de arquivo ou diretorio nao encontrado, o que devo fazer ?
» Postado por: Luciano Barcaro em março 22, 2004 10:24 AM, 200.195.134:
Jefferson, a partir de qual diretório você executou o 'scripts/mysql_install_db' ?
Você deve estar em /usr/local/mysql
Grande abraço
» Postado por: Jonas Augusto Telöcken em maio 17, 2004 04:10 PM, 200.103.142:
Este tutorial é um show, não instalei ainda mas acredito q seja isso q preciso. São pessoas como vc e muitos outros q a nossa comunidade Linux precisa. Muito obrigado
Jonas
» Postado por: Luciano Barcaro em junho 18, 2004 05:15 PM, 200.195.134:
A todos que seguirem este tutorial:
Existe um erro de digitação (mea culpa) nele.
Onde vocês encontrarem "SQLConnectionInfo", troquem por "SQLConnectInfo".
Grande abraço a todos.
» Postado por: alex em julho 31, 2004 09:13 PM, 80.8.46.134:
Very good subject.
logo-mobile-repondeur
logo-repondeur-mobile
logo-sonneries-sonnerie
logos-mobile-repondeurs
logos-repondeurs-mobile
logos-sonneries-sonnerie
mobile-repondeur-logo
mobile-repondeurs-logos
netimobile
repondeur-logo-mobile
repondeurs-logos-mobile
sonnerie-logo-sonneries
sonnerie-logos-sonneries
sonnerie-sonneries-logo
sonnerie-sonneries-logos
sonneries-sonnerie-logo
sonneries-sonnerie-logos
planete-mobile
ringtone-logos
ringtone-mobiles
01-ringtone
ringtone-free
logo-phones
logo-free
01-logo
logo-tones
ringtones-phone
ringtones-mobiles
ringtones-pictures
ringtones-screensavers
logos-phones
logos-tone
logos-downloads
logos-free
polyphonic-tone
screensaver-mobile
01-melodia
top-melodia
e-melodias
logo-melodias
logo-moviles
01-ringetone
top-ringetone
ringetone-mobil
logoer-mobil
top-logoer
01-ringsignaler
top-ringsignaler
ringsignaler-mobil
logotyper-mobil
01-logotyper
01-suonerie
i-suonerie
suonerie-mobile
01-loghi
top-loghi
01-soittoaanet
top-soittoaanet
soittoaanet-logot
01-logot
i-logot
01-beltonen
top-beltonen
beltonen-logo
logo-mobiel
logo-beltonen
01-toque
top-toque
toque-movel
icone-movel
icone-toque
1-klingeltone
hit-klingeltone
klingeltone-logo
logo-klingeltone
logo-spiele
ringtone download
ringtone downloads
ringtone free
free nokia ringtone
mobile ringtone
samsung ringtone
ringtone keypress
phone ringtone
chinese ringtone
free ringtone composer
free ringtone download
ringtone siemens
hindi ringtone
ringtone ericsson
3310 ringtone
mobile phone ringtone
free ringtone for nokia
t68i ringtone
ringtone for free
ringtone for motorola
rtttl ringtone
send ringtone
sms ringtone
bollywood ringtone
indian ringtone
dilemma ringtone
nokia ringtone codes
ringtone key
ringtone melodies
ringtone and logo
anime ringtone
poly ringtone
ringtone and logos
nokia ringtone download
alcatel ringtone
nokia ringtone downloads
in da club ringtone
3360 ringtone
nokia ringtone converter
free ringtone codes
ringtone jukebox
rttl ringtone
motorola v60 ringtone
free ringtone sites
arabic ringtone
cell phone ringtone
ringtone converters
3210 ringtone
midi to ringtone
a300 ringtone
sagem ringtone
ringtone polyphonic
motorola ringtone composer
ringtone nokia composer
mario ringtone
ringtone sms
ringtone creator
bond ringtone
download free ringtone
ketchup ringtone
lord of the rings ringtone
wanksta ringtone
polyphonic ringtone uploader
handphone ringtone
ringtone composer for nokia
free ericsson ringtone
ringtone australia
james bond ringtone
new ringtone
birthday ringtone
free nokia ringtone downloads
free samsung ringtone
ringtone website
coding workshop ringtone converter crack
dance ringtone
ringtone download free
cellphone ringtone
ringtone converter 3.9
hero ringtone
buffy ringtone
ringtone melody
f4 ringtone
ignition ringtone
jackass ringtone
garage ringtone
ringtone free nokia
free ringtone notes
superman ringtone
angel ringtone
free siemens ringtone
mobile ringtone download
ringtone malaysia
send free ringtone
wap ringtone
mmf ringtone
a team ringtone
free logo ringtone
melody ringtone
die another day ringtone
c45 ringtone
ringtone galore
ericson ringtone
ringtone player
download polyphonic ringtone
free nokia ringtone codes
nelly ringtone
shakira ringtone
smooth criminal ringtone
eye of the tiger ringtone
cingular ringtone
ringtone tabs
ringtone converter v3 8
logical song ringtone
nokia 7210 ringtone
friends ringtone
game ringtone
send a ringtone
8210 ringtone
japanese ringtone
mobile ringtone downloads
free indian ringtone
spongebob ringtone
tatu ringtone
t300 ringtone
8390 ringtone
nokia chinese ringtone
passenger seat ringtone
nokia 8310 ringtone
justin timberlake ringtone
indiana jones ringtone
football ringtone
flint ringtone
coding ringtone
eminem without me ringtone
free nokia ringtone download
ringtone eminem
universal ringtone converter
i need a girl part 2 ringtone
ringtone codes for nokia
ringtone for nokia 3210
ringtone converter 3.3
inspector gadget ringtone
ringtone via sms
ringtone nokia keypress
kiss ringtone
league of gentlemen ringtone
ringtone mission impossible
siemens c45 ringtone
top ringtone
cry ringtone
ericcson ringtone
motorola free ringtone
mario bros ringtone
motorola t190 ringtone
ringtone conversion
transformers ringtone
angelina ringtone
coding workshop ringtone converter v3 3.0
coding workshop ringtone converter key
ringtone composition
clocks ringtone
final countdown ringtone
coding workshop ringtone converter 3.9
ignition remix ringtone
cellular ringtone
ringtone studio
compose nokia ringtone
back to the future ringtone
ringtone nokia indonesia
ringtone instructions
wav ringtone
airwolf ringtone
composer ringtone nokia
exorcist ringtone
ericsson free ringtone
all my life ringtone
t39 ringtone
malaysia ringtone
free mobile phone ringtone
s40 ringtone
siemens ringtone composer
yahoo ringtone
red dwarf ringtone
sex in the city ringtone
take on me ringtone
in the end ringtone
next episode ringtone
ringtone siemen
dj sammy heaven ringtone
evanescence ringtone
game ka na ba ringtone
charmed ringtone
bonnie and clyde ringtone
free logo free ringtone
ringtone 3210
t200 ringtone
ringtone bollywood
free ringtone melodies
metal gear solid 2 ringtone
ringtones
free ringtones
polyphonic ringtones
ringtones for nokia
ringtones free
motorola ringtones
samsung ringtones
free mobile ringtones
logos and ringtones
keypress ringtones
ringtones for samsung
ringtones for motorola
hindi ringtones
free motorola ringtones
free ringtones free
free logos and ringtones
ringtones free logos
ringtones for free
tamil ringtones
a300 ringtones
free downloadable ringtones
download free ringtones
composed ringtones
midi ringtones
arabic ringtones
ringtones for nokia phones
ringtones siemens
composable ringtones
ringtones for panasonic
free mobile phone ringtones
ringtones australia
nokia keypress ringtones
nokia ringtones composer
www ringtones
cellphone ringtones
free ringtones composer
motorola v60 ringtones
t720 ringtones
free hindi ringtones
cingular ringtones
free nokia 3360 ringtones
3210 ringtones
free ringtones and free logos
free bollywood ringtones
latest ringtones
ringtones for mobiles
wireless ringtones
free sms ringtones
ringtones for sony ericsson
ringtones for a nokia
free ringtones free logos com
ringtones to compose
ringtones for samsung t100
rock ringtones
free nokia ringtones and logos
polyphonic ringtones for nokia
rttl ringtones
at&t ringtones
www free ringtones free logos
get free ringtones
key press ringtones
cheap ringtones
8310 ringtones
ringtones & logos
ringtones panasonic
3330 ringtones
gd67 ringtones
ringtones for cell phones
ringtones for my nokia
free nokia 3390 ringtones
ringtones for sprint
polyphonic ringtones for samsung
wap ringtones
t300 ringtones
att ringtones
motorola v60i ringtones
free ringtones for sagem
nokia mobile ringtones
ringtones sent to your phone
mobile ringtones and logos
ringtones for nokia composer
free ringtones for a nokia
free ringtones for nokia 3360
ringtones and icons
free ringtones siemens
free tamil ringtones
where can i get free ringtones
motorola v50 ringtones
free panasonic ringtones
motorolla ringtones
free arabic ringtones
ringtones sony ericsson
3310 free ringtones
ringtones via sms
cell ringtones
free nokia polyphonic ringtones
malay ringtones
composer nokia ringtones
christmas ringtones
ringtones indonesia
tdma ringtones
song ringtones
ringtones for nokia mobiles
ringtones rtttl
ringtones sagem
asian ringtones
polophonic ringtones
ringtones in composer
free sony ericsson ringtones
free ringtones and graphics
1260 ringtones
free poly ringtones
free hip hop ringtones
8265 ringtones
ringtones for t68i
nokia 3410 ringtones
ringtones for my mobile
logo and ringtones
free composable ringtones
nokia ringtones keypress
type in ringtones
50 cent ringtones
ringtones sites
free nokia logos and ringtones
nokia 1260 ringtones
ringtones screensavers
free rap ringtones
hindi ringtones for nokia
nokia ringtones logos
ringtones for motorola t191
nokia 3310 free ringtones
ringtones us
ringtones for kyocera
ringtones t68i
free nokia 3210 ringtones
free ringtones for cell
gx10 ringtones
keypad ringtones
p800 ringtones
free polyphonic ringtones for nokia
latest hindi ringtones
mobile logos and ringtones
ringtones gratis
motorola 120t ringtones
logos and ringtones for nokia
polyphonic ringtones for samsung t100
ringtones on composer
ringtones and pictures
ringtones key
siemens free ringtones
311 ringtones
ringtones graphics
punk ringtones
ringtones net
downloadable ringtones for nokia
ringtones for a motorola
ringtones nokia 3390
ringtones and logos
moblie ringtones
free ringtones and icons
free t68i ringtones
nokia 3510i ringtones
ringtones for sharp
free ringtones to download
gratis ringtones
f4 ringtones
keypress nokia ringtones
free ringtones for cell phones
r&b ringtones
telugu ringtones
t28 ringtones
ringtones for nokia 3510
ringtones indian
free ringtones for alcatel
download ringtones for nokia
ringtones codes
downloadable nokia ringtones
irish ringtones
free ringtones for nokia mobile
for free ringtones
free ringtones to compose
nokia 3310 composer ringtones
ringtones for lg
siemens c35 ringtones
panasonic polyphonic ringtones
t100 free ringtones
nokia 5210 ringtones
free 3310 ringtones
frre ringtones
ringtones verizon
free cellular ringtones
mtv ringtones
attwireless com ringtones
ringtones for nextel
ringtones for cellphones
nokia hindi ringtones
ericsson ringtones free
n400 ringtones
dvd-pascher
cdmusique pascher
jeuxvideo pascher
mobile pascher
pc pascher
pda pascher
livre pascher
» Postado por: dario basso cardoso em agosto 3, 2004 08:51 AM, 200.167.185:
Otimo tutorial,
fiz todos os passos utilizando o PostgreSQL e tudo ocorreu bem.
eu gostaria de aprender como fazer o usuario se logar em ambiente chrootado a partir desta tabela criada... e tambem como criar um usuario anonymous sem senha para se logar a um ftp padrao.
dario basso cardoso
» Postado por: maxwull em agosto 24, 2004 11:30 PM, 201.9.44.32:
Oi gostaria de saber se tem como me mandar um tutorial a respeito do programa Coding Workshop Ringtone Converter V4.4 ja tentei baixar meus ringtones e não esta dando certo por favor me ajude um abraço do amigo Max.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.