Me topé con este problema al intentar crear nuevos usuarios FTP para vsftpd. Al crear un nuevo usuario con el siguiente comando e intentar iniciar sesión con FileZilla, obtendría un error de "contraseña incorrecta".
useradd f -p pass -d /home/f -s /bin/false
Después de hacer esto, / etc / shadow contiene
f:pass:1111:0:99:2:::
Una vez que ejecuto el siguiente comando y proporciono el mismo pase
passwd f
/ etc / shadow contiene
f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::
Parece que el cifrado ocurre cuando ejecuto passwd , pero no con useradd
Es importante destacar que después de hacer esto, puedo iniciar sesión en FTP con las mismas credenciales.
Estoy usando CentOS 5.11, vsftpd para FTP y FileZilla para acceso FTP
/ var / log / secure contiene:
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
¿Por qué no funciona cuando paso -p pass
a useradd? ¿Qué necesito hacer para que funcione?
/var/log/secure
$1$
cuenta que en un hash de contraseña, indica que se utiliza MD5 . MD5, aunque no es absolutamente terrible para las contraseñas, está más bien débil en estos días. Es una pregunta completamente separada, pero le recomiendo que considere migrar a una función hash más fuerte./etc/shadow
Respuestas:
Eso está funcionando según lo previsto. Si desea establecer una contraseña con el
useradd
comando, debe proporcionar una versión hash de la contraseñauseradd
.La cadena
pass
satisface los criterios de formato para el campo de contraseña hash/etc/shadow
, pero no hay hash de contraseña real para esa cadena. El resultado es que, a todos los efectos, esa cuenta se comportará como una contraseña, pero cualquier contraseña que intente utilizar para acceder a ella será rechazada por no ser la contraseña correcta.Consulte
man useradd
o la documentación de useradd :fuente
man
useradd :Se supone que debe pasarle una contraseña hash.
No es una contraseña de texto sin formato.
fuente
useradd
espera que le pase el hash de la contraseña, no la contraseña en sí. Puede usar la siguiente variación en su comando para proporcionar una contraseña hash para eluseradd
comando:Para conocer los métodos disponibles, use:
Para evitar pasar la contraseña en la línea de comando, coloque la contraseña en un archivo (usando un editor y no usando
echo
o similar) y haga esto:Esto pasará la contraseña hash en la línea de comando, pero no la de texto sin formato.
mkpasswd
Viene con elexpect
paquete.fuente
passwd
para cambiar a otra cosa ......