在《htaccess入门教程》中提到了一个apache工具htpasswd,配合.htaccess使用,实现目录密码保护的功能。这对很多有私密性需求的网站来说,是相当有用的。

htpasswd使用专为Apache作了修改的MD5算法或系统函数crypt()加密密码。htpasswd所管理的文件可以包含两种类型的密码;有些用户的密码使用MD5加密的,而同一个文件中的其他用户密码则使用 crypt()加密。

htpasswd的文件格式:

username:password,每行存储一组。

这个工具放在在apache的bin目录下。可以在命令行中调用它。

apache htpasswd命令用法

  htpasswd [-cmdpsD] passwordfile username

htpasswd -b[cmdpsD] passwordfile username password

htpasswd -n[mdps] username

htpasswd -nb[mdps] username password

-b

使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意,因为命令行中的密码是清晰可见的。
-c

创建passwdfile文件。如果passwdfile已经存在,那么将被清空并改写。该选项不能和 -n 同时使用。
-n
在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法,因为passwdfile参数(通常是第一个)被忽略了。该选项不能和 -c 同时使用。
-m
使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。
-d
使用crypt()对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被htpasswd支持,但是在Windows, Netware, TPF上,该方法不能被httpd所支持。
-s
使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。
-p
使用明文密码(不加密)。虽然htpasswd在所有平台上都支持这种方法,但是httpd只能在Windows, Netware, TPF上支持这种方法。
-D
如果username存在于passwdfile中,则删除该用户。
passwdfile
包含用户名和密码的文本文件的名称。如果使用了 -c 选项,若文件已存在则更新它,若不存在则创建它。
username
在passwdfile中添加或更新记录。若username不存在则添加一条记录,若存在则更新其密码。
password
将被加密并存储到文件中的明文密码。必须和 -b 同时使用。

apache htpasswd命令用法实例

1、如何利用htpasswd命令添加用户?

htpasswd -bc .passwd www.leapsoul.cn php

在bin目录下生成一个.passwd文件,用户名www.leapsoul.cn,密码:php,默认采用MD5加密方式

2、如何在原有密码文件中增加下一个用户?

htpasswd -b .passwd leapsoul phpdev

去掉c选项,即可在第一个用户之后添加第二个用户,依此类推

3、如何不更新密码文件,只显示加密后的用户名和密码?

htpasswd -nb leapsoul phpdev

不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码

4、如何利用htpasswd命令删除用户名和密码?

htpasswd -D .passwd leapsoul

5、如何利用htpasswd命令修改密码?

htpasswd -D .passwd leapsoul

htpasswd -b .passwd leapsoul phpdev

即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。