/etc/shadow
仮想マシンイメージ内でルートパスワードを変更するには、手動で編集する必要があります。
/etc/shadow
パスワードを承認し、標準出力で互換性のあるパスワードハッシュを生成するためのコマンドラインツールはありますか?
答え1
次のコマンドを使用して同じ目的を達成できます。
方法1(md5、sha256、sha512)
openssl passwd -6 -salt xyz yourpass
注:渡すと、-1
MD5パスワード、-5
SHA256、および-6
SHA512が生成されます(推奨)。
方法2(md5、sha256、sha512)
mkpasswd --method=SHA-512 --stdin
このオプション--method
はmd5
、、、sha-256
sha-512
方法3(des、md5、sha256、sha512)
@tinkが提案したように、以下を使用してパスワードを更新できますchpasswd
。
echo "username:password" | chpasswd
またはで暗号化されたパスワードを使用できますchpasswd
。まず、次のコマンドを使用して生成します。
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
その後、生成されたパスワードを使用して更新できます/etc/shadow
。
echo "username:encryptedPassWd" | chpasswd -e
また、このパスワードを使用して暗号化した後に新しいユーザーを作成することもできます。たとえば、次のようになります。
useradd -p 'encryptedPassWd' username
答え2
Ubuntu 12.04にはmkpasswd(whoisパッケージにあります)があります。 crypt(3) に対する過度の機能を備えたフロントエンド
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
どこ:
-m
=パスワードを計算するには、TYPEメソッドを使用してください。 TYPEが役に立つと、利用可能なメソッドを印刷します。-S
=塩を使用する。
例えば
$ mkpasswd -m help
-s = Read password from stdin
答え3
このソリューションには次の利点があります。
追加のインストールは不要
シェル履歴にパスワードを保存しないでください
あなたのためのランダムな塩生成
現代的で強力なハッシュアルゴリズムSHA-512を使用しています。
エラーを防ぐには、パスワードの再入力を求めるメッセージを表示してください。
$ python3 -c "from getpass import getpass; from crypt import *; \ p=getpass(); print('\n'+crypt(p, METHOD_SHA512)) \ if p==getpass('Please repeat: ') else print('\nFailed repeating.')"
Python 3.12以降
編集する:Python 3.13でこのモジュールが使用されなくなった場合は、crypt
次のコードスニペットを使用できます。
import os, base64, ctypes, getpass
salt = base64.b64encode(os.urandom(16), altchars=b"./").rstrip(b"=")
crypt = ctypes.CDLL("libcrypt.so.2").crypt
crypt.restype = ctypes.c_char_p
p=getpass.getpass()
if p==getpass.getpass("Please repeat: "):
print("\n"+crypt(p.encode(), b"$6$"+salt).decode())
else:
print("\nFailed repeating.")
アルファベット[./0-9A-Za-Z]
(B64、Base64と混同しないでください。)、システムcrypt
ライブラリのロード(Python_crypt
モジュールが使用中です)指定された形式(SHA512)で関数を呼び出し、crypt
項目を計算します。$6$
salt
OpenSSLソリューション
ただし、OpenSSLはシステムによく見られ、passwd
最新のアルゴリズムが含まれているように見えるコマンドを提供します。v1.1.1からそのため、使いやすくなります。
たとえば、-6
ここではSHA512であるアルゴリズム6を意味し、ソルトは自動的に生成されます。
$ openssl passwd -6
Password:
Verifying - Password:
$6$BIAw/F3wLlH4qofD$2dqhHKfCZNuLScGHKFdkEBmCwtTpInOZSwglqCAAeWgDVM7duqCZLJU69/Ie2LZHJMqUeT7mbx/.HLNrH50mk1
-salt
ただし、このパラメータは空のソルトを許可せず、ソルトに無効な値(たとえば)を許可するため、注意してください:
。
引用する
答え4
Debian ベースのシステムがない人のためです。 Python3もうまく動作します。
python3 -c 'import crypt, getpass; print(crypt.crypt(getpass.getpass()))'
getpass.getpass()
コマンドラインにパスワードを入力するように求められます。