1. 程式人生 > >Apach實現創建虛擬目錄以及用戶訪問控制(內附源碼包)

Apach實現創建虛擬目錄以及用戶訪問控制(內附源碼包)

direct min selinux httpd服務 follow virt 涵蓋 掛載 域名

簡介

基於用戶的訪問控制就是對網頁目錄進行認證配置,用戶輸入用戶名密碼之後才能訪問網頁

認證方式

httpd服務器支持使用摘要認證(Digest)和基本認證(Basic)兩種方式
Digest:使用摘要認證需要在編譯httpd之前添加"--enable-auth-digest"選項,但並不是所有的瀏覽器都支持摘要認證;
Basic:基本認證是htpd服務的基本功能,不需要預先配置特別的選項(安全性沒有摘要認證高,支持所有的瀏覽器)

認證與授權

基於用戶的訪問控制包含認證(Authentication)和授權(Authorization)兩個過程。認證是指識別用戶身份的過程,授權是指允許特定用戶訪問特定目錄區域的過程,特定目錄區域是Apache指定的目錄區域指定的網頁放置的父目錄

實驗環境

  • 系統環境:centos6.5
  • 服務器IP地址:192.168.100.103
  • 客戶端IP地址:192.168.100.99
  • yum掛載目錄:/mnt/sr0
  • 相關源碼包下載地址:百度雲下載? 密碼:pko3

搭建步驟

一、準備工作

1、關閉防火墻及selinux

[root@Init5 ~]# chkconfig iptables off #隨開機關閉iptables
[root@Init5 ~]# vim /etc/sysconfig/selinux
技術分享圖片

二、搭建httpd、DNS服務器

如果沒有搭建以上兩個服務的朋友,請查看我的其他帖子有詳細介紹
http://blog.51cto.com/11905606/2156944

三、基於根目錄驗證用戶訪問授權

1、修改主配置文件

[root@Init5 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak #修改之前先備份
[root@Init5 ~]# vim /etc/httpd/conf/httpd.conf

#查看、添加、修改以下參數
<Directory "/usr/local/httpd/htdocs"> #站點目錄
Options Indexes FollowSymLinks #軟鏈接
AllowOverride None #改成其他值,會產生一個.htpasswod的隱藏文件,放在網站發布的目錄下,可以寫一些網站的屬性配置,如果與全局配置沖突了,以.htpasswod為準,最好不要動

order allow,deny
Allow from all #默認允許所有人進行訪問
AuthName "Auth Direcrory" #指定認證領域名稱,登錄的時候會通過登錄窗口顯示
AuthType Basic #指定認證方式
AuthUserFile /usr/local/httpd/conf/.awspwd #指定授權用戶數據文件
require valid-user #授權給合法用戶,合法用戶在.awspwd文件中
</Directory>

2、創建授權用戶

[root@Init5 ~]# cd /usr/local/httpd/conf/
[root@Init5 conf]# htpasswd -c /usr/local/httpd/conf/.awspwd tom

htpasswd在最開始編譯安裝的時候已經安裝好htpasswd,用來創建授權用戶數據文件,並維護其中的用戶賬號
-c 指定用戶數據文件的位置,添加“-c”選項表示新建立此文件,省略“-c”選項,則表示指定的用戶數據文件已經存在,用於添加新的用戶或修改現有用戶的密碼

[root@Init5 conf]# cat /usr/local/httpd/conf/.awspwd #查看用戶數據文件
技術分享圖片

[root@Init5 ~]# id tom
技術分享圖片

3、重啟服務

[root@Init5 ~]# /etc/init.d/httpd restart

4、測試訪問

技術分享圖片
技術分享圖片

四、基於虛擬目錄驗證用戶訪問授權

1、修改主配置文件

[root@Init5 ~]# mv /etc/httpd/conf/httpd.conf.bak /etc/httpd/conf/httpd.conf #還原之前備份的配置文件

Include conf/extra/httpd-vhosts.conf #打開此行註釋,涵蓋了虛擬主機的配置,並且可以看出在conf目錄下有虛擬主機配置文件

2、修改虛擬主機配置文件

[root@Init5 ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf

設置目錄別名:

Alias /pub "/var/www/html"

站點1設置:

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
Allow from all
AuthName "Auth Direcrory"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
require valid-user
</Directory>

站點2設置:

<VirtualHost 192.168.100.103:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

3、創建網頁根目錄及網頁

[root@Init5 ~]# mkdir -p /var/www/html
[root@Init5 ~]# echo "<h1>Hello World</h1>" > /var/www/html/index.html

4、重啟服務

[root@Init5 ~]# /etc/init.d/httpd restart

5、再次訪問

技術分享圖片

技術分享圖片

Apach實現創建虛擬目錄以及用戶訪問控制(內附源碼包)