创buildLinux用户时如何设置指定的encryption哈希?

我想在我的电脑上创build一些Linux用户来testingJohnTheRipper对不同types的密码(包括长度,字符集和encryption哈希方法)。 如何轻松指定创build新用户时使用的哈希algorithm? 我知道文件/etc/login.defs包含variablesENCRYPT_METHOD,在许多Debian系统上默认设置为SHA512,但是我知道是否可以在不修改这个文件的情况下使用另一个encryption哈希。

ps:我试图修改这个文件,用命令adduser重新启动并创build一个新的用户,但是encryption哈希方法用户总是SHA512

谢谢

使用非默认散列方法设置密码的最简单方法是手动散列密码,然后在设置用户时提供该密码:

adduser --password HASHEDPASSWORD user 

HASHEDPASSWORD必须遵循系统的crypt函数标准( man 3 crypt ):

如果salt是以字符“$ id $”开头的string,然后是以"$"结尾的string:

  $id$salt$encrypted 

那么不是使用DES机器,而是使用id标识所使用的encryption方法,然后确定如何解释密码string的其余部分。 支持以下id的值:

  ID | Method --------------------------------------------------------- 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7) 

所以$5$salt$encrypted是SHA-256编码密码, $6$salt$encrypted是SHA-512编码密码。

要从命令行生成一个正确的哈希,你可以看看这里 。

经过一些testing,用不同的哈希algorithm创build不同用户的最佳方法是由3个步骤组成:

  1. 创build用户没有密码
  2. 使用指定的参数(盐,密码,哈希algorithm)创buildUNIX格式密码
  3. 在/ etc / shadow中设置生成的UNIX密码

这里是一个用户test1的例子,用密码1234md5作为哈希函数。

sudo adduser test1 --disabled-password sudo mkpasswd --method=md5 --salt=coolsalt 1234 $1$coolsalt$qTXiZzGn08J.xYkV1ce1y1

现在,只需编辑/ etc / shadow

编辑 test1:*:16559:0:99999:7::: 之前 test1:*:16559:0:99999:7:::

编辑 test1:$1$coolsalt$qTXiZzGn08J.xYkV1ce1y1:16559:0:99999:7:::

之后,您可以尝试使用此用户login以检查格式是否为正确。

whoami root su test1 Password: 1234 whoami test1

谢谢您的帮助