2010年6月5日

16:08

服务器环境:

服务器的IP地址设定为192.168.152.100

用户目录的功能是由mod_userdir模块来实现的。

这是Apache服务器的一个非常好的功能,每个用户可以开设自己的站点页面。

现在,为itadmin用户建立个人主页,具体步骤如下。在linux系统下,先创建一个itadmin的用户。

Useradd itadmin

Password itadmin

用户密码,自己设定好。

一、在用户的主目录public_html目录中建立用户自己的站点

Public_html是Apapche提供的用户站点的默认位置

  1. 以itadmin登录在其主目录下建立public_html目录,并在这个目录里建立自己的测试index.htm页面

[itadmin@localhost ~]$ mkdir public_html

[itadmin@localhost ~]$chmod 711 . #设置itadmin主目录,允许其他人进入浏览。

注:目录权限,可以根据需要来进行设置,主要是因为apache服务,是使用apache帐号来访问文件系统目录的。

[itadmin@localhost ~]$ cd public_html

[itadmin@localhost public_html]$ echo "This is $USER's homepage">itadmin.htm

完成后,注销。以root用户登录系统。

  1. 打开/etc/httpd/conf/httpd.conf进行修改

找到如下一行,将其注释(在行首加上#即为注释),此行约在356行

#UserDir disable

去除UserDir public_html 前注释,使其功能启动,此行约在361行

将约371行开始,如下这些行,注释支除,全部启用

<Directory /home/*/public_html>

AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch Include sNoExec

DierctoryIndex itadmin.htm

#注意:DirectoryIndex的用法,我们在前面的全局配置里也用到过,这条命令可以用在全局配置中,也可以用在单个配置段Directory中,在这里的作用就是指定itadmin.htm这个名字的文档为所有用户网页的默认主文档。

当使用浏览器http://192.168.152.100/~itadmin 访问时,就是显示该页。

<Limit GET POST OPTIONS>

Order allow,deny

Allow from all

</Limit>

#这个Limited块的配置作用是限制,网站的访问只允许使用HTTP的GET POST OPTIONS方法,其他HTTP协议方法不允许。

<LimitExcept GET POST OPTIONS>

Order deny,allow

Deny from all

</LimitExcept>

</Directory>

  1. 修改完后,保存配置文件,重启动Apache服务

[root@localhost abc]# service httpd restart

  1. 打开firefox浏览器,在地址栏中输入http://192.168.152.100/~itadmin/

Apache的应用三-- 通过HTTP访问本地用户目录_目录

二、将用户站点建立在某个指定目录中。

在用户的主目录里建立WEB的站点页面,总是不安全。因些,我们可以使用UserDir命令将本地用户的站点建立到某个目录下。

例如:使用UserDir /var/www/users

那么通过网页访问http://192.168.152.100/~itadmin 时,其实际访问的路径是在/var/www/users/itadmin目录中。

步骤:

1、建立相应的环境,并开设好权限

(1)在/var/www下建立好users目录及用户目录itadmin

# mkdir -p users/itadmin

(2)在/var/www/users/itadmin 目录建立网页文件webitadmin.htm

#touch webitadmin.htm

# echo "This file is at \" `pwd` \",it is itadmin web homediretory" &gt; webitadmin.htm

注:目录权限,要给others可进入浏览,文件权限要给others可读

2、修改httpd.conf文件

Vi /etc/httpd/conf/httpd.conf

修改的内容为

UserDir /var/www/users

<Directory /var/www/users/*>

AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

<Limit GET POST OPTIONS>

Order allow,deny

Allow from all

</Limit>

<LimitExcept GET POST OPTIONS>

Order deny,allow

Deny from all

</LimitExcept>

</Directory>

3、保存后,重启动apache服务

打开浏览器,浏览,显示如下图片

Apache的应用三-- 通过HTTP访问本地用户目录_目录_02

三、限制本用户使用用户目录

UserDir disabled <用户名列表> #禁止用户使用用户目录的功能

UserDir enabled <用户名列且> #允许那些用户使用户目录的功能。

附录: UserDir 的用法

在多用户系统中,用UserDir指令可以允许每个用户在其宿主目录中拥有一个网络站点。使用URL http://example.com/~username/ 的访问者可以获得用户"username"的宿主目录中的内容或者用UserDir指定的子目录中的内容。

用户网站目录

相关模块 相关指令

mod_userdir

UserDir

DirectoryMatch

AllowOverride

用UserDir设置文件路径

可以用UserDir指令指定被网络读取的用户网站目录。此指令有几种不同的形式。

如果路径没有前导斜杠,则被当作该用户宿主目录下的子目录。如果有以下配置:

UserDir public_html

则URL http://example.com/~rbowen/file.html 会被解释为文件路径:/home/rbowen/public_html/file.html

如果路径有前导斜杠,则用此路径和用户名构造路径。如果有以下配置:

UserDir /var/html

则URL http://example.com/~rbowen/file.html 会被解释为文件路径:/var/html/rbowen/file.html

如果路径中有星号(*),则星号部分会被用户名所取代。如果有以下配置:

UserDir /var/www/*/docs

则URL http://example.com/~rbowen/file.html 会被解释为文件路径:/var/www/rbowen/docs/file.html

限定哪些用户可以使用此功能

使用UserDir可以限定被允许使用此功能的用户:

UserDir enabled

UserDir disabled root jro fish

上述配置使除了列在disabled中的用户以外的所有用户都可以使用此功能。还可以禁止所有用户而只允许部分用户使用此功能,例如:

UserDir disabled

UserDir enabled rbowen krietz

更多的例子请参见UserDir文档。

启用对每个用户都有效的cgi目录

<Directory>指令可以指定每个用户主目录中的一个特定的目录为"允许cgi"的目录,使每个用户都可以拥有自己的cgi-bin目录。

<Directory /home/*/public_html/cgi-bin/>

Options ExecCGI

SetHandler cgi-script

</Directory>

这样"放肆的"设置使得UserDir被设置成public_html ,CGI程序example.cgi可以用下面的URL从那个目录加载:

http://example.com/~rbowen/cgi-bin/example.cgi

允许用户改变配置

用户可以通过.htaccess文件改变其网络空间的服务器配置,因此必须确保AllowOverride指令被正确设置,以限定用户只能使用被允许的指令。其细节请参见.htaccess指南。