web-dev-qa-db-ja.com

パスワードを入力せずにコマンドラインからhtpasswdの生成を自動化する方法は?

コマンドラインからのパスワードの作成を自動化しようとしています。以下を試しましたが、それでもパスワードを要求され続けます。

echo "test101" | htpasswd -c ~/temp/password admin

パスワードを入力せずにコマンドラインから自動htpasswdを生成するにはどうすればよいですか?

18
Tampa

使用しない理由:

htpasswd -b -c ~/temp/password admin test101
31
GavinCattell

-bスイッチでうまくいくはずですが、パスワードはプロセスリスト(psなど)を介してシステム上の他のユーザーに表示されます。

htpasswd -b -c ~/temp/password admin test101

htpasswdがインストールされていない場合(たとえば、nginxを使用している場合)、opensslを使用してパスワードを生成できます。

printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd
8
elim

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ファイルが数秒間そこにある場合でも、他の人が読み取れないようにしてください。

1
ender.center