web-dev-qa-db-fra.com

Comment ajouter un utilisateur sans connaître la forme cryptée du mot de passe?

J'utilise la commande suivante pour créer un utilisateur dans une machine Linux:

useradd -d /home/dummy -g idiots -m -p 12345689 dummy

L'utilisateur est créé et le répertoire de base également.
Le problème est que je ne peux pas vous connecter au système à l'aide de ce compte puisque le -p S'attend à ce que le mot de passe crypté renvoyé par crypto.

Question: Je veux créer un utilisateur via un script Bash et je ne connais pas le mot de passe crypté par crypto. Comment puis-je le faire afin que je puisse créer automatiquement cet utilisateur via un script et obtenir le problème avec le mot de passe?

8
Jim

Vous pouvez utiliser OpenSSL pour générer des chaînes de mots de passe pré-cryptées à utiliser avec l'option -p vers UserAddd

echo "P4sSw0rD" | openssl passwd -1 -stdin

$1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1

Le -1 dit de générer un hachage de mot de passe MD5. Le sel est généré automatiquement.

Vous pouvez ensuite utiliser

useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy

pour ajouter l'utilisateur. Pour ce faire cacher de manière interactive le mot de passe

useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy
13
user9517

C'est comme ça que je le fais:

# 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
3
ThorstenS

Comme vous allez utiliser un script Bash, le bon vieux newusers commander vous serait utile? Il lit son entrée à partir d'un fichier texte formaté comme suit:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_Shell

Et le mot de passe dans ce fichier devrait être un texte clair. Vous pouvez énumérer autant d'utilisateurs que vous le souhaitez dans le fichier d'entrée.

Pour plus d'informations, voir man newusers.

2