Ver Resposta Única
Antigo 15-10-2005, 08:02   #2 (permalink)
TheHawk
 
Avatar de TheHawk
 
Registrado em: Nov 2004
Idade: 26
Posts: 261
Agradeceu: 1
Agradecido 3 vez(es) em 3 Posts
Reputação: 0
TheHawk
Padrão Importante! Urgente Proftpd!

Olá sonnenhohl, bom para que o proftpd leia os usuarios de um arquivo separado vc tem que criar primeiro um arquivo de senhas separado para ele com o comando touch /etc/passwd.ftp, depois de criado o arquivo eu uso os seguintes scripts para fazer esse serviço de adicionar os usuarios no arquivo de senhas e criar os diretorios para os mesmos:

Script que adiciona o usuario:

Código:
#!/bin/sh

#######################################
# Script desenvolvido por Gilberto Villani Brito (giba@olhoneles.com.br) e
# Salustiano Ribeiro Neto/Packard (salur@terra.com.br).
# Nenhum direito autoral reservado, por isso usem e auterem a vontade,
#pois
# estamos em um pais literalmente livre (hahahahahah......).
########################################

# Configuracoes das variaveis do script.
# htpasswd
CRYPTO=/usr/bin/htpasswd
# passwd.ftp
PASSWD=/etc/passwd.ftp
# passwd.tmp
PASSWDTEMP=/tmp/passwd.tmp
# home
HOME=/var/www/html

# Script para criacao de usuarios para ftp.

# Dados do usuario.
while [ "$RESP" != "s" ] && [ "$RESP" != "S" ]; do
clear
printf " Nome de Login para o novo usuario []: "
read LOGIN
while [ -z $LOGIN ] || [ "$(grep -c /$LOGIN: $PASSWD)" = "1" ]; do
clear
printf "Usuario ja existe ou em branco!!! "
printf " Nome de Login para o novo usuario []: "
read LOGIN
done
clear
printf " Nome do usuario $LOGIN []: "
read NOME
clear
printf "#### Dados do novo usuario. #### "
printf "Login: $LOGIN "
printf "Nome: $NOME "
printf "Diretorio: $HOME/$LOGIN "
printf "##### =====|////===== ##### "
printf "Confirma os Dados?? [s/n]: "
read RESP
done
# Limpa o passwd.tmp
> $PASSWDTEMP

while [ "$(cat $PASSWDTEMP)" = "" ]; do
$CRYPTO $PASSWDTEMP $LOGIN

done
SENHA=$(cat $PASSWDTEMP)
echo "$SENHA:91:91:$NOME:$HOME/$LOGIN:/sbin/nologin" >> $PASSWD
mkdir $HOME/$LOGIN
chown ftp $HOME/$LOGIN
chmod 777 $HOME/$LOGIN
cd $HOME/$LOGIN
mkdir logs
touch logs/access.log
touch logs/error.log
mkdir cgi-bin
Script para Excluir o usuario:

Código:
#!/bin/sh

#######################################
# Script desenvolvido por Gilberto Villani Brito (giba@olhoneles.com.br) e
# Salustiano Ribeiro Neto/Packard (salur@terra.com.br).
# Nenhum direito autoral reservado, por isso usem e auterem a vontade,
#pois
# estamos em um pais literalmente livre (hahahahahah......).
########################################

# Configuracoes das variaveis do script.
# passwd.ftp
PASSWD=/etc/passwd.ftp
# passwd.tmp
PASSWDTEMP=/tmp/passwd.tmp
# home
HOME=/var/www/html

# Script para apagar usuarios para ftp.

# Dados do usuario.
while [ "$RESP" != "s" ] && [ "$RESP" != "S" ]; do
clear
printf " Nome de Login do usuario []: "
read LOGIN
while [ -z $LOGIN ] || [ "$(grep -c /$LOGIN: $PASSWD)" = "0" ]; do
clear
printf "Usuario nao existe ou em branco!!! "
printf " Nome de Login do usuario []: "
read LOGIN
done
clear
printf "####### Dados do usuario. ###### "
printf "Login: $LOGIN "
printf "Nome: $(grep /$LOGIN: /etc/passwd.ftp | cut -d : -f 5) "
printf "Diretorio: $HOME/$LOGIN "
printf "##### =====|////===== ##### "
printf "==>>ATENCAO, todos os arquivos dentro do diretorio serao
apagados!!!<<== "
printf "Confirma os Dados?? [s/n]: "
read RESP
done
grep -v "/$LOGIN:" $PASSWD > $PASSWDTEMP
cat $PASSWDTEMP > $PASSWD
rm -rf $HOME/$LOGIN
Script para alterar a senha do usuario:

Código:
#!/bin/sh

#######################################
# Script desenvolvido por Gilberto Villani Brito (giba@olhoneles.com.br) e
# Salustiano Ribeiro Neto/Packard (salur@terra.com.br).
# Nenhum direito autoral reservado, por isso usem e auterem a vontade,
#pois
# estamos em um pais literalmente livre (hahahahahah......).
########################################

# Configuracoes das variaveis do script.
# htpasswd
CRYPTO=/usr/bin/htpasswd
# passwd.ftp
PASSWD=/etc/passwd.ftp
# passwd.tmp
PASSWDTEMP=/tmp/passwd.tmp
# home
HOME=/var/www/html

# Script para a alteracao de senha dos usuarios de ftp.

# Dados do usuario.
while [ "$RESP" != "s" ] && [ "$RESP" != "S" ]; do
clear
printf " Nome de Login do usuario []: "
read LOGIN
while [ -z $LOGIN ] || [ "$(grep -c /$LOGIN: $PASSWD)" = "0" ]; do
clear
printf "Usuario nao existe ou em branco!!! "
printf " Nome de Login do usuario []: "
read LOGIN
done
clear
printf "####### Dados do usuario. ###### "
printf "Login: $LOGIN "
printf "Nome: $(grep /$LOGIN: /etc/passwd.ftp | cut -d : -f 5) "
printf "Diretorio: $HOME/$LOGIN "
printf "##### =====|////===== ##### "
printf "==>>ATENCAO, a senha do usuario sera pagada!!!<<== "
printf "Confirma os Dados?? [s/n]: "
read RESP
done
# retira o usuario do passwd
grep -v "/$LOGIN:" $PASSWD > $PASSWDTEMP
cat $PASSWDTEMP > $PASSWD
# Limpa o passwd.tmp
> $PASSWDTEMP
# senha para o usuario
while [ "$(cat $PASSWDTEMP)" = "" ]; do
$CRYPTO $PASSWDTEMP $LOGIN

done
# coloca o usuario com a nova senha
SENHA=$(cat $PASSWDTEMP)
echo "$SENHA:91:91:$NOME:$HOME/$LOGIN:/sbin/nologin" >> $PASSWD

Nesses scripts basta vc alterar a linha deles que diz respeito ao HOME do seu apache, pq senão eles irão criar os diretorios no lugar errado :P e por ultimo, vc tem que adicionar as seguintes linhas no seu proftpd.conf para que o mesmo leia os usuarios do arquivo de senhas correto e para que os usuarios fiquem restritos apenas aos diretorios deles :P:

AuthUserFile /etc/passwd.ftp
DefaultRoot ~

Como vc não quer criar virtualhosts para os users eu não entrei em detalhes aqui, mas tem muito material sobre isso aqui no under mesmo é só vc dar uma olhada.

Flw.
__________________
Fedora Linux Inside.
TheHawk está offline