openssl passwd -1 $rootpw
其中 $rootpw 保存将成为您的 root 密码的字符串。
这将输出一个加密字符串,您可以将其放入文件或其他任何内容中。我在设置从数据库提供的虚拟服务器实例的脚本上使用它。我在通过网络发送它之前计算了这个哈希值,所以设置服务器的脚本可以使用这个哈希值,而不必发送纯文本。
为了回答您的问题,每台服务器计算哈希值的方式都会略有不同,并产生不同的哈希值,但所有这些哈希值都将等同于相同的密码。您可以使用这些哈希中的任何一个,并且在任何服务器上使用时它们在功能上都是等效的,即使哈希的实际内容不同。
例如,我对 foobar 进行了哈希处理,结果如下:
rootpw=foobar
openssl passwd -1 $rootpw
$1$6pXamKGD$TKQqON1prArop7DpLOyAk1
openssl passwd -1 $rootpw
$1$4A4Mn16f$P7ap2AqNMRK8m72bG/Bve0
openssl passwd -1 $rootpw
$1$DyhsWEMX$i2wH6JpAqoHNFZ0YOBVHj/
openssl passwd -1 $rootpw
$1$m27FIj5e$LZPxVniAeUoZcuUoNHK8c/
openssl passwd -1 $rootpw
$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0
即使在同一台机器上计算,这些哈希中的每一个都是不同的,但它们中的任何一个都可以用来等同于任何机器上的密码“foobar”。
因此,只需打开 /etc/shadow 并将其粘贴到您找到该行的位置:
root:$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0:14415:0:99999:7:::
在我的脚本中,我在 :'s 处分解它并更新元素 [1],然后将数组连接回字符串并替换文件中的字符串。如果你愿意,你可以做不同的事情,特别是如果你知道旧值(你可以通过将它分解成一个数组来获得)。
我知道这个问题已经有几个月了,所以你可能已经弄清楚了,但我把它放在那里是为了让未来的谷歌人找到这个问题。