Un requerimiento que tuve era agregar usuarios a un linux mediante un shell script. La verdad es que dije “listo”, piece of cake, pero al final estuve todo un dia investigando como poder hacerlo hasta que di con la solucion. Aca el problema y su final.

Para agregar un usuario al linux simplemente usamos

$ useradd rodrigo

Esto agrega un usuario rodrigo al sistema pero sin password asignada, o sea, el usuario no esta habilitado aun para loguearse. Debemos a continuacion hacer esto.

$ passwd rodrigo
Enter new UNIX password:

OK, no pude de ninguna manera simular el input del usuario en un script (no porque no se pueda, solo no encontre como) entonces empece a leer y encontre que useradd puede obtener un parametro -p <ENCRYPTED PASS>. OK ahora lo ultimo era como carajo encryptar una password. Bueno, leyendo otro poco mas hizo que me baje un programa para hacerlo y termine con el siguente script.

$ apt-get install makepasswd

Este es el encryptador y debajo el script final

#This script will be used to add users to the system
# usage ./myadduser.sh USERNAME PASSWORD

useradd -m $1

echo $2 >> passfile
ph=$(makepasswd --clearfrom=passfile --crypt | awk '{print $2}')
usermod -p $ph $1
rm passfile

 

Para usar este script solo tenemos que hacer lo siguiente:

$ ./myadduser.sh rodrigo mipasswd