|
|
| Fóruns | Wiki | Videos | Grupos Sociais | RSS Feeds | FAQ | Termos de Uso | Contato | Sobre |
| Registrar | Blogs | Calendário | Marcar Fóruns Como Lidos |
FerramentasPublicidade |
From UnderLinux WikiVSFtpD usando autenticação MySQL
[editar] IntroduçãoO foco deste artigo é mostrar como fazer a configuração do VSFtpD usando autenticação baseada em MySQL. Encontrei um pouco de dificuldade para fazer esta configuração, visto que conhecia muito pouco de PAM e de VSFtpD, e também porque encontrei pouca documentação sobre esse tipo de configuração na internet. O VSFtpD não possuí suporte nativo a autenticação via MySQL, mas possuí suporte a autenticação via PAM, e, usando o PAM, podemos fazer a autenticação baseada no MySQL. Estaremos assumindo aqui, que os usuários estarão armazenados um uma tabela MySQL, mas que os usuários existirão localmente também, afinal eles precisam ser os donos dos seus arquivos. Aqui não será permitido logins anônimos, somente personificados. Assumiremos também que o VSFtpD irá rodar em modo standalone - e não sobre o "xinetd/inetd" - e que o PAM estará com a configuração sendo feita por diretório "/etc/pam.d/" e não por arquivo único "/etc/pam.conf". [editar] Instalação do VSFtpDA instalação do VSFtpD é extremamente simples e rápida: Baixar o fonte de: "http://vsftpd.beasts.org" # tar xvzf vsftpd-1.2.1.tar.gz # cd vsftpd-1.2.1 # make # make install # mkdir /var/ftp # chown root:root /var/ftp # chmod og-w /var/ftp Obs: Assume-se que o usuário 'ftp' já existe na máquina [editar] Instalação do pam_mysqlBaixar o fonte de: "http://pam-mysql.sf.net" # tar xvzf pam_mysql-0.5.tar.gz # cd pam_mysql # make # cp pam_mysql.so /lib/security Obs: O pam_mysql.c pode ser personalizado para fazer logs em banco de dados das tentativas de autenticação. [editar] Configuração do pam_mysqlVamos criar o arquivo do PAM para o VSFtpD: # vi /etc/pam.d/vsftpd Inserir as linhas: auth required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2 account required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2 session required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2 OBS: A opção crypt aceita 3 parâmetros:
[editar] Configuração do VSFtpD[editar] Arquivo de configuração geral: "/etc/vsftpd.conf"# Desabilitar logins anonimos anonymous_enable=NO # Permite login de contas locais ( e usuarios virtuais ) local_enable=YES # Permite rodar o servidor em modo standalone listen=YES # Numero maximo de clientes total e por IP max_clients=60 max_per_ip=20 # Porta em que o servidor ira rodar listen_port=21 # Define qual o servico do PAM o vsftpd vai usar pam_service_name=vsftpd # Permite o login de usuarios sem entrada no /etc/passwd guest_enable=YES # Para os virtual users terem as mesmas permissoes dos usuarios locais virtual_use_local_privs=YES # Configuracao por usuario user_config_dir=/etc/vsftpd_user_conf local_root=/usr/share/empty # Para enjaular os usuários em seus homes chroot_local_user=YES # O umask padrao do VSFtpD e 077 local_umask=022 # Ativa o log de downloads/uploads xferlog_enable=YES xferlog_file=/var/hosting_logs/vsftpd.log # Timeout de sessoes IDLE idle_session_timeout=180 # Timeout de conexao data_connection_timeout=120 # Banner de entrada ftpd_banner=Meu VSFtpD Server [editar] Arquivo de configuração por usuário: "/etc/vsftpd_user_conf/"# Especifica onde o usuario vai entrar quando logar local_root= # Faz o chown logo apos o upload de um determinado arquivo chown_uploads=YES # Nome usuario que sera feito o chown chown_username= # Permite Upload / Delete write_enable=YES # Usuario local utilizado por aquele login guest_username= [editar] Arquivo de init: "/etc/rc.d/init.d/vsftpd.init"
#!/bin/sh
. /etc/rc.d/init.d/functions
RETVAL=0
pid=`ps ax|grep /usr/local/sbin/vsftpd|grep -v grep|awk '{print $1}'`
case "$1" in
start)
echo -n "Starting vsftpd: "
if [ "$pid" = "" ]; then
/usr/local/sbin/vsftpd &
success
echo
RETVAL=$?
else
echo "VSFtpD alredy running."
fi
;;
stop)
echo -n "Shutting down vsftpd: "
if [ "$pid" != "" ]; then
killproc vsftpd
success
RETVAL=$?
echo
else
echo "VSFtpD not running."
fi
;;
esac
[editar] FinalizandoCom isso encerramos a configuração do VSFtpD, agora basta iniciá-lo: # /etc/rc.d/init.d/vsftpd start Espero que este artigo tenha sido útil. Sugestões e críticas, mandem um e-mail para: kamogawa@yahoo.com [editar] AutorHélio Rubens Kamogawa kamogawa@yahoo.com Programalista de Sistemas Central Server Informática http://www.centralserver.com.br |