如何幫Apache某個目錄加上帳號密碼保護

一般而言,Apache2的目錄是大家都可以存取的,但如果是比較私密的檔案需要帳號密碼登入才能存取,那只能用 .htaccess 的功能來把某個目錄鎖住了。以下範例皆以 /var/www/protect 當做要鎖住的目錄,登入帳號為 linaro

當然你必須先確定 /var/www/protect 這個目錄是存在的,而且權限是 apache2 可以存取的,這時才能對它做限制。

# mkdir /var/www/protect
# chown -R www-data:www-data /var/www/protect

然後在 /var/www/protect 目錄底下編輯 .htaccess檔案

# nano /var/www/protect/.htaccess

編輯檔案輸入:

Options +Indexes # 以列表表示檔案結構
IndexIngore .. # 忽略回到上一層

AuthName "Please Input Account and Password"
AuthType Basic
AuthUserFile /etc/apache2/apache2.passwd
require user linaro # 如果兩個以上的使用者,以空白分開即可

然後就是建立密碼檔案,並把它存放在 /etc/apache2/apache2.passwd 裡面。如果第一次執行(即/etc/apache2/apache2.passwd檔案不存在)

# htpasswd -c /etc/apache2/apache2.passwd linaro

如果已經有了 /etc/apache2/apache2.passwd 檔案,只是單純新增使用者,則為

# htpasswd /etc/apache2/apache2.passwd linaro

如果要刪除 linaro 使用者的帳號密碼則為

# htpasswd -D /etc/apache2/apache2.passwd linaro

輸入密碼並且再次確認以建立檔案,此時不需要重啟 apache2 服務(更改 .htaccess 檔案都不需要重啟服務),使用瀏覽器觀看 http://ip/protect目錄 就必須使用帳號密碼方能瀏覽了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *