Apache HTTP Server Version 2.4
설명: | 파일 소유자를 이용한 권한부여 |
---|---|
상태: | 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" 자원을 권한부여하지 않는다.
아파치 웹서버를 운영하는 다중사용자 시스템에서 각 사용자가
~/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>
위와 상황이 비슷하지만 여러명이
~/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>