httpd 基于用户的访问控制(AuthType Basic)

部署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/,要求输入用户名和密码:
在这里插入图片描述

输入任意一个用户,访问backgrounds目录:
在这里插入图片描述

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不可以。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值