天天看点

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的用户名和密码即可访问此界面。
Apache2——设置用户认证(BASIC)
  • 填写user1的用户名和密码即可访问此界面。
Apache2——设置用户认证(BASIC)

五、群组认证

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

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则不行。