使用.htaccess文件设置Apache密码保护的目录

时间:2020-01-09 10:40:42  来源:igfitidea点击:

如何在Linux操作系统上的Apache Web服务器中保护目录?您可以通过多种方式对Apache Web服务器下的目录进行密码保护。这对于防止未经授权的用户和搜索引擎保护文件私密性(当您不希望对数据建立索引时)非常重要。在本教程中,您将了解密码保护服务器上目录的基础。您可以使用以下任何一种方法:

  • 将身份验证伪指令放在主服务器配置httpd.conf文件的<Directory>节中,是实现这种身份验证的首选方法。
  • 如果您无权访问Apache httpd.conf文件(例如,共享主机),则可以在名为.htaccess的文件的帮助下创建密码保护目录。 .htaccess文件提供了一种基于每个目录进行配置更改的方法。

为了创建受Apache密码保护的目录,您需要:

  • 密码档案
  • 和您要密码保护的目录名称(/var/www/docs)

步骤1:确保将Apache配置为使用.htaccess文件

您必须在httpd.conf文件中具有AllowOverride AuthConfig指令,以使这些指令生效。
查找DocumentRoot目录条目。
在此示例中,我们的DocumentRoot目录设置为/var/www。
因此,我在httpd.conf中的条目如下所示:

<Directory /var/www>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

保存文件并重新启动Apache(如果使用Red Hat/Fedora Linux):

# service httpd restart

如果您使用的是Debian Linux:

# /etc/init.d/apache-perl restart

步骤2:使用htpasswd创建密码文件

htpasswd命令用于创建和更新用于存储用户名和密码的平面文件(文本文件),以对Apache用户进行基本身份验证。
通用语法:htpasswd -c密码文件用户名

其中:

  • -c:创建密码文件。如果密码文件已经存在,它将被重写并被截断。
  • username:要在密码文件中创建或更新的用户名。如果该文件中不存在用户名,则会添加一个条目。如果确实存在,则更改密码。

在apache文档根目录之外创建目录,以便只有Apache可以访问密码文件。
密码文件应放置在无法从网络访问的位置。
这是为了使人们无法下载密码文件:

# mkdir -p /home/secure/

添加名为Hyman的新用户

# htpasswd -c /home/secure/apasswords Hyman

确保/home/secure/apasswords文件可被Apache Web服务器读取。
如果Apache无法读取您的密码文件,它将不会对您进行身份验证。
您需要使用chown命令设置正确的权限。
通常apache使用www-data用户。
使用以下命令找出Apache用户名。
如果您使用的是Debian Linux,请使用pache2.conf,输入以下命令:

# grep -e '^User' /etc/apache2/apache2.conf

输出:

www-data

现在允许apache用户www-data读取我们的密码文件:

# chown www-data:www-data /home/secure/apasswords
# chmod 0660 /home/secure/apasswords

如果您使用的是RedHat和Fedora核心,请执行以下命令:

# grep -e '^User' /etc/httpd/conf/httpd.conf

输出:

apache

现在,允许apache用户apache读取我们的密码文件:

# chown apache:apache /home/secure/apasswords
# chmod 0660 /home/secure/apasswords

现在添加了我们的用户名,但是您需要配置Apache Web服务器以请求密码并告诉服务器允许哪些用户访问。
让我们假设您有一个名为/var/www/docs的目录,并且您想使用密码来保护它。

如果目录/var/www/docs不存在,请创建一个目录:

# mkdir -p /var/www/docs

使用文本编辑器创建.htaccess文件:

# cd /var/www/docs
# vi .htaccess

添加以下文本:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/secure/apasswords
Require user Hyman

保存文件并退出到shell提示符。

步骤3:测试您的配置

触发您的浏览器类型url http://yourdomain.com/docs/或http://localhost/docs /或http://ip-address/docs

当提示输入用户名和密码时,请提供用户名插孔和密码。
您可以将以下行添加到httpd.conf文件中的任何文件<Diretory>条目中:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/secure/apasswords
Require user Hyman

要更改或设置新用户,请再次使用htpasswd命令。

故障排除

如果不接受密码,或者要对与身份验证相关的问题进行故障排除,请打开并查看apache access.log/error.log文件:

Fedora/CentOS/RHEL Linux日志文件位置:

# tail -f /var/log/httpd/access_log
# tail -f /var/log/httpd/error_log

Ubuntu/Debian Linux Apache 2日志文件位置:

# tail -f /var/log/apache2/access.log
# tail -f /var/log/apache2/error.log