Cómo agregar un usuario de Linux con una contraseña aleatoria o no válida desde un script

Cómo agregar un usuario de Linux con una contraseña aleatoria o no válida desde un script

Quiero agregar un usuario al sistema Linux desde un script, pero no quiero inventar ni cuidar la contraseña. Esto debería hacerse automáticamente.

El objetivo es generar claves ssh y este usuario sólo necesita iniciar sesión de forma remota. O alternativamente, este usuario será utilizado por un usuario sudo a través de sudo su - thatuser.

Quiero ahorrarme la molestia de inventar y escribir alguna contraseña segura cada vez que creo un usuario de este tipo, y también hacerlo desde scripts.

Nadie debería poder iniciar sesión con una contraseña como este usuario, así que mi idea es que obtenga una buena contraseña aleatoria pero nadie la sepa.

Podría escribir un script que genere algo aleatorio, pero ¿quizás haya algo integrado? O simplemente desactive la contraseña (para que no sea posible iniciar sesión con contraseña, pero el inicio de sesión ssh con claves sudo su - thatuserfunciona bien).

Editar:Ya hay algunas respuestas, genial, pero todavía no estoy seguro de cómo hacerlo. ¿Cómo sería el guión?

Debería comportarse como adduser y crear todo lo estándar (como el directorio de inicio estándar, el esqueleto copiado, el grupo con el mismo nombre).

Editar2:Al final y con tu ayuda encontré una solución que funciona y quiero compartirla. Este es un script que llamo "adduser-nopasswd" y lo puse en /usr/local/sbin (¿es este un buen lugar?) y sólo puede ser ejecutado por root. Se necesita un argumento, que es el nombre del nuevo grupo y usuario al mismo tiempo:

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME

¿Algún comentario sobre esta función?

Respuesta1

Si no especifica una contraseña, useraddno se establecerá (y, por lo tanto, el usuario no podrá iniciar sesión mediante contraseña). Tenga en cuenta que useraddy adduserson dos comandos diferentes.

Lo siguiente debería crear el nuevo usuario con su propio grupo, crear su directorio de inicio (en la ubicación predeterminada, ya que no especificamos ninguna ubicación) y copiar los archivos esqueleto.

useradd --create-home <user>

Luego simplemente crea el directorio .sshen su directorio de inicio, (SSH chmodquerrá 0700esto por seguridad) y coloca la clave pública del usuario .ssh/authorized_keys(el par de claves privada/pública debe ser generado por el propio usuario, en su/ su propia computadora).

Si desea desactivar la contraseña de una cuenta ya existente, puede utilizar lo siguiente.

usermod --lock <user>

Respuesta2

La utilidad /usr/sbin/useradd siempre creó usuarios para mí sin requerir contraseñas. He escrito muchos scripts que tomaron el /etc/passwd de otro sistema y crearon usuarios para mí.

Alternativamente, si consulta la documentación de mercurial-server, verá cómo configurar muchas claves SSH (clientes) para ejecutar programas como un solo usuario en el lado del servidor.

Respuesta3

# cat user-pw_list
john:p455W0rD
geany:p455W0rD


# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
  USER=${REPLY%%:*}
  PWD=${REPLY##*:}
  # alternative for random passwd, where $RANDOM is a bash function
  #PWD=${REPLY%%:*}$RANDOM$RANDOM

  echo -e "adding User $USER "
  # for disabled users: /usr/sbin/nologin, otherwise /bin/bash
  /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
  echo "$USER:$PWD" | chpasswd --md5 $USER

  ## also add user to samba:
  #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done

Ok, agreguemos nuestros usuarios:

cat user-pw_list | ./CreateUsers.sh

Respuesta4

Coloque un * en el campo de contraseña en /etc/shadow (esto debería suceder si no establece una contraseña). Esto evitará que el usuario inicie sesión.

información relacionada