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
选项。
- 使用批处理模式; 即,从命令行获取密码而不是提示 Importing 密码。请谨慎使用此选项,因为 密码在命令行上清晰可见 。有关脚本的使用,请参见
-
-i
- 从标准 Importing 读取密码而不进行验证(用于脚本)。
-
-c
- 创建 passwdfile。如果 passwdfile 已经存在,则将其重写并截断。此选项不能与
-n
选项结合使用。
- 创建 passwdfile。如果 passwdfile 已经存在,则将其重写并截断。此选项不能与
-
-n
- 在标准输出上显示结果,而不是更新数据库。该选项更改了命令行的语法,因为省略了 passwdfile 参数(通常是第一个参数)。不能与
-c
选项结合使用。
- 在标准输出上显示结果,而不是更新数据库。该选项更改了命令行的语法,因为省略了 passwdfile 参数(通常是第一个参数)。不能与
-
-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 文件(如果存在)。
- DBM 格式文件的文件名。通常不带 extensions
-
username
- 在 passwdfile 中创建或更新的用户名。如果该文件中不存在用户名,则会添加一个条目。如果确实存在,则更改密码。
-
password
- 要加密并存储在 DBM 文件中的纯文本密码。仅与
-b
标志一起使用。
- 要加密并存储在 DBM 文件中的纯文本密码。仅与
-
-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
如果在访问文件时遇到问题,则返回1
; 2
如果命令行存在语法问题,则返回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 密码文件(例如,由htdbm
Management 的 Web 密码文件)不应位于 Web 服务器的 URI 空间内-也就是说,它们不应使用浏览器来获取。
不建议使用-b
选项,因为使用该选项时,未加密的密码会出现在命令行中。
使用crypt()
算法时,请注意,仅使用密码的前 8 个字符来构成密码。如果提供的密码更长,多余的字符将被静默丢弃。
SHA 加密格式不使用盐化:对于给定的密码,只有一个加密的表示形式。 crypt()
和 MD5 格式通过在随机盐字符串前添加前缀来表示,从而使针对密码的字典攻击更加困难。
按当今的标准,SHA 和crypt()
格式是不安全的。
Restrictions
在 Windows 平台上,使用htdbm
加密的密码的长度不得超过255
个字符。较长的密码将被截断为 255 个字符。
htdbm
使用的 MD5 算法特定于 Apache 软件;使用它加密的密码将无法在其他 Web 服务器上使用。
用户名限制为255
个字节,并且不能包含字符:
。