Apache | アクセス権限 | パスワードファイルの作成(htpasswd)

ユーザー認証時に参照されるパスワードファイルを作成し、そこに新しいユーザーも追加してみる。

パスワードファイル作成コマンド

ユーザー認証時に参照されるファイルがパスワードファイルである。ユーザー名とパスワードがペアで登録されている。パスワードファイルは実際にはテキストファイルだが、作成にはApacheが提供するhtpasswd.exeを使用する。

htpasswd.exeファイルは(Apacheがインストールされているディレクトリ)\Apache24\binに含まれている。

C:\apache\Apache24\bin>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: XXXX-XXXX

 C:\apache\Apache24\bin 디렉터리

2019-11-26  오후 10:39    <DIR>          .
2019-11-26  오후 10:39    <DIR>          ..
2019-08-09  오후 11:47            97,280 ab.exe
2019-08-09  오후 11:47           109,056 abs.exe
2019-08-09  오후 11:47            41,984 ApacheMonitor.exe
2019-08-09  오후 11:47            18,432 apr_crypto_openssl-1.dll
2019-08-09  오후 11:47            31,232 apr_dbd_odbc-1.dll
2019-08-09  오후 11:47            14,848 apr_ldap-1.dll
2019-08-09  오후 11:50             9,192 dbmmanage.pl
2019-08-09  오후 11:47           100,352 htcacheclean.exe
2019-08-09  오후 11:47           123,392 htdbm.exe
2019-08-09  오후 11:47            84,992 htdigest.exe
2019-08-09  오후 11:47           117,760 htpasswd.exe <<<<<<<<<<<<<<<<<<<<<<< 여기 있다.
2019-08-09  오후 11:50            29,696 httpd.exe
2019-08-09  오후 11:47            65,024 httxt2dbm.exe

... 省略 ...

2019-04-05  오후 07:30            86,016 zlib1.dll
              30개 파일           9,142,248 바이트
               3개 디렉터리  453,122,154,496 바이트 남음

C:\apache\Apache24\bin>

Windowsで実行するには、コマンドプロンプトから実行する。実行形式は次のとおりである。

htpasswd オプション パスワードファイル ユーザー名

作成するパスワードファイルを指定し、追加するユーザー名を指定する。パスワードファイルを新しく作成する場合は、オプション-cを指定する。既存のパスワードファイルにユーザーを追加する場合は、オプションを何も指定しない。

パスワードを新規作成する場合:

htpasswd -c "C:\apache\passwd\passfile" devkuma

ユーザーを追加する場合:

htpasswd "C:\apache\passwd\passfile" kimkc

新しいパスワードファイルの作成

では新しいパスワードファイルを作成してみる。まずコマンドプロンプトを開き、(Apacheがインストールされているディレクトリ)\Apache24\binへ移動し、htpasswd -c "C:\apache\passwd\passfile" devkumaコマンドを入力して実行する。

コマンドを実行する前に、作成するファイルのディレクトリが作成されている必要がある。ディレクトリがない場合、次のようにエラーが発生する。

C:\apache\Apache24\bin>htpasswd -c "C:\apache\passwd\passfile" devkuma
htpasswd: cannot create file C:\apache\passwd\passfile

コマンドを実行して問題がなければ、次のようにパスワード入力欄が表示される。

C:\apache\Apache24\bin>htpasswd -c "C:\apache\passwd\passfile" devkuma
New password: 

追加するユーザーの新しいパスワードを入力する。すると確認のため、再度パスワード入力欄が表示される。

C:\apache\Apache24\bin>htpasswd -c "C:\apache\passwd\passfile" devkuma
New password: ****
Re-type new password: 

新しいパスワードと同じパスワードを入力する。

C:\apache\Apache24\bin>htpasswd -c "C:\apache\passwd\passfile" devkuma
New password: ****
Re-type new password: ****
Adding password for user devkuma

C:\apache\Apache24\bin>

確認まで正しく入力できれば、新しいパスワードファイルが作成され、アカウントが1つ追加される。

ユーザーの追加

すでに作成されているパスワードファイルにユーザーを追加するには、-cを付けずに実行する。-cを付けると新しいパスワードファイルが作成され、既存の登録ユーザー情報が消えるため注意する。

C:\apache\Apache24\bin>htpasswd "C:\apache\passwd\passfile" kimkc
New password: ****
Re-type new password: ****
Adding password for user kimkc

C:\apache\Apache24\bin>

コマンドの入力方法は、新しくパスワードファイルを作成する方法と同じである。

パスワードファイルの確認

では、作成されたパスワードファイルの内容を確認してみる。テキストファイルなので、テキストエディタで開くことができる。

devkuma:$apr1$H.4gZ1un$LTl9FvfcbxRrRKfqZ4Txy0
kimkc:$apr1$/P6swipC$60iAhelYy/0i6bVbhPHy5/

現在、devkumakimkcの2つのアカウントが作成されている。パスワードは暗号化されて保存されているため、内容は分からない。

ユーザーの削除

ユーザーの削除は、パスワードファイルから該当行を削除してもよいが、-Dオプションで実行して削除することもできる。実行形式は次のとおりである。

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

では、kimkcアカウントを削除してみる。

htpasswd -D "C:\apache\passwd\passfile" kimkc
C:\apache\Apache24\bin>htpasswd -D "C:\apache\passwd\passfile" kimkc
Deleting password for user kimkc

C:\apache\Apache24\bin>

kimkcが削除された。確認のためパスワードファイルを開く。

devkuma:$apr1$H.4gZ1un$LTl9FvfcbxRrRKfqZ4Txy0

kimkc行が削除されたことを確認できる。

これでパスワードファイルの準備ができた。次のページで認証を実行してみる。