• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
KHDXS7
Being human totally sucks most of the time. Videogames are the only thing that make life bearable. 月下梦中寻周公,辗转反侧一场空。人已升天鸡未叫,不知何处觅仙踪。
博客园    首页    新随笔    联系   管理    订阅  订阅

Apache2——设置用户认证(BASIC)

 

 Apache2——设置用户认证(BASIC)


 

一、目的

限制用户对特定目录的访问。

二、环境

Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-72-generic x86_64)

Apache2 (Server version: Apache/2.4.41 (Ubuntu))

三、预备知识

了解Apache2 文件结构:

#       /etc/apache2/
#       |-- apache2.conf
#       |       `--  ports.conf
#       |-- mods-enabled
#       |       |-- *.load
#       |       `-- *.conf
#       |-- conf-enabled
#       |       `-- *.conf
#       `-- sites-enabled
#               `-- *.conf

*-enabled文件夹下的文件都是link文件,映射到*-available文件夹下。

四、单用户认证

1.创建密码文件

  • 在/etc/apache2目录下创建目录authentication,并进入文件夹。
  • 使用htpasswd工具创建密码文件。按照htpasswd的提示输入密码,并确认密码。
root@VM-0-9-ubuntu:~# htpasswd -c users user1
New password: 
Re-type new password: 
Adding password for user user1
    • -c                        建立passwdfile文件。如果passwdfile已经存在,则它被重写。所以第二次添加用户时需要去掉参数-c。
    • users                   创建的密码文件名(可用绝对路径或者相对路径,如/etc/apache2/authentication)。
    • user1                  要添加到密码文件的用户名

2.设置Apache2主配置文件。

  • 进入文件夹/etc/apache2/sites-enabled。使用vim打开文件000-default.conf。并添加以下指令。指令插入在<VirtualHost *:80></VirtualHost>之间,建议插入在末尾</VirtualHost>之前。并保存退出。
    • 注:设置的目录需要存在且可访问。如/var/www/html/download/。
#Download Authentication
		#设置要进行认证的目录,此处为/var/www/html/download。
        <Directory "/var/www/html/download">
        	#设置认证类型(由mod_auth提供的Basic)
                AuthType Basic
                #设置认证领域,相同领域内避免用户重复输入密码
                AuthName "Download"
                #设置密码文件
                AuthUserFile /etc/apache2/authentication/users
                #设置允许访问的用户(valid-user:允许所有合法的用户访问;user user1:仅限用户user1访问;user user1 user2:仅限用户user1和user2访问)
                Require valid-user
        </Directory>
  • 重启apache2服务
root@VM-0-9-ubuntu:/etc/apache2/sites-enabled# systemctl restart apache2.service

3.验证 

  • 浏览器打开对应页面时则会要求用户认证。如:http://xxx.xxx.xxx.xxx/download。填写user1的用户名和密码即可访问此界面。

  • 填写user1的用户名和密码即可访问此界面。

 

 

 

五、群组认证

群组的作用是对用户进行分类,如普通组和管理组,并分配给不同的权限。

1.创建群组文件。

  • 在目录/etc/apache2/authentication下创建文件groups。使用vim打开此文件并设置群组名单。
  • 格式为:
    • 每组一行;
    • 用空格分隔组成员;
    • 冒号分隔组名与组成员。
group_normal:user1 user2
grop_admin:user3 user4

2.设置Apache2主配置文件。

  • 进入文件夹/etc/apache2/sites-enabled。使用vim打开文件000-default.conf。并添加以下指令。指令插入在<VirtualHost *:80></VirtualHost>之间,建议插入在末尾</VirtualHost>之前。并保存退出。
#Download Authentication
		#设置要进行认证的目录,此处为/var/www/html/download。
        <Directory "/var/www/html/download">
        	#设置认证类型(由mod_auth提供的Basic)
                AuthType Basic
                #设置认证领域,相同领域内避免用户重复输入密码
                AuthName "Download"
                #设置密码文件
                AuthUserFile /etc/apache2/authentication/users
                #设置群组文件
                AuthGroupFile /etc/apache2/authentication/groups
                #设置允许访问的用户(group group_admin:只允许群组group_admin中的用户访问)
                Require group group_admin
        </Directory>
  • 重启apache2服务
root@VM-0-9-ubuntu:/etc/apache2/sites-enabled# systemctl restart apache2.service

3.验证

  • 浏览器打开对应页面时则会要求用户认证。如:http://xxx.xxx.xxx.xxx/download。
  • 用户user3和user4可以访问download页面,而用户user1和user2则不行。

六、设置浏览器禁止页面缓存(可选)

1.禁止浏览器页面缓存的原因

浏览器会自动缓存页面,当下次访问该页面的时候会从缓存中直接加载。具体为:

    • 当第一次输入地址http://xxx.xxx.xxx.xxx/download后,浏览器要求认证,并且认证背景没有任何画面,或者是之前的画面。
    • 关闭浏览器,再次输入该地址后回车,会直接显示出download界面,而没有要求认证。当然,如果刷新页面的话仍会需要认证。

2.具体操作方法

在HTML头中加入以下代码,可防止大部分浏览器进行页面缓存。

<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> 
<meta http-equiv="expires" content="Wed, 14 Feb 1990 00:00:01 GMT">

 

 

 


15:49:39

2021-07-30

posted @ 2021-07-30 15:59  KHDXS7  阅读(1496)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3