仮想マシンイメージ内のルートパスワードを変更するには、/etc/shadow
を手動で編集する必要があります。
パスワードを受け取り、標準出力で/etc/shadow
互換のパスワードハッシュを生成するコマンドラインツールはありますか?
同じために次のコマンドを使用できます。
openssl passwd -6 -salt xyz yourpass
注:-1
を渡すとMD5パスワードが生成され、-5
はSHA256と-6
SHA512が生成されます(推奨)
mkpasswd --method=SHA-512 --stdin
メソッドはmd5
、sha-256
およびsha-512
を受け入れます
@tinkが示唆したように、chpasswd
を使用してパスワードを更新できます。
echo "username:password" | chpasswd
または、chpasswd
で暗号化されたパスワードを使用できます。まずこれを使ってそれを生成します:
Perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
その後、生成されたパスワードを使用して更新できます。
echo "username:encryptedPassWd" | chpasswd -e
この暗号化されたパスワードを使用して、パスワードで新しいユーザーを作成できます。次に例を示します。
useradd -p 'encryptedPassWd' username
Ubuntu 12.04には、(whoisパッケージの)mkpasswdがあります:crypt(3)へのフロントエンドの機能過剰
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
どこ:
-m
= TYPEメソッドを使用してパスワードを計算します。 TYPEがヘルプの場合、使用可能なメソッドが出力されます。-S
=塩を使用。例えば。
$ mkpasswd -m help
-s = Read password from stdin
このソリューションには次の利点があります。
間違いを避けるためにパスワードの再プロンプトを出します。
$ 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.')"
現在の方法はどれも私には受け入れられません-コマンドラインでパスワードを渡すか(シェルの履歴に残る)、追加のユーティリティのインストールが必要です(python3
、makepasswd
)、ハードコードされたソルトを使用するか、古いハッシュ手法を使用します。
この方法では、パスワードの入力を求められた後にSHA-512ハッシュが生成され、ランダムなソルトが使用されます。
非標準ライブラリなしでPython 2を利用する方法:
python2 -c 'import crypt, getpass,os,base64; print crypt.crypt(getpass.getpass(), "$6$"+base64.b64encode(os.urandom(16))+"$")'
プロンプトなしでこれを行うには:(これにより、コマンド履歴にパスワードが残ります)
python2 -c 'import crypt, os,base64; print crypt.crypt("MyPassword", "$6$"+base64.b64encode(os.urandom(16))+"$")'
Debianベースのシステムを持たない人向け。 Python3も同様に機能します。
python3 -c 'import crypt; print(crypt.crypt("test"))'
注:文字列「test」は、暗号化された文字列として生成するパスワードです。
openssl
およびchpasswd -e
RHEL6で私の場合、ペアが機能しませんでした。結合openssl passwd
およびusermod -p
コマンドがジョブを実行しました。
パスワードのハッシュ値とソルト値を生成します。
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
次に、暗号化された文字列をusermodにコピーします。必ず一重引用符で囲んでください。
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
シャドウファイルで確認してください。
$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::
パスワードを生成するさらに別の方法は、openssl
ツールを使用することです。
MD5パスワードを生成する
openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/
DESパスワードを生成する
openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2
U150825とGert van den Bergの批判を少し広げると、私は、さまざまな自動化システムのさまざまな状況に比較的柔軟なものが必要だと気づきました。私は自分の便利なスクリプトの小さなライブラリに追加してこれを書くことにしました。 python 2.7+のネイティブライブラリのみを使用し、python3でも動作します。
よろしければ こちら を受け取ります。これをhttpホストなどで何度も使用する必要があり、デフォルトのpythonインタプリタを使用して任意のプラットフォームで実行できますあなたが利用できるようになったのは、かなり確実に機能することを期待しています。
デフォルトでは、stderrのプロンプトでgetpassを使用してプロンプトを表示します(stdoutを簡単にキャプチャできるようにします)が、それにストリングをパイプすると、stdinから取得するだけです。これをどのように行っているかによっては、コマンド履歴にも表示されない場合があります。そのため、作業している内容を認識してください。私は、パッケージに頼る必要がなく、python 10の異なる方法で勝利するために私の方法を1行で並べるよりも、期待どおりに動作する柔軟なツールを用意するのが好きです。