mod_authz_owner - Apache HTTP Server Version 2.2

Apache Server 2.2

<-

아파치 모듈 mod_authz_owner

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

요약

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

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

주의

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

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

top

설정 예제

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라는 그룹에 구성원이 있다. jonessmith가 모두 그룹 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>

top

AuthzOwnerAuthoritative 지시어

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

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

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

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

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