如果你有心留意一些提供服务器托管的网站,你会发现这些网站都提供一些个人主页空间的服务。也许,你很羡慕他们,以为这是一个很了不起的技术。其实,只要学习,你也可以完成这个项目。
下面,我们就将开始学习怎么样来实现www服务的这一功能。个人主页空间,说白了就是开启一个硬盘空间给网络用户,供用户上传网页并可以访问该网页。对于apache来讲,需要开启一下参数和相关的个人目录区块:
#UserDir public_html
找到这行,并将前面的注释符号“#”去掉,这就开启了用户目录。当然,这里只是个人目录的开关,还需要开放个人目录。找到下面这几行,并将前面的注释符号去掉。
<Directory /home/*/public_html>
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>
接下来,需要在建立用户,并添加public_html目录以及网页,以便进行测试。
[root@localhost~]#useradd u1
[root@localhost~]#cd /home/u1
[root@localhost u1]#mkdir public_html
[root@localhost u1]#cd public_html
[root@localhost public_html]#vi index.html
Hello, this is u1!
然后保存退出,来测试一下。
[root@localhost u1]#links ~u1/
You don’t have permission to access /~u1/ ……
咦,怎么回事?出错了?不,是权限问题。赶快去查看一下权限吧。
[root@localhost public_html]#ls –l
-rwx------ root root 18 Nov 18 08:15 index.html
原来这里index.html的拥有者和拥有组不对,权限也不够啊,赶快修改吧。
[root@localhost public_html]#chown u1:u1 index.html
[root@localhost public_html]#chmod 755 index.html
现在修改完毕了,可以测试了吧。不,还不行,还有上层目录的权限啊。
[root@localhost public_html]#cd
[root@localhost home]#chown u1:u1 –R u1
[root@localhost home]#chmod 755 –R u1
权限修改完毕,现在再来测试一下吧。
[root@localhost home]#links ~u1/
You don’t have permission to access /~u1/ ……
咦,还是权限问题。但是,不是已经修改过了吗?都开放到755了。别急,SELinux还开着呢,还需要修改SELinux的权限。
[root@localhost home]#ls –Z |grep u1
drwsr-xr-x u1:u1 18 Nov 18 08:20 user_u:object_r:user_home_dir_t u1
上面,就是u1目录的SELinux的安全上下文(SEContext)了。但是,要怎么修改呢?别急,我们来看看httpd默认目录的SEContext。
[root@localhost home]#cd /var/www
[root@localhost www]#ls –Z | grep html
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t html
看明白了吗?那就开始修改u1目录的SEContext吧。修改SEContext使用chcon命令来完成,如果要修改user的就加-u参数,如果修改type就加-t参数,如果修改role的就加-r参数。这里需要修改user和type两个类型。
[root@localhost home]#chcon –u system_u –t httpd_sys_content_t –R u1
这里加上-R参数,进行递归修改,一次修改u1以及以下目录和文件了。下面,我们再进行测试吧。
[root@localhost home]#links ~u1/
Hello, this is u1!
OK,我们自己的页面出来了,测试成功!