LAMP架構十五(Apache配置Directory訪問控制)
十五、Apache配置Directory訪問控制
可以使用<Directory 目錄路徑>和</Directory>這對語句為主目錄或虛擬目錄設定許可權,它們是一對容器語句,必須成對出現,它們之間封裝的是具體的設定目錄許可權語句,這些語句僅對被設定目錄及其子目錄起作用。
下面是主配置檔案中設定目錄許可權的例子:
<Directory "/var/www/icons"> Options Indexes MultiViews Allow Override None Order allow,deny Allow from all </Directory>
Options選項用於定義目錄使用哪些特性,包括Indexes、MultiViews和ExecCGI等,瞭解下目錄特性選項
命 令 | 說 明 |
Indexes | 允許目錄瀏覽 當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪個檔案,而且目錄下不存在預設文件時,Apache以超文字形式返回目錄中的檔案和子目錄列表(虛擬目錄不會出現在目錄列表中)。 |
MultiViews | 允許內容協商的多重檢視 MultiViews其實是Apache的一個智慧特性。當客戶訪問目錄 中一個不存在的物件時,如訪問“http://192.168.16.177/icons/a”,則Apache會查詢這個目錄下所有a.*檔案。由於 icons目錄下存在a.gif檔案,因此Apache會將a.gif檔案返回給客戶,而不是返回出錯資訊 |
All | All包含了除MultiViews之外的所有特性,如果沒有Options語句,預設為All |
ExecCGI | 允許在該目錄下執行CGI指令碼 |
FollowSymLinks | 可以在該目錄中使用符號連線 |
Includes | 允許伺服器端包含功能 |
IncludesNoExec | 允許伺服器端包含功能,但禁用執行CGI指令碼 |
AllowOverride None AllowOverride選項用於定義位於每個目錄下.htaccess(訪問控制)檔案中的指令型別。基於安全和效率的原因,雖然可以通過.htaccess來設定目錄的訪問許可權,但應儘可能地避免使用.htaccess檔案,所以一般將AllowOverride設定為”None”,即禁止使用.htaccess檔案,而將目錄許可權的設定放在配置檔案的<Directory> 和</Directory>語句之間。
Order allow, deny Order選項用於定義預設的訪問許可權與Allow和Deny語句的處理順序。Allow和Deny語句可以針對客戶機的域名或IP地址進行設定,以決定哪些客戶機能夠訪問伺服器。Order語句通常設定為以下兩種值之一。 allow, deny:預設禁止所有客戶機的訪問,且Allow語句在Deny語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Deny語句會起作用(因為Deny語句覆蓋了Allow語句)。 deny, allow:預設允許所有客戶機的訪問,且Deny語句在Allow語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Allow語句會起作用(因為Allow語句覆蓋了Deny語句)。 下面舉一些例子來說明Order、Allow和Deny語句的使用方法,切記順序 !切記順序 !切記順序 !
下面是測試過的例子:
--------------------------------
Order deny,allow
allow from all
deny from 219.204.253.8
#全部都可以通行
-------------------------------
Order deny,allow
deny from 219.204.253.8
allow from all
#全部都可以通行
-------------------------------
Order allow,deny
deny from 219.204.253.8
allow from all
#只有219.204.253.8不能通行
-------------------------------
Order allow,deny
allow from all
deny from 219.204.253.8
#只有219.204.253.8不能通行
-------------------------------
-------------------------------
Order allow,deny
deny from all
allow from 219.204.253.8
#全部都不能通行
-------------------------------
Order allow,deny
allow from 219.204.253.8
deny from all
#全部都不能通行
-------------------------------
Order deny,allow
allow from 219.204.253.8
deny from all
#只允許219.204.253.8通行
-------------------------------
Order deny,allow
deny from all
allow from 219.204.253.8
#只允許219.204.253.8通行
-------------------------------
--------------------------------
Order deny,allow
#全部都可以通行(預設的)
-------------------------------
Order allow,deny
#全部都不能通行(預設的)
-------------------------------
Order allow,deny
deny from all
#全部都不能通行
-------------------------------
Order deny,allow
deny from all
#全部都不能通行
-------------------------------
對於上面兩種情況,如果換成allow from all,則全部都可以通行!
-------------------------------
Order deny,allow
deny from 219.204.253.8
#只有219.204.253.8不能通行
-------------------------------
Order allow,deny
deny from 219.204.253.8
#全部都不能通行
-------------------------------
Order allow,deny
allow from 219.204.253.8
#只允許219.204.253.8通行
-------------------------------
Order deny,allow
allow from 219.204.253.8
#全部都可以通行
-------------------------------
-------------------------------
order deny,allow
allow from 218.20.253.2
deny from 218.20
#代表拒絕218.20開頭的IP,但允許218.20.253.2通過;而其它非218.20開頭的IP也都允許通過。
-------------------------------
order allow,deny
allow from 218.20.253.2
deny from 218.20
#和上面的差不多,只是掉換的order語句中的allow、deny先後順序,但最終結果表示全部都拒絕!