Ejecute adduser de forma no interactiva

198

Me gustaría usar el addusercomando para agregar un usuario (con contraseña deshabilitada) a través de un script de shell.

De manera predeterminada, le addusersolicita varios valores (por ejemplo, Nombre completo). ¿Hay alguna forma de enviar estos valores a través de la línea de comando? ¿O lo necesitaré en su useraddlugar?

Lorin Hochstein
fuente

Respuestas:

262

Use la --gecosopción para omitir la chfnparte interactiva.

adduser --disabled-password --gecos "" username

Todo está en la página del manual. No es la formulación más obvia aunque.

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will
          not ask for finger information if this option is given.

El campo GECOS es una lista separada por comas como tal: a Full name,Room number,Work phone,Home phonepesar de que la página del manual menciona finger information Detalles - Wikipedia

Espero que esto te ayude.

Zoke
fuente
41

useradd también puede agregar usuarios y no parece tener ningún tipo de mensaje incorporado.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Crear directorio de inicio de usuario
  • -p, --password: Especifique la contraseña del usuario; saltar para deshabilitarlo
  • -s, --shell: Shell predeterminado para el usuario de inicio de sesión

    En blanco utilizará el shell de inicio de sesión predeterminado especificado por la SHELLvariable en/etc/default/useradd

  • Sustituir <user>con el nombre de inicio de sesión
  • Sustituir <encryptedPassword>con la contraseña encriptada

Generando una contraseña hash:

Hay muchas implementaciones de crypt3 que pueden generar una contraseña hash. Todo es tu contraseña hash.

Basado en Sha-512

El formato de salida resultante: el mecanismo hash ( $6para sha-512), la sal aleatoria (los ocho bytes después del segundo signo de dólar $ASDF1234), el resto es la carga útil.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdes proporcionado por el whoispaquete)

DES basado:

El formato de salida resultante: los primeros 2 bytes son su sal, el resto es la carga útil. Todo es tu contraseña hash.

  • mkpasswd: mkpasswd(proporcionado por el whoispaquete)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • pitón: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
fuente
1
Las opciones que menciona no existen adduseren mi versión (reciente) de Ubuntu.
ᴠɪɴᴄᴇɴᴛ
1
@ ᴠɪɴᴄᴇɴᴛ adduseres distinta de useradd, confundiendo lo que sé.
ThorSummoner
1
Vaya, de hecho se perdió que usas casi su mismo nombre ... ¿no hay un BDFL que proteja el espacio de nombres de la línea de comandos? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 Esto es sólo un consejo general, trate de añadir -vo -vvo -vvva sus comandos ssh para ver cuál es incorrecto y buscar los mensajes de error aquí en SO o Google.
ThorSummoner
1
@KovacsAkos intente esto: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configysudo service ssh restart
JSBach