我已经尝试了几种在 SL 6.5 上生成加密密码的不同方法,但似乎没有什么对我有用。我在各种 /var/log/anaconda* 文件中的任何地方都没有发现任何错误,但我无法登录,所以它显然不起作用。
/root/anaconda-ks.cfg
我用作模板的原始自动创建文件如下所示:
rootpw --iscrypted $6$...(about 100 characters)
authconfig --enableshadow --passalgo=sha512
接下来我尝试openssl passwd -1
了它给了我:
rootpw --iscrypted $1$...(about 30 characters)
authconfig --enableshadow --passalgo=sha512
我意识到这不是 SHA-512,所以我尝试了一个在几个地方重复的 Python 单线:
rootpw --iscrypted $6...(about 10 characters)
authconfig --enableshadow --passalgo=sha512
没有任何作用;我无法登录,最终不得不在单用户模式下重置 root 密码。
确保您的机器上有 shadow 和 passalgo=sha512,将 root 密码设置为您想要在该机器上使用的任何密码,然后从 /etc/shadow 中获取并将其放入 kickstart。这不建议用于生产用途。
要以编程方式进行,请使用生成 kickstart 文件的所选语言的 crypt 库:
红宝石:
PHP:
珀尔:
Python:
强烈建议您每次都使用随机盐,就像我在这里所做的那样,特别是如果您在所有服务器上使用相同的密码。
编辑: Python 3:
将调用替换为
os.random
crypt 特定的mksalt
.请参阅Python 标准库:crypt :
crypt.mksalt()
:“返回指定方法的随机生成的盐。如果没有给出方法,则使用由 methods() 返回的最强方法”编辑:
1) '$6$' 用于 SHA512。您需要将其替换为您选择的加密类型。
2)您也可以将其中任何一个转换为一个衬里,以便从 bash 中完成。
编辑(有一个完整的答案,感谢miken32和dawud):
3)与 GNU 相比,BSD crypt 是一种不同的实现,因此它们不兼容。如果您想在 BSD 系统(如 OSX)上使用它,您可以使用 PHP(PHP 版本 > 5.3.0)版本,因为它实现了自己的crypt()函数。
mac 上的另一种选择是使用passlib:
或者,使用 glibc 的默认编号。回合数(5000):
此处记录了生成散列密码的方式。
它不适合您的原因是因为您使用 Mac 来生成哈希。该
crypt
实现与 GNU/Linux 不同。从
crypt(3)
手册页:OSX
$id$
中不存在该扩展crypt
对于 SHA512,您需要在 GNU/Linux 机器中生成哈希。
有关为 kickstart 选项生成散列密码的更多信息的新文档位置
--iscrypted
::http://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#rootpw
上面的 Python 示例不完整:
一个工作的单线将是:
在 Python 3 下