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的用户名和密码即可访问此界面。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iYkdjZmFTMxYjNlRDZycTOjVWOzYzMwMGO3EDMyUWN08CXwMzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.png)
- 填写user1的用户名和密码即可访问此界面。
五、群组认证
群组的作用是对用户进行分类,如普通组和管理组,并分配给不同的权限。
1.创建群组文件。
- 在目录/etc/apache2/authentication下创建文件groups。使用vim打开此文件并设置群组名单。
- 格式为:
- 每组一行;
- 用空格分隔组成员;
- 冒号分隔组名与组成员。
group_normal:user1 user2
grop_admin:user3 user4
#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>
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则不行。