terça-feira, setembro 26, 2006

Migrando usuario para o FreeBSD.

Migrar uma base de usuário é sempre um problema a se pensar,
pra resolver esse problema eu estou postando um script bem simples
feito por mim.

[ricardo@ricardo(10:10am)] ~> cat lista_de_usuarios.txt
ricardo|Ricardo dos Santos
luiz|Luiz Gouveia
jose|Jose de Lima
maria|Maria de Almeida

[ricardo@ricardo(10:14am)] ~> cat cria_master.sh
#!/bin/sh
LISTA="lista_de_usuarios.txt"
#modifique as variaveis conforme a necessidade
uid="500"
gid="100"
key=0
OLD_IFS="$IFS"
IFS="|"
while read login user_name;do
HASH_MD5=$(echo ${key}${login} | openssl passwd -1 -stdin)
echo "A senha do usuario $login = ${i}${login}"
echo "${login}:${HASH_MD5}:${uid}:${gid}::0:0:${user_name}:/home/${login}:/bin/csh"
echo mkdir /home/${login}
key=$(( $key + 2))
uid=$(( $uid + 1 ))
done <$LISTA
IFS=$OLD_IFS

[ricardo@ricardo (10:15am)] ~> sh cria_master.sh
A senha do usuario ricardo = 0ricardo
ricardo:$1$3nCCw4iW$IDKzECHw9iz8BnDLqawwq1:500:100::0:0:Ricardo dos Santos:/home/ricardo:/bin/csh
mkdir /home/ricardo
A senha do usuario luiz = 2luiz
luiz:$1$LMlJcyJ6$XCXEM7jWuD82ZiG3HK6yX1:501:100::0:0:Luiz Gouveia:/home/luiz:/bin/csh
mkdir /home/luiz
A senha do usuario jose = 4jose
jose:$1$2jLOSASd$JoCFpsUAIr9ezgb7ZnztL/:502:100::0:0:Jose de Lima:/home/jose:/bin/csh
mkdir /home/jose
A senha do usuario maria = 6maria
maria:$1$phatUqhg$UuZ8yM7g/k0mMcBa1Cwn20:503:100::0:0:Maria de Almeida:/home/maria:/bin/csh
mkdir /home/maria

Podemos observar que o script busca a base de usuário e seus respectivos nomes,
em uma lista externa aqui chamada lista_de_usuarios.txt.
Utilizando a ferramenta openssl e a função passwd estamos criando hash's MD5 e formatando
a saída no formado default do /etc/master.passwd do FreeBSD.

Obs: Para evitar que uma senha seja facilmente descoberta criei uma variavel ${key}, incrementando a de dois em dois.