htdbm-操作 DBM 密码数据库

htdbm用于处理 DBM 格式文件,该文件用于存储通过mod_authn_dbm进行 HTTP 用户基本身份验证的用户名和密码。有关这些 DBM 文件的更多信息,请参见dbmmanage文档。

Synopsis

htdbm [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username

htdbm -b [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password

htdbm -n [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username

htdbm -nb [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username password

htdbm -v [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username

htdbm -vb [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password

htdbm -x [ -TDBTYPE ] filename username

htdbm -l [ -TDBTYPE ]

Options

  • -b

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

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

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

    • 在标准输出上显示结果,而不是更新数据库。该选项更改了命令行的语法,因为省略了 passwdfile 参数(通常是第一个参数)。不能与-c选项结合使用。
  • -m

    • 对密码使用 MD5 加密。在 Windows 和 Netware 上,这是默认设置。
  • -B

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

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

    • 对密码使用crypt()加密。 Windows 和 Netware 以外的所有平台上的默认设置。尽管在所有平台上htdbm都可能支持,但是 Windows 和 Netware 上的httpd服务器不支持它。按照当今的标准,此算法“不安全”。
  • -s

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

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

    • 在 stdout 上打印数据库中的每个用户名和 Comments。
  • -v

    • 验证用户名和密码。程序将打印一条消息,指示提供的密码是否有效。如果密码无效,则程序退出并显示错误代码 3.
  • -x

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

    • 将最终参数解释为 Comments。指定此选项后,可以在命令行中附加一个字符串。该字符串将与指定的用户名相关联地存储在数据库的“Comments”字段中。
  • filename

    • DBM 格式文件的文件名。通常不带 extensions.db.pag.dir。如果给出-c,则创建 DBM 文件(如果尚不存在),或者更新 DBM 文件(如果存在)。
  • username

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

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

    • DBM 文件的类型(SDBM,GDBM,DB 或“默认”)。

Bugs

应该意识到,存在多种不同的 DBM 文件格式,并且很可能在您的系统上存在一种以上格式的库。三个主要示例是 SDBM,NDBM,GNU GDBM 和 Berkeley/Sleepycat DB 2/3/4.不幸的是,所有这些库都使用不同的文件格式,并且您必须确保 filename 所使用的文件格式与htdbm期望的格式相同。 htdbm当前无法确定正在查看的 DBM 文件类型。如果针对错误的格式使用它,则只会返回任何内容,或者会创建具有不同名称的其他 DBM 文件,或者在最坏的情况下,如果您尝试写入 DBM 文件,可能会损坏该 DBM 文件。

通常,可以使用大多数 Unix 系统提供的file程序来查看 DBM 文件采用的格式。

Exit Status

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

Examples

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

添加或修改用户jsmith的密码。提示用户 Importing 密码。如果在 Windows 系统上执行,则将使用修改后的 Apache MD5 算法对密码进行加密;否则,将使用系统的crypt()例程。如果该文件不存在,则htdbm将不执行任何操作,除非返回错误。

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

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

htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve

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

Security Considerations

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

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

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

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

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

Restrictions

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

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

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