useradd ne crypte pas les mots de passe dans / etc / shadow

20

Je suis tombé sur ce problème en essayant de créer de nouveaux utilisateurs FTP pour vsftpd. En créant un nouvel utilisateur avec la commande suivante et en tentant de me connecter avec FileZilla, j'obtiendrais 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 fourni le même laissez- passer

passwd f

/ etc / shadow contient

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

Il semble que le cryptage se produit lorsque j'exécute passwd , mais pas lors de l' ajout de l' utilisateur

Surtout après avoir fait cela, je suis en mesure de me connecter à FTP avec exactement les mêmes informations d'identification.

J'utilise CentOS 5.11, vsftpd pour FTP et FileZilla pour l'accès FTP

/ var / log / secure 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 cela ne fonctionne-t-il pas lorsque je passe -p passà useradd? Que dois-je faire pour que cela fonctionne?

Pourri jusqu'à la moëlle
la source
Je ne vois pas de question là-bas? - Ces choses sont gérées via PAM et généralement connectées/var/log/secure
HBruijn
@HBruijn J'ai mis à jour ma réponse pour montrer ce qui est écrit dans / var / log / secure
BadToTheBone
2
Vraiment? +12 pour une question à laquelle la page de manuel correspondante répond explicitement?
un CVn
Notez que dans un hachage de mot de passe, $1$indique que MD5 est utilisé . MD5, bien qu'il ne soit pas carrément terrible pour les mots de passe, est plutôt du côté faible de nos jours. C'est une question entièrement distincte, mais je vous exhorte absolument à envisager de migrer vers une fonction de hachage plus puissante.
un CVn
2
Note latérale: les mots de passe /etc/shadowne sont pas chiffrés mais hachés
Tobias Kienzler

Réponses:

43

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

La chaîne passsatisfait aux critères de formatage du champ de mot de passe haché dans /etc/shadow, mais aucun mot de passe réel ne hache cette chaîne. Le résultat est qu'à 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 useraddou la documentation useradd :

-p, --password MOT DE PASSE

Le mot de passe crypté, tel que renvoyé 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 mot de passe crypté) sera visible par les utilisateurs répertoriant les processus.

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

kasperd
la source
32

manuseradd :

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

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

truqueur
la source
16

useradds'attend à ce que vous lui transmettiez le hachage du mot de passe, pas le mot de passe lui-même. Vous pouvez utiliser la variante suivante de votre commande pour fournir un mot de passe haché à la useraddcommande:

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 passer le mot de passe sur la ligne de commande, mettez le mot de passe dans un fichier (en utilisant un éditeur et non en utilisant echoou similaire) et procédez comme suit:

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 celui en texte brut.

mkpasswdest livré avec le expectpaquet.

En pause jusqu'à nouvel ordre.
la source
2
N'utilisez pas MD5! Utilisez SHA-2
Josef
9
Faites noter que cela expose temporairement le mot de passe à travers les différentes interfaces du noyau (tout processus est autorisé à lire la ligne de commande de tout autre processus) et peut entraîner étant enregistré dans le texte brut sur le disque par le biais $ HISTOIRE ou des mécanismes similaires.
un CVn
@ MichaelKjörling: Un très bon point. Veuillez voir ma réponse modifiée.
pause jusqu'à nouvel ordre.
1
Bien sûr, vous stockez toujours le mot de passe en texte brut sur le disque. Au moins, cela donne le choix à l'administrateur système. Peut-être qu'à ce stade, nous ferions mieux d'utiliser simplement un mot de passe factice au début et de courir immédiatement passwdpour le changer en quelque chose d'autre ......
un CVn
2
Absolument Dennis, c'est beaucoup mieux, mais le mot de passe se retrouve toujours sur le disque en texte brut. Dans certaines situations et sous certains modèles de menace, cela peut être un vrai problème. Il n'a pas a être.
un CVn