2011년 11월 8일 화요일

Apache HTTP 서버 폴더별 계정 설정

참고: http://blog.pages.kr/44

특정 경로 접근시 로그인하여 허가된 사용자만 접근하게 하고 싶은 경우가 있다.
Apache HTTP 서버를 파일 공유 공간으로 사용하고자 하는 경우가 있을 수 있다.
아래와 같이 설정할 수 있다.

1. 계정 파일 생성
[아파치 설치 경로]/bin 폴더에 htpasswd 프로그램을 이용하여 계정 파일을 생성한다.
아래와 같이 커멘드를 입력한다.

명령: htpasswd -c [파일명] [계정]

예) htpasswd -c myauth admin 이라고 입력하면 아래와 같이 패스워드를 묻는다.
Automatically using MD5 format.
New password: ****
Re-type new password: ****
Adding password for user admin


성공하면 myauth 라는 파일이 생성된다.

2. httpd.conf 의 디렉토리 접근 관한 수정

  • [아파치 설치 경로]/conf/httpd.conf 파일을 텍스트 편집기로 연다.
  • 접근 제어할 Directory 태그를 찾는다. (보통은 htdocs 폴더 경로임)
  • AllowOverride 옵션을 AuthConfig 로 수정한다.
    • AllowOverride AuthConfig
httpd.conf 파일 수정의 예

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

3. .htaccess 파일 생성

  • 접근 제어하려는 폴더로 이동하여 .htaccess 라는 파일을 생성한다.

!) 윈도의 경우 .htaccess 파일을 생성하려고 하면 파일 이름을 입력하라며 생성되지 않는다.
이때는 먼저 htaccess.txt 정도의 파일 이름을 갖는 파일을 생성하고 커멘드 입력 창에서 rename htaccess.txt .htaccess 명령으로 파일 이름을 수정하면 된다.

  • .htaccess 파일에 아래와 같이 입력한다.
AuthType Basic
AuthName "Restricted Files"
AuthUserFile [계정 파일 위치]
Require user [계정 이름]

예를 들어 계정 파일 위치가 c:\my auth\myauth 이고 계정 이름이 admin 이라면 아래와 같다.

AuthType Basic
AuthName "Restricted Files"
AuthUserFile "c:/my auth/myauth"
Require user admin


4. 테스트
Apache HTTP 서버를 재시작하고 웹 브라우저에 계정 설정한 경로를 입력해 본다.

5. 설정 예

1) 환경
  • 의도: 특정 폴더 접근을 특정인만 접근하게 하고 싶다.
  • 서버 port: 80
  • 접근 제어 원하는 폴더: [아파치 설치 폴더]/htdocs/secure
  • 계정 파일 경로: [아파치 설치 경로]/bin/myauth
  • 계정 아이디 및 패스워드: admin, 1234
2) 계정 파일 생성
ㄱ. 커멘드 창 실행
ㄴ. [아파치 설치 경로]/bin 폴더로 이동
ㄷ. htpasswd -c myauth admin
ㄹ. 패스워드 입력

3) httpd.conf 파일 수정
ㄱ. httpd.conf 파일을 텍스트 편집기로 연다.
ㄴ. [아파치 설치 경로]/htdocs 경로의 접근 옵션을 수정한다.
 - AllowOverride None 을 AllowOverride AuthConfig 로 수정한다.

4) .htaccess 파일 생성
ㄱ. [아파치 설치 폴더]/htdocs/secure 폴더로 이동하여 .htaccess 파일을 생성한다.
ㄴ. .htaccess 파일을 텍스트 편집기로 연다.
ㄷ. 아래와 같이 입력한다.
AuthType Basic
AuthName "Restricted Files"
AuthUserFile "[아파치 설치 경로]/bin/myauth"
Require user admin

5) Apache HTTP 서버 재시작 및 테스트
ㄱ. Apache HTTP 서버를 재시작 한다.
ㄴ. 웹 브라우저에 아래와 같이 입력한다.
http://127.0.0.1/secure
ㄷ. 로그인 창이 나오고 아이디 와 패스워드를 입력하여 접근할 수 있다면 성공이다.


댓글 없음:

댓글 쓰기