De tempos em tempos administradores de sistemas precisam criar um grande número de contas. Criá-las manualmente, além de ineficiente e propenso a erros, pode demorar uma eternidade. No entanto, imagine o caso de universidades ou escolas que recebem centenas ou mesmo milhares de novos alunos a cada semestre.
O Linux possui um utilitário feito sob medida para esta situação chamado mkpasswd. O comando mkpasswd, quando invocado sem argumentos, retorna uma senha. Mas, hoje vamos ver como gerar senhas automáticas no Linux.
Se você está querendo aprender ainda mais sobre o Terminal Linux, temos dois artigos importantes:
Comando Linux mkpasswd
Como dito antes, o comando sozinho vai gerar uma senha única. Com este comando, as senhas são aleatórias e consideradas forte. O comando mkpasswd está atrelado ao pacote Whois. Assim, é preciso instála-lo antes de executar o comando.
No Ubuntu, Linux Mint, Debian e derivados execute:
sudo apt install whois
No Fedora e derivados, execute:
sudo dnf install whois
No openSUSE e derivados:
sudo zypper install whois
Gerando senha forte e única no Linux
Agora com o Whois instalado, vamos para o comando. Como dito antes, não tem segredo.
mkpasswd
Como criar senhas em lote no Linux com o mkpasswd
Agora, imagine que você esteja criando 200 usuários novos. No entanto, precisa gerar a senha para cada um deles. Mas, se for fazer isso apenas com o comando para senha única, demorará uma eternidade. Desta forma, vamos recorrer a um shell script simples para criar quantas contas forem necessárias. Além disso, ele vai atribuir a cada usuário uma senha. Contudo, para efeito de nosso exemplo considere que a lista dos usuários a ser criados encontra-se no arquivo novos-usuarios.txt.
#!/bin/bash
for usuario in `cat novos-usuarios.txt`
do
useradd $usuario
mkpasswd $usuario > $usuario.senha
# Criação da carta ao usuário, contendo
# sua senha, normas de uso e recomenda-
# ções gerais
cat > $usuario.carta << EOF
Prezado Usuário(a),
Conforme sua solicitação, foi criada uma conta em nossos computadores
centrais com as seguintes especificações:
computador: computador.dominio.com.br
identificação: $usuario
senha: `echo $usuario.senha`
Solicitamos a memorização das informações contidas neste documento e sua
destruição em seguida devido ao caráter confidencial destas informações.
Realize a troca de sua senha já em seu primeiro acesso para algo que
lhe seja mais fácil de lembrar.
Lembre-se, nunca divulgue a sua senha de acesso para ninguém. A
segurança de seus dados e do sistema como um todo dependem de você.
Para maiores informações consulte o endereço
http://www.dominio.com.br/suporte ou envie uma mensagem para
[email protected]
Atenciosamente, Suporte Técnico - Centro de Computação
EOF
lpr $usuario.carta
rm $usuario.*
done
Explicando a geração de senha em lote com o mkpasswd
O processo acima cria a conta do novo usuário. Depois, atribui-lhe uma senha inicial de acesso e imprime, na impressora padrão do sistema, uma carta a ser entregue ao novo usuário. Assim, os comandos useradd e mkpasswd aceitam diversas opções, que podem ser usadas para especificar com mais precisão o ambiente do usuário.
Mas, para simplicidade de entendimento, os comandos empregados na shell script acima utilizaram os valores padrão. Assim, saiba que após o processamento todos os arquivos temporários são removidos. Problemas acontecem. Recomendamos sempre que se gere um backup dos arquivos envolvidos /etc/passwd, /etc/shadow e /etc/group) antes da execução deste script. Além disso, outra recomendação importante é que todas as senhas criadas por este método sejam expiradas. E com isso, requeremos do usuário a sua troca quando fizer o primeiro login.