私はJessieバージョンのDebianを作成しています。パスワードは/etc/shadow
ビルドツリーに保存されますが、明らかにソルトされているため、ファイル編集だけでは変更できません。これが私のインストールされているシステムであればに電話することができますが、passwd
ここではビルドツリーのファイルのパスワードを変更したいと思います。
新しいバージョンでSDをフラッシュする前にルートパスワードを変更するにはどうすればよいですか?
答え1
ファイルを含むディレクトリツリーを含む手順…/etc/shadow
(ファイルシステムイメージを構築する前)で、必要なパスワードハッシュを挿入するようにファイルを変更します。
最も簡単な方法は、十分に新しいバージョンを使用することです。chpasswd
Linuxシャドウユーティリティスイートのツール(Debian wheezyは十分に新機能です)とこの-R
オプション。使用例:
chpasswd -R /path/to/build/tree <passwords.txt
passwords.txt
次の行が含まれています。
root:swordfish
alibaba:opensesame
ビルド環境がそれをサポートしていない場合は、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")