Kou*_*sha 5 linux compiling password
我正在构建 Debian 的 jessie 版本。密码保存在/etc/shadow
构建树中,但它们显然已加盐,因此我无法仅通过编辑文件来更改它。如果这是我安装的系统,我可以调用passwd
,但在这里我想更改构建树中文件中的密码。
在使用新版本刷新 SD 之前,如何更改 root 密码?
在您拥有包含文件的目录树的阶段…/etc/shadow
(在构建文件系统映像之前),修改该文件以注入您想要的密码哈希。
最简单的方法是使用chpasswd
来自 Linux shadow 实用程序套件(Debian wheezy 足够新)的最新版本的工具,并带有该-R
选项。示例用法:
chpasswd -R /path/to/build/tree <passwords.txt
Run Code Online (Sandbox Code Playgroud)
与passwords.txt
像含有线
root:swordfish
alibaba:opensesame
Run Code Online (Sandbox Code Playgroud)
如果您的构建环境不支持chpasswd -R
,您可以使用通过调用crypt
函数生成密码哈希的工具,并shadow
通过文本操作将其注入文件。例如(未经测试的代码):
#!/usr/bin/python
import base64, crypt, os, re, sys
for line in sys.stdin.readlines():
(username, password) = line.strip().split(":")
salt = "$6$" + base64.b64encode(os.urandom(6))
hashes[username] = crypt.crypt(password, salt)
old_shadow = open("etc/shadow")
new_shadow = open("etc/shadow.making", "w")
for line in old_shadow.readlines():
(username, password, trail) = line.lstrip().split(":", 3)
if hashes.has_key(username):
line = username + ":" + hashes[username] + ":" + trail
new_shadow.write(line)
old_shadow.close()
new_shadow.close()
os.rename("etc/shadow.making", "etc/shadow")
Run Code Online (Sandbox Code Playgroud)