Basic認証用のユーザーを作成する(htpasswdコマンド)

Apache でユーザーを作成すると Basic 認証を使って指定したディレクトリやファイルに対するアクセス制限を行うことができます。 Apache では Basic 認証で使用するユーザーを作成するために htpasswd コマンドを使用します。ここでは htpasswd コマンドを使って Apache で Basic 認証用のユーザーを作成する方法について解説します。

(Last modified: )

新しいパスワードファイルを作成してユーザーを作成する

Apache で作成するユーザーとパスワードの管理はデータベースを利用することもできますが、ここでは一番手軽にできるパスワードファイルを使った方法を解説します。パスワードファイルはテキストファイルであり、ユーザーとパスワード(デフォルトでは MD5 によるハッシュ化されたパスワード)がペアで保存されます。

初めてユーザーを追加するときには新しいパスワードファイルを作成し、作成したユーザーの情報を保存します。作成したパスワードファイルは、認証を設定するときにどこに保存しているパスワードファイルを使用するのかを指定します。

最初にパスワードファイルを保管するディレクトリを用意します。パスワードファイルはインターネット経由でアクセスする必要がないので、ドキュメントルート以下ではなくドキュメントルートと同じ階層かさらに上位の階層にディレクトリを作成して保管します。今回はドキュメントルートである htdocs と同じ階層に password というディレクトリを作成しました。

新しいパスワードファイルを作成してユーザーを作成する(1)

次に新しいパスワードファイルを作成します。パスワードファイルの作成には、 Apache をインストールしたディレクトリの中の bin ディレクトリにある htpasswd.exe を使用します。

新しいパスワードファイルを作成してユーザーを作成する(2)

コマンドプロンプトを起動し、 htpasswd.exe ファイルがあるディレクトリまで移動します。そのあとで次のように実行してください。

htpasswd -c パスワードファイル名 ユーザー名

新しいパスワードファイルを作成するときは -c をつけて実行します。パスワードファイルはフルパスで指定し、ユーザー名にはパスワードファイルを作成すると同時に最初に作成するユーザーの名前を指定します。

今回は次のように実行しました。作成するパスワードファイルのファイル名は passwords 、最初に作成するユーザーの名前は suzuki です。

htpasswd -c c:\pg\Apache24\password\passwords suzuki

すると次のように suzuki ユーザーのログイン用パスワードの入力待ちとなります。ログイン用パスワードを入力して Enter キーを押してください。

新しいパスワードファイルを作成してユーザーを作成する(3)

確認のために再度パスワードの入力待ちとなります。先ほどと同じパスワードをもう一度入力し Enter キーを押してください。

新しいパスワードファイルを作成してユーザーを作成する(4)

「Adding password for user suzuki」と表示されます。新しいパスワードファイルが作成されて、最初のユーザーが作成されました。

新しいパスワードファイルを作成してユーザーを作成する(5)

パスワードファイルを作成したディレクトリを見てみると、指定した名前でパスワードファイルが作成されていることが確認できます。

新しいパスワードファイルを作成してユーザーを作成する(6)

パスワードファイルはテキストファイルですので、テキストエディタで開いて中身を確認することができます。実際にテキストエディタで開いてみると、パスワードファイルに保存されているユーザーに関する情報が記載されています。ユーザー毎にユーザー名とハッシュ化されたパスワードが記述されています。

新しいパスワードファイルを作成してユーザーを作成する(7)

作成済みパスワードファイルにユーザーを追加する

作成済みのパスワードファイルに新しいユーザーを追加することができます。書式は次のとおりです。

htpasswd パスワードファイル名 ユーザー名

既存のパスワードファイルに追加する場合は -c オプションを付けません。 -c オプションを付けると、既存のパスワードファイルを削除したうえで新しいパスワードファイルが作成されるので注意してください。

それではコマンドプロンプトを起動し、 htpasswd.exe ファイルがあるディレクトリまで移動します。そのあとで次のように実行してください。

htpasswd c:\pg\Apache24\password\passwords yamada

作成済みパスワードファイルにユーザーを追加する(1)

最初のユーザーのときと同じく今回追加する yamada ユーザーのログイン用パスワードの入力待ちとなります。二回同じパスワードを入力してください。「Adding password for user yamada」と表示されて、ユーザーの追加が完了します。

作成済みパスワードファイルにユーザーを追加する(2)

パスワードファイルをテキストエディタで開いて中身を確認してみると、先ほど追加した yamada が追加されていることが確認できます。

作成済みパスワードファイルにユーザーを追加する(3)

作成済みユーザーのパスワードを変更する

作成済みのユーザーのパスワードを変更するには次の書式を使います。

htpasswd パスワードファイル名 ユーザー名

これはユーザーを追加するときと同じです。パスワードの変更は改めてユーザーを登録しなおすとのと変わりがありません。

それでは作成済のユーザー yamada のパスワードを変更してみます。コマンドプロンプトを起動し、 htpasswd.exe ファイルがあるディレクトリまで移動します。そのあとで次のように実行してください。

htpasswd c:\pg\Apache24\password\passwords yamada

作成済みユーザーのパスワードを変更する(1)

yamada ユーザーのログイン用パスワードの入力待ちとなります。二回同じパスワードを入力してください。「Updating password for user yamada」と表示されて、ユーザーのパスワードの変更が完了します。

作成済みユーザーのパスワードを変更する(2)

ユーザーを削除する

作成済みのユーザーを削除するには次の書式を使います。

htpasswd -D パスワードファイル名 ユーザー名

それでは作成済のユーザー yamada を削除してみます。コマンドプロンプトを起動し、 htpasswd.exe ファイルがあるディレクトリまで移動します。そのあとで次のように実行してください。

htpasswd -D c:\pg\Apache24\password\passwords yamada

ユーザーを削除する(1)

「Deleting password for user yamada」と表示されて、ユーザーが削除されました。

パスワードファイルをテキストエディタで開いて中身を確認してみると、パスワードファイルから yamada が削除されていることが確認できます。

ユーザーを削除する(2)

-- --

htpasswd コマンドを使って Apache でユーザーを作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。