web-dev-qa-db-fra.com

userAdd ne cryptage pas les mots de passe dans / etc / shadow

J'ai trébuché sur ce problème lorsque vous essayez de créer de nouveaux utilisateurs FTP pour VSFTPD. Lors de la création d'un nouvel utilisateur avec la commande suivante et d'essayer de vous connecter avec FileZilla, je recevrais une erreur "mot de passe incorrect".

useradd f -p pass -d /home/f -s /bin/false

Après cela, /etc/shadow contient

f:pass:1111:0:99:2:::

Une fois que j'ai exécuté la commande suivante et fournissez la même carte PASS

passwd f

/etc/shadow contient

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Il semble que le cryptage arrive lorsque je cours passwd, mais pas sur serAdd

Surtout après cela, je suis capable de vous connecter à FTP avec les mêmes informations d'identification.

J'utilise Centos 5.11, VSFTPD pour FTP et FileZilla pour l'accès FTP

/var/log/sécurisé Contient:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, Shell=/bin/false

Pourquoi ne fonctionne-t-il pas quand je passe -p pass à userAddd? Que dois-je faire pour le faire fonctionner?

20
BadToTheBone

Cela fonctionne comme prévu. Si vous souhaitez définir un mot de passe à l'aide de la commande useradd _, vous êtes censé donner une version hachée du mot de passe à useradd.

La chaîne pass satisfasse les critères de format pour le champ de mot de passe haché dans /etc/shadow, mais aucun mot de passe réel n'a atteint cette chaîne. Le résultat est que, à toutes fins utiles, ce compte se comportera comme ayant un mot de passe, mais tout mot de passe que vous essayez d'utiliser pour y accéder sera rejeté comme n'étant pas le mot de passe correct.

Voir man useradd ou la Documentation UserAdd :

-p, --password [~ # ~] mot de passe [~ # ~]

Le mot de passe crypté, tel que retourné par Crypt (3) . La valeur par défaut est de désactiver le mot de passe.

Remarque: cette option n'est pas recommandée car le mot de passe (ou le mot de passe crypté) sera visible par les utilisateurs répertoriant les processus.

Vous devez vous assurer que le mot de passe respecte la stratégie de mot de passe du système.

43
kasperd

manserAdd :

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Vous êtes censé transmettre un mot de passe haché.
Pas un mot de passe en clair.

32
faker

useradd vous attend que vous transmettez le hachage du mot de passe, pas le mot de passe lui-même. Vous pouvez utiliser la variation suivante de votre commande pour fournir un mot de passe haché à la commande useradd:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Pour connaître les méthodes disponibles, utilisez:

mkpasswd --method=help

Afin d'éviter de transmettre le mot de passe sur la ligne de commande, placez le mot de passe dans un fichier (à l'aide d'un éditeur et n'utilisez pas echo ou similaire) et faites ceci:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Cela passera le mot de passe haché sur la ligne de commande, mais pas le plaint.

mkpasswd est livré avec le package expect.