Linux系統Apache使用者授權和存取控制

來源:互聯網
上載者:User

使用者授權和存取控制

你也許在訪問某些網站時會遇到過這樣的情況,當你點擊某個串連時,你的瀏覽器會彈出一個身分識別驗證的對話方塊,要求輸入帳號及密碼,如果沒有,就無法繼續瀏覽了。有人會以為這是用CGI做出來的,其實不然,這是WWW伺服器的使用者授權和存取控制機制在發揮作用。

你是否還記得在設定Apache服務環境的過程中,有……..<./Directory>這個指令,可以對不同的目錄提供不同的保護。但是這樣的設定,需要重新啟動伺服器才會生效,靈活性較差,通過AccessFile指令指定存取控制檔案的方式則比較靈活,在Apache伺服器中設定使用者的存取控制許可權步驟如下:

1、首先對httpd.conf檔案進行設定如下:

<Directory /home/httpd/html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Options Includes FollowSymLinks Indexes AllowOverride All //*注意AllowOverride 一定要設定為All,這樣後面的.htaccess檔案才會起作用 <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> # <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> # Order deny,allow # Deny from all # </Limit> </Directory> #指定配置存取控制許可權的檔案名稱 AccessFileName .htaccess

2、建立.htaccess檔案內容

要控制某目錄的存取權限必須建立一存取控制檔案,檔案名稱前面指定的“.htaccess”,其內容格式如下:

AuthUserFile 使用者帳號密碼檔案名稱 AuthGroupFile 群組帳號密碼檔案名稱 AuthName 畫面提示文字 AuthType 驗證方式 <Limit GET> 密碼驗證方式 </Limit> 使用者驗證方式AuthType目前提供了Basic和Digest兩種。 密碼檢驗設定方法與httpd.conf中的相關設定相同。 具體例子如下: AuthUserFile /etc/secure.user AuthName 安全認證中心 AuthType Basic <Limit GET> require valid-user </Limit>

3、建立使用者密碼檔案

如果你是第一次建立使用者密碼,命令格式如下:

htpasswd -c 密碼檔案名稱 使用者名稱稱

在上面的例子中,我們將使用者密碼檔案放到了/etc/secure.user檔案中,所以這裡應按照如下進行操作:

htpasswd -c /etc/secure.user sword

程式會提示你輸入兩次使用者的口令,然後使用者密碼檔案就已經建立sword這個使用者也添加完畢了。

如果要向密碼檔案中添加新的使用者,按照如下命令格式進行操作:

htpasswd 密碼檔案 使用者名稱稱

這樣,重新啟動httpd後,進行該WEB目錄時就會有一個對話方塊彈出,要求輸入使用者名稱及使用者口令了。

4、如何減少存取控制對Apache效能的影響

頻繁的使用存取控制會對Apache的效能產生較大的影響,那麼,如何才能減少這種影響呢?最簡單也是最有效方法之一就是減少.htaccess檔案的數目,這樣可以避免Apache對每一個請求都要按照.htaccess檔案的內容進行授權檢查。它不僅在當前的目錄中尋找.htaccess檔案,它還會在目前的目錄的父目錄中尋找。

/

/usr

/usr/local

/usr/local/etc

/usr/local/etc/httpd

/usr/local/etc/httpd/htdocs

/usr/local/etc/httpd/htdocs/docs

通常在根目錄下沒有htaccess檔案,但Apache仍然會進行例行檢查以確定該檔案確實不存在。這是影響很影響伺服器工作效率的事情。下面的方法可以消除這個討厭的過程:將AllowOverride選設定為None,這樣Apache就會檢查.htaccess檔案了。將/根目錄的 AllowOverride選項設為None,只將需要進行存取控制的目錄下的AllowOverride選項設定為all,如下面的例子中將/根目錄的 AllowOverride 選項關閉了,只開啟了/usr/local/etc/httpd/htdocs目錄下的AllowOerride選項,這樣,系統就只在 /usr/local/etc/httpd/htdocs中檢查.htaccess檔案,達到的提高服務效率的目的。

<Directory /> AllowOverride None </Directory> <Directory /usr/local/etc/httpd/htdocs> AllowOverride All </Directory>

如果除了根目錄以外,還有其它存放WWW檔案的目錄,你也可以採取同樣的方法進行設定。比如:如果你使用UserDir來允許使用者訪問自己的目錄,AllowOverride的設定如下:

<Directory /home/*/public_html> AllowOverride FileInfo Indexes IncludesNOEXEC </Directory>

5、防止使用者訪問指定的檔案

系統中有一些檔案是不適宜提供給WWW使用者的,如:.htaccess、htpasswd、*.pl等,可以用達到這個目的:

<Files .htaccess> order allow,deny deny from all </Files>

使用者存取控制三個.htaccess檔案、.htpasswd和.htgroup(用於使用者授權) ,為了安全起見,應該防止使用者瀏覽其中內容,可以在httpd.conf中加入以下內容阻止使用者對其進行訪問:

<Files ~”/.ht”> Order deny, allow Deny from all </Files>

這樣這三個檔案就不會被使用者訪問了。

6、限制某些使用者訪問特定檔案

可以對目錄進行約束,要限制某些使用者對某個特定檔案的訪問可以使用,比如:不允許非domain.com域內的使用者對/prices/internal.html進行訪問,可以用如下的設定:

<Location /prices/internal.html> order deny,allow deny from all allow from .domain.com </Location>

如果你要授於相應許可權的機器沒有公開的網域名稱,請在你的/etc/hosts檔案中,將其IP地址映射到某個指定的名稱,然後在Location中對其進行設定,否則該選項是不起作用的。

7、只接受來自特定連結的訪問

例如,只讓所有來自 http://www.sina.com.cn/* 的連結的使用者進入此目錄,由其它連結來的訪客都不得進入; " * "表示此網站底下所有的連結。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定檔案 http://www.sina.com.cn/news.html

.htaccess檔案的內容如下:

AuthUserFile /dev/null AuthGroupFile /dev/null AuthName ExampleAllowFromSpecificURL AuthType Basic <Limit GET> order deny,allow deny from all referer allow from http://www.sina.com.cn/* </Limit>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.