htpasswd-Management 用户文件以进行基本身份验证

htpasswd用于创建和更新用于存储用户名和密码以用于 HTTP 用户基本身份验证的平面文件。如果htpasswd无法访问文件,例如无法写入输出文件或无法读取文件以更新文件,它将返回错误状态且不做任何更改。

可将 Apache HTTP 服务器上可用的资源限制为htpasswd创建的文件中列出的用户。该程序只能 Management 存储在平面文件中的用户名和密码。但是,它可以加密和显示密码信息,以供其他类型的数据存储使用。要使用 DBM 数据库,请参见dbmmanagehtdbm

htpasswd使用 bcrypt(为 Apache,SHA1 或系统的crypt()例程修改的 MD5 版本)加密密码。由htpasswdManagement 的文件可能包含多种不同编码类型的密码;有些用户记录可能具有 bcrypt 或 MD5 加密的密码,而同一文件中的其他用户记录可能具有使用crypt()加密的密码。

本手册页仅列出命令行参数。有关在httpd中配置用户身份验证所必需的指令的详细信息,请参阅 Apache 手册,该手册是 Apache 发行版的一部分,或者可以在http://httpd.apache.org/找到。

Synopsis

htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username

htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username password

htpasswd -n [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] username

htpasswd -nb [ -m | -B | -d | -s | -p ] [ -C cost ] username password

Options

  • -b

    • 使用批处理模式; ,从命令行获取密码而不是提示 Importing 密码。请谨慎使用此选项,因为 密码在命令行上清晰可见 。有关脚本的使用,请参见-i选项。在 2.4.4 及更高版本中可用。
  • -i

    • 从标准 Importing 读取密码而不进行验证(用于脚本)。
  • -c

    • 创建 passwdfile。如果 passwdfile 已经存在,则将其重写并截断。此选项不能与-n选项结合使用。
  • -n

    • 在标准输出上显示结果,而不是更新文件。这对于生成 Apache 可接受的密码记录以包含在非文本数据存储中非常有用。该选项更改了命令行的语法,因为省略了 passwdfile 参数(通常是第一个参数)。不能与-c选项结合使用。
  • -m

    • 对密码使用 MD5 加密。这是默认设置(自 2.2.18 版本开始)。
  • -B

    • 对密码使用 bcrypt 加密。当前认为这是非常安全的。
  • -C

    • 仅与-B(bcrypt 加密)结合使用,才允许使用此标志。它设置用于 bcrypt 算法的计算时间(较高的值更安全,但较慢,默认值:5,有效:4 到 17)。
  • -d

    • 对密码使用crypt()加密。 Windows 和 Netware 上的httpd服务器不支持此功能。此算法将密码长度限制为 8 个字符。按照当今的标准,此算法“不安全”。在 2.2.17 版之前,它一直是默认算法。
  • -s

    • 对密码使用 SHA 加密。使用 LDAP 目录交换格式(ldif)促进与 Netscape 服务器之间的迁移。按照当今的标准,此算法“不安全”。
  • -p

    • 使用纯文本密码。尽管htpasswd将支持所有平台上的创建,但是httpd守护程序将仅在 Windows 和 Netware 上接受纯文本密码。
  • -D

    • 删除用户。如果用户名存在于指定的 htpasswd 文件中,它将被删除。
  • -v

    • 验证密码。验证给定的密码与指定的 htpasswd 文件中存储的用户密码匹配。在 2.4.5 及更高版本中可用。
  • passwdfile

    • 包含用户名和密码的文件名。如果给出了-c,则如果该文件不存在则创建该文件,或者如果该文件不存在则重写并截断该文件。
  • username

    • 在 passwdfile 中创建或更新的用户名。如果该文件中不存在用户名,则会添加一个条目。如果确实存在,则更改密码。
  • password

    • 要加密并存储在文件中的纯文本密码。仅与-b标志一起使用。

Exit Status

如果在 passwd 文件中成功添加或更新了用户名和密码,则htpasswd返回零状态(“ true”)。 htpasswd如果在访问文件时遇到问题,则返回12如果命令行存在语法问题,则返回2;如果以交互方式 Importing 密码并且验证项不匹配,则返回3;如果其操作被中断,则返回4;如果值是5太长(用户名,文件名,密码或最终计算的记录);如果用户名包含非法字符(请参见Restrictions section),则为6;如果该文件不是有效的密码文件,则为7

Examples

htpasswd /usr/local/etc/apache/.htpasswd-users jsmith

添加或修改用户jsmith的密码。提示用户 Importing 密码。密码将使用修改后的 Apache MD5 算法进行加密。如果文件不存在,则htpasswd除了返回错误外将不执行任何操作。

htpasswd -c /home/doe/public_html/.htpasswd jane

创建一个新文件并在其中存储用户jane的记录。提示用户 Importing 密码。如果文件存在且无法读取或写入,则不会更改该文件,并且htpasswd将显示一条消息并返回错误状态。

htpasswd -db /usr/web/.htpasswd-all jones Pwd4Steve

使用crypt()算法从命令行(Pwd4Steve)加密密码,并将其存储在指定的文件中。

Security Considerations

Web 密码文件(例如,由htpasswdManagement 的 Web 密码文件)不应位于 Web 服务器的 URI 空间内-也就是说,它们不应使用浏览器来获取。

该程序作为 setuid 可执行文件并不安全。不要使它成为 setuid。

不建议使用-b选项,因为使用该选项时,未加密的密码会出现在命令行中。

使用crypt()算法时,请注意,仅使用密码的前 8 个字符来构成密码。如果提供的密码更长,多余的字符将被静默丢弃。

SHA 加密格式不使用盐化:对于给定的密码,只有一个加密的表示形式。 crypt()和 MD5 格式通过在随机盐字符串前添加前缀来表示,从而使针对密码的字典攻击更加困难。

按当今的标准,SHA 和crypt()格式是不安全的。

Restrictions

在 Windows 平台上,使用htpasswd加密的密码的长度不得超过255个字符。较长的密码将被截断为 255 个字符。

htpasswd使用的 MD5 算法特定于 Apache 软件;使用它加密的密码将无法在其他 Web 服务器上使用。

用户名限制为255个字节,并且不能包含字符:

随着-C选项指定的回合数,计算 bcrypt 密码哈希值的成本增加。 apr-util库在版本1.6.0及更高版本中强制执行最大回合数 17.