Sabía que había otro comando para crear usuarios que es useradd pero que Debian/Ubuntu no lo recomendaban. La única explicación que encontré hasta ahora es que es un poco más complejo de configurar para que te cree el usuario de la misma forma que el useradd, pero tiene la gran ventaja que puedes ejecutarlo sin que te pregunte nada de nada, lo que es ideal para un script.
Así que eché un ojo a la página del manual (man useradd) y leí algunas cosaillas por ahí en foros y blogs. Quizá la principal (además del man) fue este blog (en inglés).
Al grano. Lo primero que necesito es obtener la contraseña encriptada ya que useradd no admite contraseñas sin encriptar. Para ello uso la función crypt de perl. Simplemente en la línea de comando escribís:
$ perl -e 'print crypt("nuevacontraseña", "salt"),"\n"'
Evidentemente en nuevacontraseña ponéis lo que queráis. El salt es un sistema para mejorar la potencia de las contraseñas (leer esto para más información). Os saldrá un código más o menos extraño:
saTg/XiUTviOS
Esa será nuestra contraseña encriptada. A continuación hay que saber del comando useradd los parámetros siguientes:
-G: Para meter al usuario en varios grupos.
-m: para indicarle que tiene que crear el directorio del usuario y copiar ahí los archivos base para el usuario (lo que se denomina skel).
-p: la password encriptada
-s: El shell a usar. Es muy curioso porque el manual dice que coge el shell por defecto si no se indica nada pero al menos en el Ubuntu 10.04 donde lo probé no fue así. Tuve que indicarle la variable $SHELL (que en Ubuntu contiene /bin/bash) para que funcionara bien.
Y teniendo esto en cuenta, no suponiendo que el nombre de usuario es nuevousuario y que lo quiero meter en los grupos sambashare, sudo cdrom y audio el comando quedaría:
$ sudo useradd -G cdrom,audio,sambashare,sudo -m -p saTg/XiUTviOS -s $SHELL nuevousuario