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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器