Como configurar arquivos de usuários no proftpd

Aqui aprenderemos a criar um arquivo de usuários separado para trabalharmos com o proftpd, precisamos de primeiramente instalar o:

– proftp – nosso servidor de ftp 🙂
– apache – será usado para criarmos a senha dos usuário o apache não precisará estar rodando, mas apenas instalado

1 – Crie um grupo chamado “ftp” com um usuário chamado “ftp” sem senha e sem bash. O home deste usuário será onde colocaremos os outros diretorios dos outros usuários, ou seja “/home/ftp”

3 – Copie o arquivo de configuração de usuários do seu sistema criando uma nova cópia chamada “passwd.ftp” o arquivo de usuários do sistema você pode encontrar em “/etc/passwd”

2 – Após instalar o proftpd adicione essas informações no arquivo “proftpd.conf”:

1
2
3
4
5
6
7
8
9
10
## CONFIGURACAO USUARIO ACESSAR SERVIDOR FTP
 
DefaultRoot ~
 
      AllowOverwrite no
 
## LOGAR USUARIOS
 
AuthUserFile /etc/passwd.ftp
RequireValidShell off

Procurando um pouqinho na net achei esses três scripts de autoria do Gilberto Villani Brito vamos então:

3 – Vamos ao nosso script para criar usuários, crie um arquivo em um diretório de sua escolha e coloque o nome nele de: “ftpadd.sh” cole o texto abaixo e depois de poder de execução ao arquivo assim:

Neste arquivo que você criou cole o seguinte texto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/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/local/bin/htpasswd
# passwd.ftp
PASSWD=/etc/passwd.ftp
# passwd.tmp
PASSWDTEMP=/tmp/passwd.tmp
# home
HOME=/home/ftp
 
# 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

Colocando poder de execução no arquivo:

chmod a+x ftpadd.sh

4 – Nosso script de deletar usuário, você faz a criação do arquivo: “ftpdel.sh” semelhante ao que você fez logo acima colando o texto abaixo e colocando-o como executavel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/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=/home/ftp
 
# 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

Colocando ele como arquivo executavel:

chmod a+x ftpdel.sh

5 – Vamos criar um script para alteração de senha do usuário: “ftppas.sh” depois cole o texto abaixo e de poder de execução nele:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/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/local/bin/htpasswd
# passwd.ftp
PASSWD=/etc/passwd.ftp
# passwd.tmp
PASSWDTEMP=/tmp/passwd.tmp
# home
HOME=/home/ftp
 
# 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"

Colocando poder de execução no arquivo:

chmod a+x ftppass.sh

7 – Para executar esses arquivos, você deve ir no diretorio deles e é só fazer assim:

./nomedoarquivo.sh

Dica:

Agora vai apenas uma dica ou um detalhe do funcionamento do ftp: O Proftpd mostra para o usuario conectado que o dono dos arquivos e o primeiro usuario do arquivo passwd.ftp, por isso se o primeiro usuario for joao, todos os outros usuarios que conectarem no seu ftp e digitar o comando ls -l vera que seus arquivos pertencem ao grupo ftp (informacao correta) e ao usuario joao (informacao incorreta). Isso nao altera no bom funcionamento do servidor, porem por motivo de estetica eu recomendo criar o primeiro usuario com o nome ftp (caso nao for usalo, remova sua senha no passwd.ftp, mude seu home para /home/ftp e remova o diretorio /home/ftp/ftp) sendo assim todo o usuario que conectar em seu ftp e dar o comando ls -l vera que o dono dos seus arquivos e o usuario ftp e grupo ftp.

Agradecimento aos criadores do script que é uma verdadeira mão na roda 🙂

4 Comments

    • @Elissandro, Caro amigo, eu particularmente não sou muito fã de dar aulas pelo simples fato de acreditar que as pessoas não aprendem nada no metodo de ensino atual, enfim isso pode ser assunto até para um post a parte, o que não cabe aqui debater sobre isso, mas vai algumas dicas para aprender linux e qualquer outra coisa:

      1 – Instale no seu pc e comece a usar em seu dia-a-dia só assim você deparará com os problemas e aprenderá a resolve-los

      2 – Leia sobre o assunto que você está interessano na net, busque conteudo rico sobre o mesmo.

      3 – Pricipalmente participe de foruns sobre o assunto em especial o linux temos o forumdebian.com.br que é uma grande fonte de conhecimento, coisa que você não vai aprender em escola alguma e nenhum professor vai lhe passar.

Leave a Reply