zoukankan      html  css  js  c++  java
  • 28.个人用户主页功能

    httpd服务程序提供的个人用户主页功能,可以实现在系统中为每位用户建立一个独立的网站。

    1.在httpd 服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件,然后在第17 行的UserDir disabled 参数前面加上井号(#),表示让httpd 服务程序开启个人用户主页功能;

      同时再把第24 行的UserDir public_html 参数前面的井号(#)去掉(UserDir 参数表示网站数据在用户家目录中的保存目录名称,即public_html 目录)。最后,在修改完毕后记得保存。  

    [root@localhost html]# vim /etc/httpd/conf.d/userdir.conf 
    11 <IfModule mod_userdir.c>
     12     #
     13     # UserDir is disabled by default since it can confirm the presence
     14     # of a username on the system (depending on home directory
     15     # permissions).
     16     #
     17     #UserDir disabled
     18 
     19     #
     20     # To enable requests to /~user/ to serve the user's public_html
     21     # directory, remove the "UserDir disabled" line above, and uncomment
     22     # the following line instead:
     23     # 
     24 UserDir public_html
     25 </IfModule>

    2.在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。  

    [root@localhost html]# su - centos
    [centos@localhost ~]$ mkdir public_html
    [centos@localhost ~]$ echo "This is centos1's website" > public_html/index.html
    [centos@localhost public_html]$ chmod -Rf 755 /home/centos

    3.重新启动httpd 服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格),从理论上来讲就可以看到用户的个人网站了。

      不出所料的是,系统显示报错页面,如图 所示。这一定还是SELinux 惹的祸。  

    [root@localhost html]# systemctl restart httpd.service 

      

    4.httpd 服务程序在提供个人用户主页功能时,该用户的网站数据目录本身就应该是存放到与这位用户对应的家目录中的,所以应该不需要修改家目录的SELinux 安全上下文。

      但是,前文还讲到了Linux 域的概念。Linux 域确保服务程序不能执行违规的操作,只能本本分分地为用户提供服务。httpd 服务中突然开启的这项个人用户主页功能到底有没有被SELinux 域默认允许呢?

      getsebool:查询并过滤出所有与HTTP 协议相关的安全策略。其中,off为禁止状态,on 为允许状态。  

    [centos@localhost ~]$ getsebool -a |grep http
    httpd_anon_write --> off
    httpd_builtin_scripting --> on
    httpd_can_check_spam --> off
    httpd_can_connect_ftp --> off
    httpd_can_connect_ldap --> off
    httpd_can_connect_mythtv --> off
    httpd_can_connect_zabbix --> off
    httpd_can_network_connect --> off
    httpd_can_network_connect_cobbler --> off
    httpd_can_network_connect_db --> off
    httpd_can_network_memcache --> off
    httpd_can_network_relay --> off
    httpd_can_sendmail --> off
    httpd_dbus_avahi --> off
    httpd_dbus_sssd --> off
    httpd_dontaudit_search_dirs --> off
    httpd_enable_cgi --> on
    httpd_enable_ftp_server --> off
    httpd_enable_homedirs --> off
    httpd_execmem --> off
    httpd_graceful_shutdown --> on
    httpd_manage_ipa --> off
    httpd_mod_auth_ntlm_winbind --> off
    httpd_mod_auth_pam --> off
    httpd_read_user_content --> off
    httpd_run_ipa --> off
    httpd_run_preupgrade --> off
    httpd_run_stickshift --> off
    httpd_serve_cobbler_files --> off
    httpd_setrlimit --> off
    httpd_ssi_exec --> off
    httpd_sys_script_anon_write --> off
    httpd_tmp_exec --> off
    httpd_tty_comm --> off
    httpd_unified --> off
    httpd_use_cifs --> off
    httpd_use_fusefs --> off
    httpd_use_gpg --> off
    httpd_use_nfs --> off
    httpd_use_openstack --> off
    httpd_use_sasl --> off
    httpd_verify_dns --> off
    named_tcp_bind_http_port --> off
    prosody_bind_http_port --> off

      面对如此多的SELinux 域安全策略规则,实在没有必要逐个理解它们,我们只要能通过名字大致猜测出相关的策略用途就足够了。比如,想要开启httpd 服务的个人用户主页功能,那么用到的SELinux 域安全策略应该是httpd_enable_homedirs。

      大致确定后就可以用setsebool 命令来修改SELinux 策略中各条规则的布尔值了。

      在setsebool 命令后面加上-P 参数,可以让修改后的SELinux 策略规则永久生效且立即生效。  

    [root@localhost html]# setsebool -P httpd_enable_homedirs=on
    [root@localhost html]# firefox

     

    5.在网站中添加口令,实现不直接将网页内容显示出来,只想让通过身份验证的用户访客看到里面的内容。  

      1)使用htpasswd 命令生成密码数据库。-c 参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。    

    [root@localhost html]# htpasswd -c /etc/httpd/passwd centos
    New password: 
    Re-type new password: 
    Adding password for user centos

      2)编辑个人用户主页功能的配置文件。把第31~35 行的参数信息修改成下列内容,其中井号(#)开头的内容为刘遄老师添加的注释信息,可将其忽略。随后保存并退出配置文件,重启httpd 服务程序即可生效。  

    [root@localhost html]# vim /etc/httpd/conf.d/userdir.conf
     31     <Directory "/home/*/public_html">
     32     AllowOverride all
     33     authuserfile "/etc/httpd/paswd"
     34     authname "My privately website"
     35     authtype basic
     36     require user centos
     37     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
     38     Require method GET POST OPTIONS
     39 </Directory>

      

  • 相关阅读:
    mysql基本操作
    http基础
    react进阶第一讲jsx
    react进阶第二讲——component
    WC2020游记
    数据库实验小结 Resource Manager
    latex 常用小结
    编程之美2013资格赛 水结
    百度电影推荐系统比赛 小结 ——记我的初步推荐算法实践
    10.10作业
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/13706190.html
Copyright © 2011-2022 走看看