1. 版本与SELINUX
[root@server120 ~]# cat /proc/version
Linux version 2.6.18-308.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Fri Jan 27 17:59:00 EST 2012
[root@server120 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
[root@server120 ~]#
2. 编辑httpd配置文件,启用UserDir支持
[root@server120 ~]# grep -i UserDir /etc/httpd/conf/httpd.conf
LoadModule userdir_module modules/mod_userdir.so
# UserDir: The name of the directory that is appended onto a user's home
<IfModule mod_userdir.c>
# UserDir is disabled by default since it can confirm the presence
# UserDir disable
# directory, remove the "UserDir disable" line above, and uncomment
UserDir public_html
# Control access to UserDir directories. The following is an example
[root@server120 ~]#
3. 在用户(eg. student)家目录上给予其他用户执行权限
[root@server120 ~]# setsebool -P httpd_enable_homedirs on
[root@server120 ~]# getsebool -a | grep httpd | grep home
httpd_enable_homedirs --> on
[root@server120 ~]#
5. 更改家目录下public_html文件夹及其下所有文件的SELINUX类型
[root@server120 ~]# chcon -t httpd_sys_content_t /home/student/public_html/ -R
[root@server120 ~]# ls -Z /home/student/ -R
/home/student/:
-rw------- student student root:object_r:user_home_t mbox
drwxrwxr-x student student root:object_r:httpd_sys_content_t public_html
/home/student/public_html:
-rw-rw-r-- student student root:object_r:httpd_sys_content_t index.html
[root@server120 ~]#
6. 测试访问
[root@server120 ~]# elinks -dump server120.example.com/~student
student_home
[root@server120 ~]#
REF:
1. How to get UserDir (user specific public_html) working for apache in CentOS 6
http://centosforge.com/node/how-get-userdir-user-specific-publichtml-working-apache-centos-6