Apache | 액세스(Access) 권한 | 비밀번호 파일 생성 (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>

확인까지 제대로 입력이 되었다면, 이제 새 비밀번호 파일이 생성되고 계정 하나가 추가되었다.

사용자 추가

이미 생성된 비밀번호 파일에 사용자를 추가하기 위해 “-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/

현재 “devkuma"와 “kimkc” 이렇게 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"행이 삭제된 것을 확인할 수 있다.

이것으로 비밀번호 파일이 준비되었다. 다음 페이지에서 인증을 실행해 보도록 하자.




최종 수정 : 2019-12-10