apach htpasswd开启目录访问认证

htpasswd建立和更新存储用户名、密码的文本文件, 用于对HTTP用户的basic认证

htpasswd命令参数

1
2
3
4
5
6
7
8
-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。

开启目录验证

假设apache的根目录是/usr/local/apache/,htpasswd位于Apache的bin目录

1.建立用户

1
htpasswd -c /root/.htpasswd admin

其中 .htpasswd 是存储账户密码的文件 admin是用户名
系统会要求您输入两遍密码

2.编辑httpd.conf

在httpd.conf里加入如下几句代码

1
2
3
4
5
6
<Directory "/data/www/test.com/test/">
     AuthType basic
     AuthName "Authorization "
     AuthUserFile /root/.htpasswd
     Require user cnsecer
</Directory>

其中”/data/www/test.com/test/ “就是要权限访问的目录

AuthUserFile 放存账户密码的文件
Require user 后紧跟 允许访问的用户名

3.重启 apache

1
service httpd restart

使用.htaccess配置文件对目录设置密码保护教程

1、使用apache htpasswd.exe创建密码文件,命令请看PHP推荐教程:apache htpasswd命令用法详解
2、在需要保护的目录下创建创建.htaccess配置文件(比如:/www/manage)
3、在.htaccess配置文件中的写入配置信息,.htaccess配置文件的写法与apache配置文件有所不同,没有Directory

1
vim .htaccess
1
2
3
4
AuthType Basic
AuthName "WORKING CENTER" #引号中的是说明文字,随便写
AuthUserFile /etc/.passwd #AuthUserFile指的是保存用户名和密码的文件位置(绝对路径)
Require like likeli #用户名为like,密码为likeli(如果这行写为Require valid-user表示指定只有.htpasswd文件包含的合法用户才能访问。)

4、保存.htaccess配置文件,并将.htaccess配置文件放置

在需要设置密码保护的目录下,比如/data/www/XXXX目录
上述.htaccess配置功能与第一种方法实现的功能是一样的。
这时浏览加密的网站就需要输入用户名密码了。

.htaccess配置注意事项

除了和apache httpd.conf配置一样需要注意的那些问题之外,容易出现的一个错误是如果配置不正确,会出现.htaccess配置文件不起作用的问题,这是因为apache AllowOverride指令,决定了你的.htaccess是否能正常开启并启用。从安全性考虑,apache httpd.conf配置文件中网站根目录的AllowOverride属性一般都配置成不允许任何Override ,即

1
2
3
<Directory />
AllowOverride None
</Directory>

所以要使apache能够正常的读取.htaccess文件的内容,开启.htaccess功能,使.htaccess配置文件中的设置起作用,就必须对网站根目录或者.htaccess 所在目录进行配置,将AllowOverride None更改为AllowOverride All。