给定一个Linux用户名和密码如何testing它是否是一个有效的帐户?

所以我的问题是直接给出一个Linux用户名和密码我怎么testing,如果它是一个有效的帐户?

您可以使用影子文件验证给定用户名的给定密码是否正确。

在大多数现代发行版中,散列密码存储在影子文件/ etc / shadow中(只能由root用户读取)。 以root身份,从给定用户的影子文件中拉出这样的行:

cat /etc/shadow | grep username 

你会看到这样的东西:

 username:$1$TrOIigLp$PUHL00kS5UY3CMVaiC0/g0:15020:0:99999:7::: 

用户名后有$ 1。 这表明它是一个MD5散列。 之后有另一个$,然后(在这种情况下)TrOIigLp后跟另一个$。 TrOIigLp是盐。 之后是使用盐进行散列的散列密码 – 在这种情况下是PUHL00kS5UY3CMVaiC0 / g0。

现在,您可以使用openssl来使用相同的salt来散列给定的密码,如下所示:

 openssl passwd -1 -salt TrOIigLp 

出现提示时输入给定的密码,openssl命令应该使用提供的salt计算MD5哈希值,并且应该与影子文件中的上述内容完全相同。 上述命令中的-1用于MD5散列。