美文网首页
httpd-2.4 - 基于用户的访问控制(AuthType B

httpd-2.4 - 基于用户的访问控制(AuthType B

作者: 学渣角鹿白 | 来源:发表于2018-10-14 19:17 被阅读0次

部署httpd服务时,有些路径下的内容不希望所有用户都能访问,只有提供用户名和密码才能正常访问,此时就会用到基于用户的访问控制。

前提

vmware的CentOS 7虚拟主机地址为192.168.43.78;
httpd的基本配置情况:

DocumentRoot “/data/www/html”
ServerName 192.168.43.78
Listen 80

要求:
httpd设置一个Alias,名称为/backgrounds/,指向/usr/share/backgrounds/目录;
现在只让指定用户通过“用户名+密码”登录的方式访问backgrounds中的文件。

配置步骤

目前需要做的是将/usr/share/backgrounds/目录定义为安全域,基于Basic方式认证。

1. 定义安全域

在/etc/httpd/conf.d/目录下新建配置文件basic_test.conf,添加如下配置:

Alias /backgrounds/ "/usr/share/backgrounds/"
<Directory "/usr/share/backgrounds/">
        Options Indexes` #允许访问索引
        AllowOverride None
        AuthType Basic  #基于Basic认证
        AuthName "Test BasicAuthType To Directory backgrounds/"
        AuthUserFile "/etc/httpd/conf.d/.basic_test.user"  #指定账号文件(最好设为隐藏文件)
        Require valid-user  #指定允许登录的用户,valid-user表示账号文件内的所有用户
</Directory>

2. 制作账号密码的存储文件

使用htpasswd命令(httpd自带的账号密码创建工具)创建,并对用户进行管理。
这里创建三个用户:user_a,user_b,user_c,密码分别为a123,b123,c123。

首次创建使用-c选项新建存储文件:
# htpasswd -c /etc/httpd/conf.d/.basic_test.user user_a
输入用户密码:
New password: 
确认密码:
Re-type new password: 
Adding password for user user_a

也可以使用-b选项直接给出密码串,-m选项使用md5加密:
(之后添加用户不能使用-c选项,否则会覆盖之前的用户)

# htpasswd -b -m /etc/httpd/conf.d/.basic_test.user user_b b123
Adding password for user user_b
# htpasswd -b -m /etc/httpd/conf.d/.basic_test.user user_c c123
Adding password for user user_c

三个用户创建完成:

# cat .basic_test.user 
user_a:$apr1$RYCy74cb$hOmC0GVSEBBeD0Ln.CUo51
user_b:$apr1$5fA4WNKL$cA740WsK4c8hOKOSvbtXP/
user_c:$apr1$BdRPl/Rz$/2.a1naVcq1.oT3hDVvwu1

3. 验证配置结果

检查配置文件语法,重启服务:

# httpd -t
Syntax OK
# systemctl restart httpd.service

浏览器访问http://192.168.43.78/backgrounds/,要求输入用户名和密码:

httpd-2.4_AuthType Basic_test_登录界面.JPG

输入任意一个用户,访问backgrounds目录:


httpd-2.4_AuthType Basic_test_访问backgrounds目录索引.JPG

4. 只允许账号文件中的个别用户登录访问

上边的配置方式是,账号文件中存储的所有用户都可以通过登录来访问指定路径,也可以限制只有特定用户才能登录访问。
有两种方式:
(1) 允许访问的用户数量少的情况下,可以逐个指定:

比如,将Require valid-user改为:
Require user user_a user_b
表示只允许user_a和user_b登录访问

(2) 允许访问的用户数量多时,可以通过组来指定:

创建组文件.basic_test.group,在其中指定PermitUsers组中的用户为user_a和user_b:
# vim /etc/httpd/conf.d/.basic_test.group
PermitUsers: user_a user_b
在配置文件中指定所使用的组文件和允许登录的组:
<Directory "/usr/share/backgrounds/">
        Options Indexes
        AllowOverride None
        AuthType Basic
        AuthName "Test BasicAuthType To Directory backgrounds/"
        AuthUserFile "/etc/httpd/conf.d/.basic_test.user"
        AuthGroupFile "/etc/httpd/conf.d/.basic_test.group"
        Require group PermitUsers
</Directory>

此时,就只有user_a和user_b可以通过登录访问,user_c不可以。

通过这样的配置,就可以快速建立一个基于安全域和用户的访问控制,对特定路径进行简单的内容保护。

相关文章

  • httpd-2.4 - 基于用户的访问控制(AuthType B

    部署httpd服务时,有些路径下的内容不希望所有用户都能访问,只有提供用户名和密码才能正常访问,此时就会用到基于用...

  • 十二、访问控制、变量

    访问控制 一、nginx 访问控制模块(1)基于IP的访问控制:http_access_module(2)基于用户...

  • Nginx的访问控制

    nginx的访问控制主要分为两类: 基于IP的访问控制 http_access_module 基于用户的信任登录 ...

  • 用户访问次数/频率限制

    a. 基于用户IP限制访问频率urls.py views.py b. 基于用户IP显示访问频率(利于Django缓...

  • 用户访问次数/频率限制

    a.基于用户访问频率 urls.py view.py b. 基于用户IP显示访问频率(利于Django缓存) se...

  • MQTT MOSCA ACL

    MQTT ACL 1、ACL 访问控制列表a、用户控制b、发布控制c、订阅控制 客户端代码 自定义访问控制列表 ...

  • WebGoat<二> Access Conreol Flaws

    在基于角色的访问控制方案中,角色表示一组访问权限和权限。用户可以被分配一个或多个角色。基于角色的访问控制方案通常由...

  • Nginx的访问控制

    基于IP的访问控制 http_access_module基于用户的信任登录 http_auth_basic_mod...

  • httpd的设置

    URL的别名 客户端访问 配置基于用户的访问控制;安装生产用户与密码的工具[root@root html]# yu...

  • Apache服务器的访问控制

    1.访问控制 1.1 主配置 1.2 网页配置 1.3 测试 2 基于用户的访问控制 2.1 修改主配置文件 2....

网友评论

      本文标题:httpd-2.4 - 基于用户的访问控制(AuthType B

      本文链接:https://www.haomeiwen.com/subject/tegvaftx.html