ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# dbmmanage - 管理DBM格式的用户认证文件 `dbmmanage`建立和更新存储用户名和密码的DBM格式的文件,以用于`mod_authn_dbm`对HTTP用户进行基本认证。Apache HTTP服务器上的有效资源可以被限制为仅允许由`dbmmanage`建立的文件中的用户所访问。此程序仅用于用户名是存储在一个DBM文件中的情况下,如果使用文本数据库,请参见`htpasswd` 。 本手册页仅列出命令行参数,配置用户认证的相关信息请参见`认证、授权、访问控制`文档。 ## 语法 `**dbmmanage** [ encoding ] filename add|adduser|check|delete|update username [ encpasswd [ group[,group...] [ comment ] ] ]` `**dbmmanage** filename view [ username ]` `**dbmmanage** filename import` ## 选项 `filename` DBM格式文件的文件名。一般不带 `.db`, `.pag`, `.dir` 后缀。 `username` 操作所针对的用户。username中不能有冒号(`:`)。 `encpasswd` 这是已经加密的密码,用于`update`和`add`命令。使用一个连字符(`-`)可以显示输入密码的提示,然后输入。另外,在用于`update`命令时,使用一个句号(`.`)可以保持原有密码不变。 `group` 用户所属的组名,组名中不能有冒号(`:`)。如果不希望指定该用户所属的组,可以使用一个连字符(`-`),但是需要填写comment项。另外,在用于`update`命令时,使用一个句号(`.`)可以保持原来所属的组不变。 `comment` 这是对该用户的说明,如真实姓名、邮件地址之类。服务器本身并不使用此信息。 ### 编码 `-d` crypt 加密(在Windows和Netware以外平台上的默认值) `-m` MD5 加密(在Windows和Netware平台上的默认值) `-s` SHA1 加密 `-p` 纯文本(_不推荐_) ### 命令 `add` 在filename中增加一个包含了username和已加密密码encpasswd的项。 ``` dbmmanage passwords.dat add rbowen foKntnEF3KSXA ``` `adduser` 要求输入密码,然后在filename中增加一个username项。 ``` dbmmanage passwords.dat adduser krietz ``` `check` 要求输入密码,然后检查filename中是否存在username并且其密码与输入的相同。 ``` dbmmanage passwords.dat check rbowen ``` `delete` 在filename中删除username项。 ``` dbmmanage passwords.dat delete rbowen ``` `import` 从`STDIN`读取 `username:password` 的信息(每行一对),然后增加到filename中。其中的密码必须是已加密的。 `update` 类似`adduser`命令,但是它可以确认username已经存在于filename中。 ``` dbmmanage passwords.dat update rbowen ``` `view` 仅显示DBM文件的内容。如果指定了username则仅显示该用户的信息。 ``` dbmmanage passwords.dat view ``` ## Bugs 注意,实际上存在有许多不同的DBM文件格式,你的系统中也可能存在不止一种的支持库,常见的有SDBM, NDBM, GDBM, Berkeley DB 2 。麻烦的是,所有这些库都使用了不同的文件格式,因而你必须确保filename所采用的格式能够为`dbmmanage`所接受。目前,`dbmmanage`无法自己确定所查找的文件的DBM类型。如果使用了错误的格式,则简单返回nothing ,或者建立一个不同名称的不同的DBM文件,而最坏的情况是,在试图写入这个文件时,可能会破坏该DBM文件。 `dbmmanage`有一个DBM格式参数选择列表,在程序前部由 `@AnyDBM::ISA` 数组定义。由于我们更喜欢 Berkeley DB 2 格式,`dbmmanage`查找系统库的顺序是:Berkeley DB 2, NDBM, GDBM, SDBM 。`dbmmanage`会使用第一个找到的库来处理所有的DBM文件操作。此顺序与perl中标准的 `@AnyDBM::ISA` 的顺序略微不同,所以,如果要使用任何其他工具来管理DBM文件,则必须确保该工具是按此顺序处理的。在用其他语言比如C的程序来处理这些文件时,也要考虑这一点。 在大多数Unix系统中,都可以用`file`程序来查看DBM文件的格式。