コマンドラインからのパスワードの作成を自動化しようとしています。以下を試しましたが、それでもパスワードを要求され続けます。
echo "test101" | htpasswd -c ~/temp/password admin
パスワードを入力せずにコマンドラインから自動htpasswd
を生成するにはどうすればよいですか?
使用しない理由:
htpasswd -b -c ~/temp/password admin test101
-b
スイッチでうまくいくはずですが、パスワードはプロセスリスト(ps
など)を介してシステム上の他のユーザーに表示されます。
htpasswd -b -c ~/temp/password admin test101
htpasswd
がインストールされていない場合(たとえば、nginxを使用している場合)、opensslを使用してパスワードを生成できます。
printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd
Htpasswdのmanページから、次のようになります。
-i検証せずにstdinからパスワードを読み取ります(スクリプトの使用のため)。
したがって、あなたの質問によると、このようなものが機能するはずです:
echo "test101" | htpasswd -c -i ~/temp/password admin
ただし、パスワードは履歴とプロセスリストに表示されます。
コマンドラインからのパスワードの作成を自動化するには、プレーンパスワードをファイルに書き込み、次のようなことを行います。
htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain
その後、pass_plainファイルを削除します。
また、pass_plainファイルが数秒間そこにある場合でも、他の人が読み取れないようにしてください。