Necesito tener la capacidad de crear cuentas de usuario en mi Linux (Fedora 10) y asignar automáticamente una contraseña a través de un script bash (o de lo contrario, si es necesario).
Es fácil crear el usuario a través de Bash, por ejemplo:
[whoever@server ]# /usr/sbin/useradd newuser
¿Es posible asignar una contraseña en Bash, algo funcionalmente similar a esto, pero automáticamente:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
script.Respuestas:
Puede ejecutar el comando passwd y enviarle una entrada canalizada. Entonces, haz algo como:
fuente
echo
está integrado en el shell utilizado, lo que es común), al menos preocupante/proc/
.echo -e "password\npassword\n" | passwd
el 13.04echo 'myuser:mypass' | chpasswd
. Espero que ayude.También puedes usar chpasswd :
Por lo tanto, se cambia la contraseña de usuario
username
anew_password
.fuente
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, mientraspasswd
que no (no hay--stdin
opción).Me preguntaba lo mismo, y no quería confiar en un script de Python.
Esta es la línea para agregar un usuario con una contraseña definida en una línea bash:
fuente
useradd -p $(openssl passwd -1 $PASS) $USER
es más moderno, ya que los back-ticks están en desuso y$()
se recomiendan.useradd -m -p <password> -s /bin/bash <user>
, -m Crates directorio de inicio, -s especifica usuarios defualt shell, sustitutopassword
yuser
para sus necesidades.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Creo que esto es necesario en Ubuntu posteriores.El siguiente código funcionó en Ubuntu 14.04. Pruebe antes de usarlo en otras versiones / variantes de Linux.
fuente
--gecos
Me gustó el enfoque de Tralemonkey de
echo thePassword | passwd theUsername --stdin
aunque no funcionó para mí tal como está escrito. Sin embargo, esto funcionó para mí.-e
es reconocer\n
como nueva línea.sudo
es el acceso de root para Ubuntu.Las comillas dobles son para reconocer
$
y expandir las variables.El comando anterior pasa la contraseña y una nueva línea, dos veces, a
passwd
, que es lo quepasswd
requiere.Si no usa variables, creo que esto probablemente funcione.
Las comillas simples deberían ser suficientes aquí.
fuente
Lo siguiente funciona para mí y lo probé en Ubuntu 14.04. Es un trazador de líneas que no requiere ninguna entrada del usuario.
Tomado de @Tralemonkey
fuente
Puedes usar la opción -p.
Desafortunadamente, esto requiere que ingrese la contraseña usted mismo (donde passwd lo hace por usted). Desafortunadamente, no parece haber una utilidad estándar para hacer hash de algunos datos, por lo que deberá escribirlos usted mismo.
Aquí hay un pequeño script de Python que preparé para hacer el cifrado por usted. Suponiendo que lo llamó pcrypt, luego escribiría su línea de comando anterior a:
Un par de advertencias a tener en cuenta.
y aquí está pcrypt:
fuente
Revestimiento único para crear un usuario de sudo con directorio de inicio y contraseña.
fuente
--stdin
No funciona en Debian. Dice:Esto funcionó para mí:
Aquí podemos encontrar otras buenas maneras:
fuente
Puede usar esperar en su script bash.
De http://www.seanodonnell.com/code/?id=21
fuente
Sé que vendré en esto años más tarde, pero no puedo creer que nadie sugirió usermod.
Demonios, en caso de que alguien quiera hacer esto en una HPUX anterior, puedes usar
usermod.sam
.El -F solo es necesario si la persona que ejecuta el script es el usuario actual. Por supuesto, no necesita usar Perl para crear el hash. Puede usar openssl o muchos otros comandos en su lugar.
fuente
Aquí hay un script que lo hará por usted .....
Puede agregar una lista de usuarios (o solo un usuario) si lo desea, todo de una vez y cada uno tendrá una contraseña diferente. Como beneficio adicional, se le presenta al final del guión una lista de la contraseña de cada usuario. .... Si lo desea, puede agregar algunas opciones de mantenimiento del usuario
me gusta:
a la secuencia de comandos que establecerá la antigüedad de la contraseña, etc.
=======
===========
Espero que esto ayude.
Saludos, Carel
fuente
Lo he probado en mi propio script de shell.
$new_username
significa usuario recién creado$new_password
significa nueva contraseñaPara CentOS
Para Debian / Ubuntu
Para OpenSUSE
fuente
La solución de Tralemonkey casi también funcionó para mí ... pero no del todo. Terminé haciéndolo de esta manera:
2 detalles clave que su solución no incluyó, el
-n
eco evita que se agregue un\n
a la contraseña que se está cifrando, y las comillas simples protegen los contenidos para que no sean interpretados por el shell (bash) en mi caso.Por cierto, ejecuté este comando como root en un sistema CentOS 5.6 en caso de que alguien se lo pregunte.
fuente
La solución que funciona tanto en Debian como en Red Hat. Depende de Perl, utiliza hashes sha-512:
Uso:
Puede usarse efectivamente como una línea, pero tendrá que especificar la contraseña, la sal y el nombre de usuario en los lugares correctos usted mismo:
fuente
De IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Cree un archivo de texto, diga text.txt y complételo con el usuario: la contraseña se empareja de la siguiente manera:
Guarde el archivo text.txt y ejecute
Eso es. La solución es (a) escalable y (b) no implica imprimir contraseñas en la línea de comando.
fuente
fuente
Para RedHat / CentOS, aquí está el código que crea un usuario, agrega las contraseñas y lo convierte en un sudoer:
fuente
uso:
./my_add_user.sh USER PASSWD
código:
fuente