/etc/shadowのパスワードを手動で生成

/etc/shadowのパスワードを手動で生成

/etc/shadow仮想マシンイメージ内でルートパスワードを変更するには、手動で編集する必要があります。

/etc/shadowパスワードを承認し、標準出力で互換性のあるパスワードハッシュを生成するためのコマンドラインツールはありますか?

答え1

次のコマンドを使用して同じ目的を達成できます。

方法1(md5、sha256、sha512)

openssl passwd -6 -salt xyz  yourpass

注:渡すと、-1MD5パスワード、-5SHA256、および-6SHA512が生成されます(推奨)。

方法2(md5、sha256、sha512)

mkpasswd --method=SHA-512 --stdin

このオプション--methodmd5、、、sha-256sha-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()コマンドラインにパスワードを入力するように求められます。

関連情報