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