Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4 > Programs

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

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

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

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

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

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

### 참고

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

## 개요

`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` 바이트로 제한되고 `:` 문자를 포함할 수 없다.