리눅스 htpasswd
IT 위키
더 많은 작업
아파치 웹 서버의 기본 인증(Basic 인증)에 사용할 사용자 이름과 비밀번호 파일을 만들고 관리한다.
- 경로 : /usr/bin/htpasswd
- 패키지 : httpd-tools
- 비밀번호 파일은 보통 웹 문서 디렉터리 밖에 둔다. (예: /etc/httpd/.htpasswd)
# htpasswd [-c] [-m | -B | -s | -d | -p] 파일 사용자 # htpasswd -b [-c] [-m | -B | -s | -d | -p] 파일 사용자 비밀번호 # htpasswd -n [-m | -B | -s | -d | -p] 사용자
- -c : 비밀번호 파일을 새로 만든다. 파일이 이미 있으면 내용을 지우고 다시 쓰므로 첫 사용자를 만들 때만 쓴다.
- -b : 비밀번호를 대화형으로 묻지 않고 명령행에서 받는다. 명령 기록에 비밀번호가 남으므로 주의한다.
- -i : 비밀번호를 표준 입력에서 확인 없이 읽는다.
- -n : 파일을 수정하지 않고 결과를 표준 출력으로 출력한다.
- -m : MD5(아파치 전용 apr1 형식)로 암호화한다. (기본값)
- -B : bcrypt로 암호화한다. 가장 안전한 방식이다.
- -C 비용 : -B와 함께 bcrypt 계산 비용(기본 5)을 지정한다. 값이 클수록 안전하지만 느려진다.
- -s : SHA-1로 암호화한다. 안전하지 않다.
- -d : crypt()로 암호화한다. 안전하지 않다.
- -p : 암호화하지 않고 평문으로 저장한다.
- -D : 지정한 사용자를 파일에서 삭제한다.
- -v : 사용자의 비밀번호가 맞는지 확인한다.
htpasswd로 만든 파일은 httpd.conf나 .htaccess에서 다음과 같이 지정한다.
<Directory "/var/www/html/admin">
AuthType Basic
AuthName "Admin Area"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>
- .htaccess에서 인증을 설정하려면 해당 디렉터리에 AllowOverride AuthConfig(또는 All)가 허용되어 있어야 한다.
- 특정 사용자만 허용하려면 Require user 사용자1 사용자2 형식을 쓴다.
# 비밀번호 파일을 새로 만들고 첫 사용자를 등록한다. # htpasswd -c /etc/httpd/.htpasswd admin # 기존 파일에 사용자를 추가한다. (-c를 쓰면 기존 사용자가 지워진다.) # htpasswd /etc/httpd/.htpasswd kait # bcrypt 방식으로 사용자를 추가하면서 비밀번호를 명령행에서 지정한다. # htpasswd -bB /etc/httpd/.htpasswd user2 'P@ssw0rd' # 사용자를 삭제한다. # htpasswd -D /etc/httpd/.htpasswd user2 # 설정 문법을 검사한 뒤 아파치를 재시작한다. # apachectl configtest # systemctl restart httpd
- 최초 생성 시에만 -c를 쓰고, 사용자를 추가할 때는 -c 없이 실행해야 한다는 점이 자주 출제된다.
- AuthType Basic, AuthName, AuthUserFile, Require valid-user로 이루어진 인증 설정 블록을 완성하는 문제가 나온다.
- htpasswd는 httpd-tools 패키지에 들어 있다.