<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 程序

htdbm - 操作 DBM 密码数据库

可用语言:  en  |  fr  |  tr 

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

Support Apache!

另请参阅

top

概要

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 ]

top

选项

-b
使用批处理模式;即从命令行获取密码,而不是提示输入。此选项应谨慎使用,因为密码在命令行上清晰可见。有关脚本使用,请参阅 -i 选项。
-i
从 stdin 读取密码,不进行验证(用于脚本使用)。
-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 可能在所有平台上都支持它,但 httpd 服务器在 Windows 和 Netware 上不支持它。根据今天的标准,此算法不安全
-s
对密码使用 SHA 哈希。便于从/到使用 LDAP 目录交换格式 (ldif) 的 Netscape 服务器迁移。根据今天的标准,此算法不安全
-p
使用明文密码。虽然 htdbm 将支持在所有平台上创建,但 httpd 守护进程只会在 Windows 和 Netware 上接受明文密码。
-l
在 stdout 上打印数据库中的每个用户名和注释。
-v
验证用户名和密码。程序将打印一条消息,指示提供的密码是否有效。如果密码无效,程序将退出并返回错误代码 3。
-x
删除用户。如果用户名存在于指定的 DBM 文件中,它将被删除。
-t
将最终参数解释为注释。指定此选项时,可以在命令行中追加一个额外的字符串;此字符串将存储在数据库的“注释”字段中,与指定的用户名相关联。
filename
DBM 格式文件的名称。通常不带扩展名 .db.pag.dir。如果给出 -c,则如果 DBM 文件不存在,则创建它,如果存在,则更新它。
username
passwdfile 中创建或更新的用户名。如果 username 不存在于此文件中,则添加一个条目。如果它存在,则密码将被更改。
password
要哈希并存储在 DBM 文件中的明文密码。仅与 -b 标志一起使用。
-TDBTYPE
DBM 文件的类型(SDBM、GDBM、DB 或“default”)。
top

错误

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

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

top

退出状态

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

top

示例

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

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

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

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

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

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

top

安全注意事项

Web 密码文件(如 htdbm 管理的密码文件)不应位于 Web 服务器的 URI 空间内 - 也就是说,它们不应通过浏览器获取。

不建议使用 -b 选项,因为使用它时,明文密码会出现在命令行上。

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

SHA 哈希选项不使用加盐:对于给定的密码,只有一个哈希表示。crypt() 和 MD5 格式通过在前面添加一个随机盐字符串来对表示进行排列,以使针对密码的字典攻击更加困难。

SHA 和 crypt() 格式根据今天的标准是不安全的。

top

限制

在 Windows 平台上,使用 htdbm 哈希的密码长度限制为不超过 255 个字符。更长的密码将被截断为 255 个字符。

htdbm 使用的 MD5 算法特定于 Apache 软件;使用它哈希的密码不能与其他 Web 服务器一起使用。

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

可用语言:  en  |  fr  |  tr 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果它们被实施或被认为无效/与主题无关,则可能被我们的版主删除。有关如何管理 Apache HTTP Server 的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的邮件列表