Apache 內建靈活的用戶認證機制,支援以文本檔或資料庫儲存帳號密碼。本文以 Linux 環境為例,詳細說明基於文本檔的 Basic 認證設定流程,並提供多種進階授權場景範例。
# 建立用戶 xuanfei
htpasswd -c /etc/.password xuanfei
# 建立群組檔
vi /etc/.group
# 內容:
xuanfei-group:xuanfei xuanfei1
<Directory /home/ftp/pub>
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
或將設定獨立放入 /etc/httpd/conf.d/ 下的 .conf 檔。
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.password
Require valid-user
# Require group xuanfei-group # 僅允許特定群組
# Require user xuanfei # 僅允許特定用戶
內網 10.45.63.0/24 免驗證,撥接用戶需輸入帳密。
# httpd.conf
<Directory /home/ftp/pub>
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Order deny,allow
Deny from 10.45.63.1
</Directory>
# .htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
Require valid-user
Satisfy any
/home/ftp/pub 所有用戶可存取,但 /home/ftp/pub/host 僅限 manager 群組(user1, user2)。
# httpd.conf
<Directory /home/ftp/pub> ... </Directory>
<Directory /home/ftp/pub/host> ... </Directory>
# /home/ftp/pub/.htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
Require valid-user
# /home/ftp/pub/host/.htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
AuthGroupFile /etc/.hostgroup
Require group manager
# /etc/.hostgroup
manager: user1 user2
Windows 下同樣適用,僅路徑格式不同(如 C:/Apache/passwd),htpasswd.exe 位於 Apache bin 目錄,其餘指令完全相同。