Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2 > 모듈

#### 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.

# 아파치 모듈 mod_authz_owner

가능한 언어: en | ja | ko

설명: | 파일 소유자를 이용한 권한부여
상태: | Extension
모듈명: | authz_owner_module
소스파일: | mod_authz_owner.c
지원: | 아파치 2.1 이후부터

### 요약

이 모듈은 HTTP 인증에 사용한 사용자 아이디(웹 사용자 아이디)를 요청한 파일의 파일시스템 소유자/그룹과 비교하여 파일의 접근권한을 부여한다. 여기서 사용자명과 암호는 이미 `mod_auth_basic`이나 `mod_auth_digest` 같은 인증모듈의 확인을 거쳤다. `mod_authz_owner`는 `Require` 지시어의 다음 두 아규먼트, `file-owner`와 `file-group`을 처리한다:

`file-owner`
  웹 사용자명이 요청한 파일 소유자의 시스템 이름과 같아야 한다. 즉, 운영체제가 요청한 파일의 소유자가 `jones`라면, 웹을 통해 파일에 접근하는 사용자도 마찬가지로 `jones`이어야 한다.
`file-group`
  파일을 소유한 시스템 그룹명이 `mod_authz_groupfile`이나 `mod_authz_dbm`과 같은 그룹 데이터베이스에 있고, 웹 사용자명이 해당 그룹에 속해야 한다. 예를 들어, 운영체제가 요청한 파일을 `accounts` (시스템) 그룹이 소유하고 있다면, 그룹 데이터베이스에 `accounts`라는 그룹이 있고 요청에 사용한 웹 사용자명이 그 그룹에 속해야 한다.

### 주의

`mod_authz_owner`가 실제로 파일시스템에 있지 않는 자원을 (즉, 가상 자원) 권한부여한다면, 접근을 거부한다.

특히 내용협상한 "MultiViews" 자원을 권한부여하지 않는다.

### 주제

- 설정 예제

### 지시어들

### 참고

- `Require`
- `Satisfy`

- Comments

## 설정 예제

### Require file-owner

아파치 웹서버를 운영하는 다중사용자 시스템에서 각 사용자가 `~/public_html/private`에 자신의 파일을 저장한다고 가정하자. 모든 웹 사용자명을 저장하는 `AuthDBMUserFile` 데이터베이스가 있고, 여기에 저장된 사용자명은 서버에서 실제 파일을 소유하는 시스템 사용자명과 동일하다. 이 경우 아래 설정은 파일 소유자에게만 접근을 허용한다. 사용자 `jones`는 파일을 `jones`가 아닌 `smith`가 소유하고 있는 한 `/home/smith/public_html/private`에 있는 파일에 접근할 수 없다.

`<Directory /home/*/public_html/private>
AuthType Basic
AuthName MyPrivateFiles
AuthBasicProvider dbm
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
Satisfy All
Require file-owner
</Directory>`

### Require file-group

위와 상황이 비슷하지만 여러명이 `~/public_html/project-foo`에 프로젝트 파일을 공유한다고 가정하자. 파일들은 시스템 그룹 `foo`가 소유하며, 모든 웹 사용자명과 사용자 그룹을 기록하는 `AuthDBMGroupFile` 데이터베이스가 있다. 즉, 최소한 `foo`라는 그룹에 구성원이 있다. `jones`와 `smith`가 모두 그룹 `foo`의 구성원이라면, 둘 모두 `project-foo` 디렉토리에 접근할 수 있다.

`<Directory /home/*/public_html/project-foo>
AuthType Basic
AuthName "Project Foo Files"
AuthBasicProvider dbm
# combined user/group database
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all
Satisfy All
Require file-group
</Directory>`

## AuthzOwnerAuthoritative 지시어

설명: | 권한부여를 저수준 모듈로 넘겨줄지 여부
문법: | `AuthzOwnerAuthoritative On|Off`
기본값: | `AuthzOwnerAuthoritative On`
사용장소: | directory, .htaccess
Override 옵션: | AuthConfig
상태: | Extension
모듈: | mod_authz_owner

`AuthzOwnerAuthoritative` 지시어를 직접 `Off`로 설정하면 다음과 같은 경우 사용자 권한부여를 (`modules.c` 파일에서 정의한) 저수준 모듈로 넘겨준다.

- `file-owner`를 사용하면 파일시스템 소유자를 알 수 없거나 주어진 웹 사용자명과 다른 경우
- `file-group`을 사용하면 파일시스템 그룹을 알 수 없거나 주어진 웹 사용자명이 구성원이 아닌 경우.

또, 값을 `Off`로 설정하면 `file-owner`와 `file-group`을 결합하여, 둘 중 하나만 만족해도 접근을 허가한다.

기본적으로 제어를 넘기지않고, 모르는 그룹의 경우 인증 필요 응답을 한다. 이 지시어를 `Off`로 설정하지않으면 시스템이 안전하게 유지되며, NCSA 웹서버와 같이 동작한다.

가능한 언어: en | ja | ko

## 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.