htpasswd - basic authentication에 사용할 사용자파일을 관리한다 - Apache HTTP Server Version 2.2

Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2 > Programs

#### Please note

This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

# htpasswd - basic authentication에 사용할 사용자파일을 관리한다

가능한 언어: en | ko | tr

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

`htpasswd`는 HTTP basic authentication에 사용할 사용자명과 암호를 저장하는 일반파일을 생성하고 수정한다. `htpasswd`가 파일을 쓰거나 읽을 수 없다면, 오류상태를 반환하고 아무것도 수정하지 않는다.

아파치 웹서버는 자원을 `htpasswd`로 만든 파일에 기록한 사용자에게만 보여줄 수 있다. 이 프로그램은 사용자명과 암호를 저장하는 일반 파일을 관리한다. 그러나 다른 자료저장 방식을 위해 암호 정보를 암호화하여 저장할 수 있다. DBM 데이터베이스를 사용하려면 dbmmanage를 참고하라.

`htpasswd`는 아파치 특유의 MD5 혹은 시스템의 `crypt()`를 사용하여 암호를 암호화한다. `htpasswd`가 관리하는 파일은 두 종류의 암호를 모두 저장할 수 있다. 즉, 같은 파일에 MD5로 암호화한 암호를 사용하는 사용자와 `crypt()`로 암호화한 암호를 사용하는 사용자 정보 모두 나올 수 있다.

이 manpage는 명령행 옵션만을 설명한다. httpd에서 사용자인증을 설정하는 지시어에 대한 설명은 아파치 배포본에 포함되있고 http://httpd.apache.org/에서도 볼 수 있는 아파치 설명서를 참고하라.

### 참고

- httpd
- 배포본에는 SHA1을 지원하는 스크립트도 있다.

- Comments

## 개요

`htpasswd [ -c ] [ -m ] [ -D ] passwdfile username`

`htpasswd -b [ -c ] [ -m | -d | -p | -s ] [ -D ] passwdfile username password`

`htpasswd -n [ -m | -d | -s | -p ] username`

`htpasswd -nb [ -m | -d | -s | -p ] username password`

## 옵션

`-b`
  배치(batch) 모드를 사용한다. 예를 들어, 암호를 물어보지않고 명령행에서 받는다. 명령행에 암호가 직접 드러나므로, 이 옵션은 매우 조심해서 사용해야 한다.
`-c`
  passwdfile을 만든다. passwdfile이 이미 존재한다면, 덮어쓴다. 이 옵션을 `-n` 옵션과 같이 사용할 수 없다.
`-n`
  파일을 수정하지않고 결과를 표준출력으로 출력한다. 아파치가 문서이외의 곳에 생성한 암호를 저장할때 유용하다. (항상 첫번째 아규먼트인) passwdfile 아규먼트가 없기때문에 명령행 문법이 다르다. `-c` 옵션과 같이 사용할 수 없다.
`-m`
  MD5를 사용하여 암호를 암호화한다. Windows, Netware, TPF에서 기본값이다.
`-d`
  `crypt()`를 사용하여 암호를 암호화한다. Windows, Netware, TPF를 제외한 모든 플래폼에서 기본값이다. 모든 플래폼의 `htpasswd`가 이 형식을 지원할 수는 있지만, Windows, Netware, TPF의 httpd 서버는 이 형식을 지원하지 않는다.
`-s`
  암호를 SHA 암호화한다. LDAP 디렉토리교환형식(ldif)을 사용하여 Netscape 서버로 정보를 보내거나 거져올때 유용하다.
`-p`
  암호를 그대로 사용한다. 모든 플래폼의 `htpasswd`가 지원하지만, Windows, Netware, TPF의 httpd 데몬만이 일반 암호를 받는다.
`-D`
  사용자를 삭제한다. htpasswd 파일에 사용자명이 있다면 삭제한다.
`passwdfile`
  사용자명과 암호를 저장하는 파일명. `-c`를 사용한 경우 파일이 없다면 새로 만들고, 있다면 덮어쓴다.
`username`
  passwdfile에 만들거나 수정할 사용자명. username이 이 파일에 없다면 항목을 추가한다. 있다면 암호를 수정한다.
`password`
  암호화하여 파일에 저장할 암호. 오직 `-b` 옵션과 같이 사용할 수 있다.

## 종료코드

`htpasswd`는 passwdfile에 사용자명과 암호를 성공적으로 추가하거나 수정한 경우 ("참") 종료코드 0을 반환한다. `htpasswd`는 파일에 접근할때 문제가 발생한 경우 `1`을, 명령행 형식이 잘못된 경우 `2`를, 입력한 암호와 확인차 다시 입력한 값이 일치하지 않은 경우 `3`을, 명령이 중단된 경우 `4`를, (사용자명, 파일명, 암호, 최종 계산결과) 값이 너무 긴 경우 `5`를, 사용자명에 허용하지않는 문자가 포함된 경우 제한 절 참고) `6`를, 파일이 올바른 암호파일이 아닌 경우 `7`을 반환한다.

## 예제

`htpasswd /usr/local/etc/apache/.htpasswd-users jsmith`

사용자 `jsmith`의 암호를 추가하거나 수정한다. 사용자에게 암호를 물어본다. Windows 시스템에서 실행하면 암호를 아파치 특유의 MD5 알고리즘을 사용하여 암호화하고, 아니면 시스템의 `crypt()` 함수를 사용한다. 파일이 없다면 `htpasswd`는 아무 일도 하지않고 오류를 낸다.

`htpasswd -c /home/doe/public_html/.htpasswd jane`

새로 파일을 만들고 그 파일에 사용자 `jane`을 추가한다. 사용자에게 암호를 물어본다. 파일이 있지만 읽거나 쓸 수 없다면, `htpasswd`는 파일을 수정하지않고 문구를 출력한후 오류상태를 반환한다.

`htpasswd -mb /usr/web/.htpasswd-all jones Pwd4Steve`

명령행의 암호(`Pwd4Steve`)를 MD5 알고리즘으로 암호화하여 지정한 파일에 저장한다.

## 보안상 고려할 점

`htpasswd` 등이 관리하는 웹 암호파일이 웹서버의 URI 공간에 있으면 안된다. 즉, 브라우저가 이 파일을 볼 수 없어야 한다.

명령행에 암호화하지않은 암호를 사용하기때문에 `-b` 옵션을 추천하지 않는다.

## 제한

Windows와 MPE 플래폼은 `htpasswd`가 암호화하는 암호의 길이를 `255` 문자로 제한한다. 더 긴 암호는 255자에서 짤린다.

`htpasswd`가 사용하는 MD5 알고리즘은 아파치 소프트웨어 특유의 것이다. 이를 사용하여 암호화한 암호를 다른 웹서버에서 사용할 수 없다.

사용자명은 `255` 바이트로 제한되고 `:` 문자를 포함할 수 없다.

가능한 언어: en | ko | tr

## Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.