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提供的用户站点的默认位置
- 以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用户登录系统。
- 打开/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>
- 修改完后,保存配置文件,重启动Apache服务
[root@localhost abc]# service httpd restart
- 打开firefox浏览器,在地址栏中输入http://192.168.152.100/~itadmin/
二、将用户站点建立在某个指定目录中。
在用户的主目录里建立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" > 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服务
打开浏览器,浏览,显示如下图片
三、限制本用户使用用户目录
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指南。