Apache HTTP Server 2.4 版
說明 | 根據檔案擁有權進行授權 |
---|---|
狀態 | 擴充功能 |
模組識別碼 | authz_owner_module |
原始檔 | mod_authz_owner.c |
相容性 | 可在 Apache 2.1 及更新版本使用 |
此模組透過比較用於 HTTP 驗證的使用者 ID(網頁使用者 ID)與請求檔案的檔案系統擁有者或群組,授權存取檔案。提供的使用者名稱和密碼必須已透過驗證模組正確驗證,例如 mod_auth_basic
或 mod_auth_digest
。 mod_authz_owner
辨識 Require
指令的兩個參數:file-owner
和 file-group
,如下所示
檔案擁有者
jones
擁有,則用於透過網頁存取該檔案的使用者名稱也必須為 jones
。檔案群組
mod_authz_groupfile
或 mod_authz_dbm
提供的群組資料庫中,而且網頁使用者名稱必須是該群組的成員。例如,如果作業系統指示所請求的檔案屬於(系統)群組 accounts
,則群組 accounts
必須顯示在群組資料庫中,而且請求中使用的網頁使用者名稱必須是該群組的成員。考量執行 Apache Web 伺服器的多使用者系統,每個使用者都在 ~/public_html/private
中擁有自己的檔案。假設有一個清單中包含所有他們網路使用者的單一 AuthDBMUserFile
資料庫,而且這些使用者名稱與實際上擁有伺服器上檔案的系統使用者名稱相符,那麼以下節會僅允許使用者自己存取自己的檔案。使用者 jones
將無法存取 /home/smith/public_html/private
中的檔案,除非它們是由 jones
而不是 smith
所擁有。
<Directory "/home/*/public_html/private"> AuthType Basic AuthName MyPrivateFiles AuthBasicProvider dbm AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-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>