子目录上基于.htaccess的身份验证

基于.htaccess的身份认证子目录

作者: Nayyar Ahmad

联系人: nayyares * AT * gmail * DOT * com

主页: www.cbtcandy.org

奉献: 对于 Baji 为了所有这些努力,她为我做了。

前言:

.htaccess用于提供每个目录基础更改配置的功能,该文件可以包含要在包含.htaccess文件的目录上强制执行的一个或多个指令。

.htaccess是此配置修改文件的受欢迎名称,可以通过更改Apache配置文件中的AccessFileName参数来更改此默认名称。 即

AccessFileName .anyname

在这个howto中,我将采取两个并行级别子目录的虚拟场景,并将对它们两者执行密码验证。 这意味着只有那些用户可以访问这些具有正确用户名和密码的目录。

所以开始:)

在这里,我假设您的DocumentRoot目录是/ var / www / html,但是如果您有VirtualHost配置,甚至在其他根目录上配置了Apache,则可以根据您的情况进行调整。

注意:我将为这些目录获取两个虚拟名称作为test-dir1test-dir2

1创建目录:

$ cd  /var/www/html
$ mkdir  test-dir1
$ mkdir test-dir2

2测试HTML文件创建:

在第一个目录中创建html文件。

$ cd  /var/www/html/test-dir1
$ cat > index.htm
<html>

<head> TEST PAGE IN TEST-DIR1. </head>

</html>

在第二个目录中创建html文件。

$ cd /var/ www/html/test-dir2
$ cat  > index.htm
<html>

<head> TEST PAGE IN TEST-DIR2.</head>

</html>

3浏览测试页:

现在您可以浏览和测试,无论页面是否可用,通过打开任何Web浏览器,我喜欢Firefox(因为它摇滚:))并键入:

http:// localhost / test-dir1 /

这将显示第一个目录测试页面,和

http:// localhost / test-dir2 /

将在test-dir2中显示第二个测试页。

如果你能看到这两个页面,这意味着你几乎要摇滚.htaccess。

4 .htaccess文件创建:

$ cd  /var/www/html/test-dir1
$ vi  .htaccess

将以下行写入此文件:

AuthName "Authorized Users Only."

AuthType Basic

AuthUserFile /etc/httpd/conf/.htpasswd

require user testusr

现在我将解释一下,我们在这个文件中写了什么魔术线:

AuthName参数仅在用户登录时定义密码输入框的标题,而AuthType告诉服务器正在使用哪种处理方式,而Basic几乎是任何目的都是最常见的,完全足够的。   AuthUserFile   用于定义.htpasswd文件的位置,此文件包含用户将在.htaccess文件中进行身份验证的密码要求用户用于识别受信任的用户,如果有多个受信任的用户,则可以在空格列表中指定其名称。

现在要使test-dir2受到.htaccess的保护 ,我们需要将它从test-dir1复制到test-dir2   使用以下命令:

$ cp /var/www/html/test-dir1/.htaccess   /var/www/html/test-dir2/

5用户创建:

这里我们将创建一个测试用户来检查我们的.htaccess :)

$ adduser   testusr
$ passwd   testusr

6告诉Apache关于用户:

现在我们必须通知Apache关于用户及其密码,但是在进入这一步之前,我有一个社会责任,即解释RPM和源Apache安装差异。 :)如果您从RPM安装了Apache,那么它将在/ usr / local / bin中安装所有相关的命令,所以没有问题,可以在系统的任何地方给出htpasswd命令,但是如果从源代码安装过Apache,找到Apache bin目录来执行htpasswd命令。 在这个HowTo我会给两种方式,这里是:

$ htpasswd  -c /etc/httpd/conf/.htpasswd  testusr

如果您的/ usr / local / bin中htpasswd ,则如果从RPM安装Apache,则上述命令将会起作用。 /etc/httpd/conf/.htpasswd是将包含经过身份验证/受信任用户密码的文件的位置。

要么

$ cd /apache/bin/
$ ./htpasswd -c /etc/httpd/conf/.htpasswd   testusr

如果您从源代码中安装了Apache,则上述命令将正确, $ cd / apache / bin可以根据您的系统进行调整,也许您已经安装在其他地方。

7 .htpasswd文件权限:

我们需要设置.htpasswd文件的文件权限,并使apache用户成为该文件的所有者。

$ chown apache.apache  /etc/httpd/conf/.htpasswd 

8编辑httpd.conf:

现在我们必须编辑httpd.conf ,因为Apache需要被通知.htaccess ,这里我们将更改AllowOverride All | 没有 Authconfig ,现在有两种情况,一种如果你正在托管一个网站和其他如果你有VirtualHost,这里是第一种情况:

在这种情况下,我们在httpd.conf文件中只有一个Directory标签,因为我们只托管一个站点,所以我们将编辑/ var / www / html<Directory>标签。

<Directory "/var/www/html">
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all
</Directory>

现在第二种情况,当我们有几个站点托管,即VirtualHost:

<VirtualHost www.cbtcandy.org>
  DocumentRoot /var/www/html/cbtcandy
  ServerName www.cbtcandy.org
  <Directory /var/www/html/cbtcany> 

    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
    Options -Indexes
  </Directory>
</VirtualHost>

9重新启动Apache:

现在,您必须重新启动Apache服务器才能重新加载配置。

对于基于RPM的系统:

$ service httpd restart

对于基于源的系统,调整Apache的bin目录路径。

$ /apache/bin/apachectl restart

10测试:

现在一切都准备好测试,再次打开你最喜欢的浏览器,并尝试打开以下链接:

http:// localhost / test-dir1 /

http:// localhost / test-dir2 /

注意: 当您浏览这些链接时,您将被要求输入用户名和密码,一旦您提供它们将带您进入测试页面。 但一旦您登录到一个目录,则不需要另一个测试目录的用户名和密码,因为Apache不会一次又一次地询问用户名和密码,以达到等级或子目录中的目录。 所以一旦你通过身份验证,孩子和并行目录就可以使用了。 但是,如果您仍然要检查它们,那么使用 链接 文本浏览器,这是我检查它们。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏