ZeroTermux 内置 Linux 命令手册:htpasswd 命令详解与 Apache 密码认证文件实战

原创2026-10-04 17:15:321,690 阅读
文章标签:移动开发开发工具

ZeroTermux 内置 Linux 命令手册:htpasswd 命令详解与 Apache 密码认证文件实战

导读

htpasswd 是 Apache Web 服务器自带的管理工具,用于创建与更新保存用户名和密码的认证文件,是配置 HTTP Basic Auth 目录访问控制的核心前置步骤。本文以 ZeroTermux 仓库内置的 htpasswd 命令手册 为骨架,完整讲解该命令的语法、全部选项、加密算法差异与增删改查实战,并结合仓库源码说明这套手册在 Android 终端应用中的离线查询机制。读完本文,你将能够在 Termux 环境下独立完成认证文件的创建、追加、校验、删除与密码修改,并将其接入 Apache 的 .htaccess 目录保护配置。

一、命令概述:Apache 服务器的基本认证管家

htpasswd 是 Apache(httpd)Web 服务器内置的命令行工具,用于创建和更新储存用户名、域和用户基本认证(HTTP Basic Authentication)的密码文件。

在实际应用中,当我们需要对某个网站目录、管理后台或下载目录设置"用户名 + 密码"的访问门槛时,Apache 会读取一个格式为 用户名:加密后的密码 的文本文件完成校验,而这个文件正是由 htpasswd 生成的。在 ZeroTermux 的 cmd 手册目录 中,它与 apachectl 命令手册(Apache 前端控制工具)互为配套,前者负责"管人",后者负责"管进程"。

二、语法与选项:八个核心开关全解析

2.1 基本语法

htpasswd(选项)(参数)

命令整体由"选项"与"参数"两部分构成:选项决定加密算法与操作行为,参数则指定要操作的用户名和密码。

2.2 选项对照表

原手册共列出 8 个选项,完整梳理如下:

选项 作用说明 典型场景
-c 创建一个加密文件;若文件已存在,则覆盖重建 首次创建认证文件,或重置整个文件
-n 不更新加密文件,只将加密后的用户名密码显示在屏幕上 临时生成一条认证记录,或查看加密效果
-m 默认采用 MD5 算法对密码进行加密 创建文件时的默认算法(不指定算法时生效)
-d 采用 CRYPT 算法对密码进行加密 兼容旧版本 Unix 密码体系时使用
-p 不对密码进行加密,即明文密码 仅限调试,生产环境不推荐
-s 采用 SHA 算法对密码进行加密 需要 SHA 摘要格式时使用
-b 在命令行中一并输入用户名和密码,而不是根据提示输入密码 脚本化批量操作用户
-D 删除指定的用户 从认证文件中移除某个账号

需要说明的是,加密算法的可用集合随 Apache 版本不同而演进(较新版本还引入了 bcrypt 等更强算法),具体默认算法以当前环境所安装 httpd 版本为准,-m、-d、-s、-p 分别对应四种不同的存储格式。

2.3 参数说明

  • 用户:要创建或者更新密码的用户名;
  • 密码:用户的新密码。

值得注意的是:当未使用 -b 选项时,密码不会出现在命令行中,而是由命令执行后交互式提示输入,这样可避免密码通过 shell 历史记录泄露,更安全。

三、加密格式浅析:MD5 / CRYPT / SHA / 明文

htpasswd 生成的认证文件每一行形如 用户名:密码散列值,散列值的前缀标识了算法类型。从源码结构看,这套命令手册面向的是 Termux 环境下的真实 Linux 工具链,四种算法的定位分别如下:

  • MD5(-m):默认算法,采用 Apache 变体的 MD5 加盐散列(apr1),兼容性好,是绝大多数场景的首选;
  • CRYPT(-d):传统 Unix crypt(3) 算法,依赖系统库实现,仅取密码前 8 位有效,安全性较弱,用于兼容旧系统;
  • SHA(-s):SHA-1 摘要格式,较 CRYPT 更强,但仍属于早期方案;
  • 明文(-p):直接存储原始密码,任何能读到文件的人都能直接看到密码,仅适合调试环境。

生成文件后,可通过文件内容前缀人工确认当前用户使用了哪种算法,例如 MD5 格式的记录通常以 $apr1$ 开头。

四、实战演练:用户与密码的增删改查

以下实例完整继承自原手册,并结合实际使用习惯补充了说明,可在 Termux 终端中直接执行验证。

4.1 添加第一个用户(创建认证文件)

htpasswd -bc .passwd www.jsdig.com php

执行后,会在当前目录(示例中称为 bin 目录)生成一个 .passwd 文件,其中包含用户名 www.jsdig.com、密码 php 的认证记录,默认采用 MD5 加密方式。

提示:-c 是"创建(create)"开关,仅首次创建时使用。若误对已有文件再次使用 -c,原文件中的全部用户都会被清空重建。

4.2 在原有密码文件中追加用户

htpasswd -b .passwd Jack 123456

去掉 -c 选项后,命令进入"更新/追加"模式:若 Jack 尚不存在则新增该用户,若已存在则直接更新其密码。第一个用户之后的所有用户添加均沿用此写法,依此类推。

4.3 不更新文件,仅显示加密结果

htpasswd -nb Jack 123456

该组合不更新 .passwd 文件,只在屏幕上输出 用户名:加密后密码 一行。适合在脚本中把加密结果拼接进其他配置,或临时验证加密格式是否符合预期。

4.4 删除指定用户

htpasswd -D .passwd Jack

-D 直接从认证文件中删除用户 Jack 对应的整条记录,常用于账号下线或重建前的清理。

4.5 修改用户密码

htpasswd -D .passwd Jack
htpasswd -b .passwd Jack 123456

原手册给出的修改密码方案是两步走:先使用 htpasswd -D 删除指定用户,再利用 htpasswd -b 添加同名用户,即可完成密码的替换。更快捷的替代写法是直接执行 htpasswd -b .passwd Jack 新密码——由于 -b 在用户已存在时会直接覆盖密码,一次调用即可完成修改。

五、将认证文件接入 Apache 目录保护

生成好的 .passwd 文件只是第一步,要让访问者真正遇到"输入用户名和密码"的弹窗,还需在 Apache 配置或 .htaccess 中声明认证文件位置与保护范围。典型配置片段如下:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.passwd
Require valid-user

其中 AuthUserFile 指向 htpasswd 生成的认证文件绝对路径,Require valid-user 表示放行任何通过校验的用户。配置完成后,可使用 apachectl 命令手册 中的 apachectl configtest 检查语法,再用 apachectl graceful 平滑重载进程使配置生效。

六、ZeroTermux 中的集成方式:离线命令手册的加载原理

这份 htpasswd 手册 并非孤立文档,它隶属于 ZeroTermux 的 Linux 命令速查体系(cmd 目录 下收录了数百条常用命令手册)。从源码看,其展示逻辑位于 CommandDialog.java:

  • 通过 AssetManager.open(String.format("cmd/%s", cmd)) 按命令名打开 assets 下的同名 Markdown 文件;
  • 使用 CommonMark 的 Parser 解析文档为语法树;
  • 再由 HtmlRenderer 渲染为 HTML,最终通过 web_view.loadData(...) 在对话框内离线展示。

这意味着无需联网即可在手机上随时查阅 htpasswd 等命令的完整用法,是 Termux 场景下离线学习与排障的实用入口。在批量运维场景中,也可以结合 rpmquery 命令手册(其中示例 rpmquery -qf /usr/bin/htpasswd)来确认系统内 htpasswd 二进制属于哪个软件包,进而判断 Apache 组件是否完整安装。

七、注意事项与安全建议

  • -c 慎用:它代表"创建",会覆盖已有文件,追加用户时必须去掉;
  • -p 仅限调试:明文密码意味着文件即密码库,泄露文件等于泄露所有账号;
  • 文件权限:认证文件建议仅对运行 Apache 的用户可读写(如 600 权限),避免被其他系统用户读取;
  • 优先使用交互输入:在交互式终端中不加 -b 由系统提示输入密码,可避免密码进入 shell 历史记录;在脚本中则需 -b 以便无人值守执行;
  • 算法选择:默认 MD5(-m)满足多数场景;如 Apache 版本较新且对安全性有更高要求,可优先选用版本支持的更强散列算法,具体以 htpasswd -h 帮助输出为准。

八、总结

htpasswd 虽小,却是 Apache 基本认证体系的基石。掌握它的 8 个选项与增删改查四类操作,你就能在 Termux 中独立搭建一套目录访问控制:-bc 创建文件、-b 追加/更新用户、-nb 预览密文、-D 删除账号,最后配合 AuthUserFile 与 Require valid-user 让 Apache 真正执行校验。如需在手机上随时复习,可直接打开 ZeroTermux 内置的 htpasswd 命令手册 离线查阅。

登录后查看全文
ZeroTermux