Script para adicionar usuários em massa no linux

Iniciado por DeamoN Cheat®, 24 de Maio de 2006, 20:39

tópico anterior - próximo tópico

DeamoN Cheat®

Colaboração: Amauri Tiago Marx

Quem nunca precisou criar usuários em massa em um servidor linux?

Muitas vezes para fazer isso, os administradores adicionam um usuário
no sistema, executam o comando shadowconfig off para desabilitar as senhas em shadow e passá-las para o arquivo passwd. Após isso, copiam a linha e apenas alteram o uid, e o nome da conta, ou seja, facilita a criação de usuários,porém tem-se a desvantagem de exigir algum trabalho manual e criar uma senha padrão.

Pesquisando a documentação do linux referente ao comando useradd,
percebemos que existe como passar a senha através do comando useradd -p, porém esta deve estar no formato shadow-MD5.

Para resolver esse empecilho na universidade onde trabalho, criamos um
script que adiciona usuários no sistema automaticamente utilizando para isso um arquivo de texto, o qual conterá o seguinte formato: conta,senha.

Para isso, criamos um arquivo em bash script chamado
adiciona_usuarios.sh
conforme abaixo:


#!/bin/bash

IFS='
'

for LISTA in `cat usuarios.txt | cut -d , -f 1`
do
senhausuario=`cat usuarios.txt | grep $LISTA | cut -d , -f 2`
senhacript=`/usr/bin/perl senha.pl $senhausuario`
varinvalido=`echo $senhacript | egrep '[ ]'`
# Adiciona usuario no sistema sem shell, cria a pasta e dá permissao
/usr/sbin/useradd $LISTA -s /bin/false -d /home/$LISTA -p $senhacript
/bin/mkdir -p /home/$LISTA
/bin/chown $LISTA /home/$LISTA -R
done

exit 0

Além disso ainda temos que ter 2 arquivos: usuarios.txt (arquivo que
conterá a exportação das contas dos usuários com suas respectivas senhas em texto plano) e o arquivo senha.pl (arquivo que irá transformar as senhas em texto plano dos usuários para o formato Shadow-MD5.

O arquivo usuarios.txt terá o seguinte conteúdo:

usuario1,senha1
usuario2,senha2
usuario3,senha3
usuario4,senha4

Para o script senha.pl funcionar, será necessário ter instalado no
sistema o perl e o módulo do perl chamado Crypt::PasswdMD5, o qual pode ser instalado via cpan (www.cpan.org). A base para a construção deste script foi obtida na internet através de uma mensagem do Henrique Pedroni Neto para uma lista
de discussão.

O script senha.pl será assim:

#!/usr/bin/perl

use Crypt::PasswdMD5;

# Criptografa a senha do usario
#

@itoa64=split(//,"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");

srand();
$salt="";
for($i=0;$i<8;$i++){
$salt .= "$itoa64[rand(64)]";
}
$password=$ARGV[0];
$md5_crypted_passwd = unix_md5_crypt($password,$salt);

print("$md5_crypted_passwd");

Junte todos esses arquivos no mesmo diretório, torne executável os
arquivos senha.pl e adiciona_usuarios.sh, com os comandos abaixo:

# chmod 755 adiciona_usuarios.sh senha.pl

Após ter adicionado os usuários e suas senhas no arquivo usuarios.txt,
execute o comando abaixo para adicionar os usuários no sistema:

# ./adiciona_usuarios.sh

Esse script serve apenas como exemplo simples de adição de usuários no sistema de forma mais automatizada.

FONTE: DICAS-L

100+