http://fexzi.blog.51cto.com/1131304/298552 我們很清楚apache是當今很出色的網站伺服器,它使用了各種安全性控制.包括存取位址和身份控制.現在我主要是研究位址和目錄控制. apache作為是将目錄作為單元作為存取控制,每一個目錄都放在一個單元裡面.配置檔案在/usr/local/apache2/conf/httpd.conf裡面.使用一個段落,首先就是/目錄.這是設定的預設值.在配置裡面的顯示為 <Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory> 每一個段落都是用這樣的尖括号來顯示的.當然你也可以定義自己的目錄.主要都是在options裡面.options裡面主要說明一些設定,可用的選項有Indexs,FollowSymLinks,includes,ExecCGI,MultiView,然還有兩個最簡單的選擇就是None和All。None是禁止所有選擇,而All 允許上面的所有Options。一般我們主要關心的是Indexes 和FollowSymLinks。 INDEXS Indexes 是設定是否允許在目錄下面沒有index.html 的時候顯示目錄, FollowSymLinks 而FollowSymLinks 決定是否可以通過符号連接配接跨越DocumentRoot。例如,盡管/ftp 不在/home/httpd/html 下面,但是我們仍然可以使用符号連接配接建立一個/home/httpd/html/ftp,使得可以直接輸入 http://mydomain.com/ftp 來通路這個目錄。
以下的例子: 使用FollowSymLinks 的辦法很簡單,就是首先在合适的目錄段落裡面
Options FollowSymLinks,(符号連接配接的上層就可以)然後建立一個别名:
Alias /ftp/ “home/httpd/html/ftp/”
後面的是你建立的到/ftp 的符号連接配接。注意這一行應該位于所有目錄段落之
外。 AllowOverride
AllowOverride 定義是否允許各個目錄用目錄中的.htaccess(後面解釋)覆寫
這裡設定的Options。它的選擇有Options,FileInfo,AuthConfig,Limit 或者它們的
組合,當然還有None 和All。由于/是預設設定,是以這裡沒有設定太多的内容,相反,我們應該在/之後獨立設定各個目錄的控制. 接下來是最關心的對目錄的權限控制了,是常見的文法格式: Order Deny,Allow
Allow from All 設定的含義是先設定“先檢查禁止設定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止通路的設定,直接就是允許所有通路了。這個主要是用來確定或者覆寫上級目錄的設定,開放所有内容的通路權。 同樣的道理,可以實作多樣的效果 按照上面的解釋,下面的設定是無條件禁止通路:
Order Allow,Deny
Deny from All 如果要禁止部分内容的通路,其他的全部開放:
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2 apache會按照order決定最後使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了通路,但由于在order中allow不是最後規則,是以還需要看有沒有deny規則,于是到了第三句,符合ip1和ip2的通路就被禁止了。注意,order決定的“最後”規則非常重要,下面是兩個錯誤的例子和改正方式: Order Deny,Allow
Allow from all
Deny from domain.org
錯誤:想禁止來自domain.org的通路,但是deny不是最後規則,apache在處理到第二句allow的時候就已經比對成功,根本就不會去看第三句。
解決方法:Order Allow,Deny,後面兩句不動,即可。 Order Allow,Deny
Allow from ip1
Deny from all
錯誤:想隻允許來自ip1的通路,但是,雖然第二句中設定了allow規則,由于order中deny在後,是以會以第三句deny為準,而第三句的範圍中又明顯包含了ip1(all include ip1),是以所有的通路都被禁止了。
解決方法一:直接去掉第三句。
解決方法二:
Order Deny,Allow
Deny from all
Allow from ip1