Linux: SElinux导致网站无法访问

  

通过更改SElinux状态可以判断出,当SElinux处于关闭状态时,网站内容访问正常。
[root@master1 - 192 - 168 - 117 - 18 ~] # setenforce 0
[root@master1 - 192 - 168 - 117 - 18 ~] # getenforce

[root@master1 - 192 - 168 - 117 - 18 ~] # setenforce 1
[root@master1 - 192 - 168 - 117 - 18 ~] # getenforce执行

0
  

查看网站的主目录的SElinux安全上下文值:
[root@master1 - 192 - 168 - 117 - 18 ~] # ls -Zd/var/www/html/
drwxr-xr-x。根的根system_u: object_r: httpd_sys_content_t: s0/var/www/html/
[root@master1 - 192 - 168 - 117 - 18 ~] # ls -Zd/home/wwwroot/
drwxr-xr-x。根的根system_u: object_r: user_home_dir_t: s0/home/wwwroot/

  

将新添加的主目录SElinux上下文值与系统默认主目录保持一致:
[root@master1 - 192 - 168 - 117 - 18 ~] # semanage fcontext - a - t httpd_sys_content_t/home/wwwroot/*

  

注意,执行上述设置之后,还无法立即访问网站,还需要使用restorecon命令将设置好的SELinux安全上下文立即生效。在使用restorecon命令时,可以加上房车参数对指定的目录进行递归操作,以及显示SELinux安全上下文的修改过程。

  

[root@master1 - 192 - 168 - 117 - 18 ~] # restorecon房车/home/wwwroot/
restorecon重置/home/wwwroot上下文system_u: object_r: user_home_dir_t: s0→system_u: object_r: httpd_sys_content_t: s0
restorecon重置/home/wwwroot/index.html环境system_u: object_r: user_home_t: s0→system_u: object_r: httpd_sys_content_t: s0
[root@master1 - 192 - 168 - 117 - 18 ~] # ls -Zd/home/wwwroot/
drwxr-xr-x。根根system_u: object_r: httpd_sys_content_t: s0/home/wwwroot/
[root@master1 - 192 - 168 - 117 - 18 ~ # ^ C

  <人力资源/>   

<强>个人用户主页功能

  

第1步:在httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件,然后在第17行的UserDir禁用参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能,同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。
[root@master1 - 192 - 168 - 117 - 18 ~] # vim/etc/httpd/conf.d/userdir.参看
1 #
2 # UserDir:目录的名称附加到用户的主目录
3 #如果~收到用户请求。
4 #
5 #的路径最终用户帐户的public_html目录必须
6 #访问网络服务器的用户id。这通常意味着~ userid
7 # 711年一定权限,~ userid/public_html一定权限
8 # 755,其中包含和文档必须是公开的。
9 #否则,客户只会收到一个“403 Forbidden"消息。
10 #
11 & lt; IfModule mod_userdir.c>
12 #
13 # UserDir默认情况下是禁用的,因为它可以确认存在
14 #系统上的用户名(取决于主目录
15 #权限)。
16 #
17 # UserDir禁用
18 19 #

20 ~ #让请求/用户/用户的服务public_html
21 #目录,删除“UserDir disabled"线上方,
22 #取消注释以下行:
23 #
24 UserDir public_html
25 & lt;/IfModule>

26日27 #
28 #控制UserDir目录的访问。下面是一个示例
29 #的地方这些目录都是只读的。
30 #
31日& lt;目录“/home/*/public_html"在
32 AllowOverride FileInfo AuthConfig限制指数
33选项MultiViews方法索引SymLinksIfOwnerMatch IncludesNoExec
34需要方法得到职位选择
35 & lt;/Directory>

  

“/etc/httpd/conf.d/userdir.conf"36 l, 1254 c已写入

  

第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。
[aa@master1 - 192 - 168 - 117 - 18 ~]美元mkdir public_html
[aa@master1 - 192 - 168 - 117 - 18 ~]美元回声“世界那么大,我出去看看!“比;public_html/索引。html
[aa@master1 - 192 - 168 - 117 - 18 ~ 755 chmod射频/home/aa/

  

第3步:重新启动httpd服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址,波浪号,用户名之间没有空格),从理论上来讲就可以看到用户的个人网站了。不出所料的是,系统显示报错页面,如图9所示。这一定还是SELinux惹的祸。

  

第4步:使用getsebool命令查询并过滤出所有与HTTP协议相关的安全策略。其中,从为禁止状态,在为允许状态。
[root@master1 - 192 - 168 - 117 - 18 ~] # getsebool——| grep HTTP
httpd_anon_write——比;从
httpd_builtin_scripting——比;在
httpd_can_check_spam——比;从
httpd_can_connect_ftp——比;从
httpd_can_connect_ldap——比;从

Linux: SElinux导致网站无法访问