zoukankan      html  css  js  c++  java
  • Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享

              Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享

                                                    作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.实现用户家目录的http共享前提

    在配置家目录共享的2个前提是:
      基于模块mod_userdir.so实现
      SELinux: http_enable_homedirs
    
    其中userdir模块默认是动态在家的,而selinux我们一般在内外情况下是禁用的:
      [root@node101.yinzhengjie.org.cn ~]# httpd -M | grep userdir
      userdir_module (shared)
      [root@node101.yinzhengjie.org.cn ~]# 
      [root@node101.yinzhengjie.org.cn ~]# getenforce 
      Disabled
      [root@node101.yinzhengjie.org.cn ~]# 
      [root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.d/userdir.conf      #该配置文件时官方单独抽出来配置用户家目录共享的哟~
      <IfModule mod_userdir.c>
        UserDir disabled            #虽然userdir模块被加载了,但这里却被官方显示禁用了,我们可以添加一个"#"号注释它,这样默认就是启用该功能的。
      </IfModule>
      <Directory "/home/*/public_html">
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
      </Directory>
      [root@node101.yinzhengjie.org.cn ~]#

    二.配置用户家目录以http方式共享实战

    1>.准备数据

    [root@node101.yinzhengjie.org.cn ~]# su - yinzhengjie
    Last login: Sat Nov 30 17:14:46 CST 2019 from 172.30.1.101 on pts/1
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ ll
    total 0
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ mkdir public_html
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ echo "尹正杰到此一游" > public_html/index.html    #会自动创建一个权限为644的文件。
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ ll
    total 0
    drwxrwxr-x 2 yinzhengjie yinzhengjie 24 Dec  9 11:13 public_html
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ cat public_html/index.html 
    尹正杰到此一游
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ setfacl -m u:apache:x /home/yinzhengjie      #默认其它用户是无权限访问"yinzhengjie"用户的家目录的,因此我们需要显式的添加一条ACL规则来允许apache对家目录有执行权限即可(有了执行权限用户就可以切换到该目录)。
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ getfacl /home/yinzhengjie
    getfacl: Removing leading '/' from absolute path names
    # file: home/yinzhengjie
    # owner: yinzhengjie
    # group: yinzhengjie
    user::rwx
    user:apache:--x
    group::---
    mask::--x
    other::---
    
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ 
    [yinzhengjie@node101.yinzhengjie.org.cn ~]$ exit 
    logout
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    2>.修改httpd的配置文件

    [root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.d/userdir.conf      #查看默认的配置文件
    <IfModule mod_userdir.c>
        UserDir disabled
    </IfModule>
    <Directory "/home/*/public_html">
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# vim /etc/httpd/conf.d/userdir.conf               #默认的配置文件需要修改
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.d/userdir.conf
    <IfModule mod_userdir.c>
        UserDir public_html          #如果没有显式指定"UserDir disabled"切userdir模块已经被动态加载的话默认是启用该功能的,我们这里指定只允许访问用户家目录的"public_html"目录。
    </IfModule>
    <Directory "/home/yinzhengjie/public_html">
        Require all granted          #我们只对"/home/yinzhengjie/public_html"目录进行共享
    </Directory>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# httpd -t
    Syntax OK
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
    [root@node101.yinzhengjie.org.cn ~]# 

    3>. 访问测试

      在客户端浏览器只需要输入"http://node101.yinzhengjie.org.cn/~yinzhengjie/"就可以访问到"/home/yinzhengjie/public_html/"目录下的数据啦,如下图所示。

    三.添加验证的方式才能访问httpd配置的家目录

    1>.根据上面演示的案例修改httpd的配置文件

    [root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.d/userdir.conf
    <IfModule mod_userdir.c>
        UserDir public_html
    </IfModule>
    <Directory "/home/yinzhengjie/public_html">
        AuthType Basic
        AuthName "Welecon to Login"
        AuthUserFile "/etc/httpd//conf.d/httpdpasswd"
        Require user jason  
    </Directory>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd//conf.d/httpdpasswd
    jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
    jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
    jerry:$apr1$NC0Az6Ga$2ers2ZQZttbW.DPNrie.n0
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
    [root@node101.yinzhengjie.org.cn ~]# 

    2>.使用jason用户登录测试成功

      输入正确的用户名和密码就可以看到具体的内容,而且服务器会有相应的日志记录,如下图所示。

    3>.使用jerry用户或者jay用户尽管输入正确的密码均会登录失败

  • 相关阅读:
    Mybatis插件之Mybatis-Plus的实体类注解篇
    Mybatis插件之Mybatis-Plus(SpringBoot)
    Mybatis插件之Mybatis-Plus(传统模式)
    Java中简单测试FastDFS的文件上传
    Linux下部署FastDFS
    SpringBoot中使用 RabbitMQ -测试
    RabbitMQ的安装(Windows环境下)
    SpringBoot中使用aop-测试
    正则表达式之图文混排
    正则表达式的使用总结
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12005847.html
Copyright © 2011-2022 走看看