Skip to content

📖 命令参考

密钥体系说明

每个用户拥有独立的安全密钥(userKey,8-32字符),密码公式为:

SHA256(builtinKey:userKey:YYYYMMDD) → base64 编码 → 最终密码
  • builtinKey:编译时注入,客户端和服务端天然一致
  • userKey:添加用户时交互输入或从文件读取,每用户独立,8-32字符
  • 日期:当天 YYYYMMDD,确保每天密码不同

::: important 安全设计 客户端仅负责密码重置,不提供密码明文输出。密码查询统一通过 Web 服务进行,便于审计和访问控制。 :::

密码查询

密码查询请通过 Web 服务进行,客户端不再提供解密输出功能:

用户管理

-add-user

添加或更新用户。安全密钥通过交互方式安全输入,不回显到终端。

安全限制

  • 禁止将 root 用户作为密码重置对象,添加 root 用户将被拒绝
  • 免费版最多管理 1 个用户,超出上限将无法添加
bash
# 添加用户(交互输入安全密钥)
sudo PasswordReset -add-user=admin -add

# 配合其他属性
sudo PasswordReset -add-user=admin -add -sudo-nopasswd -allow-ssh

# 设置自动创建属性
sudo PasswordReset -add-user=newuser -auto-create

::: important 安全设计 安全密钥支持两种输入方式:

  1. 交互输入(推荐):直接粘贴,不会回显到终端
  2. 从文件读取:文件仅允许一行内容,8-32字符,读取后自动删除源文件,避免密钥残留

密钥不允许包含管道符 |、重定向 <>、命令替换 ` 等特殊符号。 :::

-add

立即创建不存在的系统用户。配合 -add-user 使用。

-auto-create

设置用户配置属性:当系统用户被误删除后,下次密码重置时自动重建。

-sudo

启用sudo权限(需要密码)。将用户添加到 sudo/wheel 组,用户执行 sudo 时需要输入密码。

bash
# 启用sudo权限(需要密码)
sudo PasswordReset -add-user=admin -sudo -add

-sudo-nopasswd

启用免密sudo,隐含启用 -sudo,允许免密执行 su - root(仅限 Linux)。

bash
# 免密sudo
sudo PasswordReset -add-user=admin -sudo-nopasswd -add

-random-username

启用随机用户名模式(仅专业版及以上)。启用后忽略传入的用户名,改为从随机生成的 UserKey 中提取纯字母作为用户名(去除非字母字符 → 转小写 → 取前 32 字符)。

每次密码重置周期都会:

  1. 删除旧随机用户的系统账号
  2. 生成新的随机 UserKey 和用户名
  3. 创建新系统用户并设置密码
bash
# 随机用户名模式(服务安装时)
sudo PasswordReset -service-install -random-username

# 随机用户名模式(直接添加用户)
sudo PasswordReset -add-user=admin -random-username

随机用户信息加密存储在 /etc/PasswordReset/.random_user,权限 0400,仅 root 可读。

-allow-ssh

允许 SSH 登录(默认禁止)。程序会自动将用户添加到 /etc/ssh/sshd_configDenyUsers 列表。

-remove-user

删除用户配置。

bash
sudo PasswordReset -remove-user=admin

-list-users

列出所有已配置的用户及其属性。

bash
sudo PasswordReset -list-users

-list-system-users

列出当前系统中可登录的用户。

bash
sudo PasswordReset -list-system-users

服务管理

-service-install

安装系统服务。

  • Linux: 创建 systemd timer + oneshot 服务,由 timer 周期触发执行
  • Windows: 创建 Windows SC 服务

安装时自动完成:

  1. 将二进制复制到 /usr/local/bin/PasswordReset(权限 0700
  2. 创建软链接 /usr/sbin/PasswordReset/usr/local/bin/PasswordReset
  3. 注册 systemd 服务文件并启动
bash
# 基本安装
sudo ./PasswordReset_linux-X86_64 -service-install -hour=6

# 安装并开启监控上报
sudo ./PasswordReset_linux-X86_64 -service-install -hour=6 \
  -report-server=http://monitor.example.com:12396

# 安装并开启上报(带 API Key)
sudo ./PasswordReset_linux-X86_64 -service-install -hour=6 \
  -report-server=http://monitor.example.com:12396 \
  -report-api-key=my-secret-key

# 安装后直接使用命令
sudo PasswordReset -service-install -hour=12

安全加固

服务安装时自动应用最小权限原则:

  • 二进制安装到 /usr/local/bin/PasswordReset,权限 0700,仅 root 可执行
  • 软链接 /usr/sbin/PasswordReset/usr/local/bin/PasswordReset
  • 配置目录 /etc/PasswordReset/ 权限 0700,仅 root 可访问
  • 用户配置文件权限 0600,仅 root 可读写
  • systemd 服务启用 ProtectSystem=strictPrivateTmp=trueNoNewPrivileges=true

-service-uninstall

卸载系统服务。自动清理:systemd 服务/timer 文件、二进制、软链接、备份。

bash
sudo PasswordReset -service-uninstall

-service-name

自定义服务名称(默认: PasswordReset)。

bash
sudo PasswordReset -service-install -service-name=MyService -hour=6

-hour

设置密码重置间隔时间,单位为小时。

-report-server

设置上报服务器地址。安装服务时指定,客户端会在每次密码重置成功后自动上报状态。

bash
sudo PasswordReset -service-install -hour=6 \
  -report-server=http://monitor.example.com:12396

-report-api-key

设置上报服务器的 API Key(可选)。当监控服务端开启了 API Key 校验时,客户端必须携带正确的 Key 才能上报成功。

bash
sudo PasswordReset -service-install -hour=6 \
  -report-server=http://monitor.example.com:12396 \
  -report-api-key=my-secret-key

监控面板的部署和 API Key 配置请参考 监控面板

打印当前系统的服务管理命令,不实际执行操作。

bash
sudo PasswordReset -print-service-cmd

其他

-h / -help

显示帮助信息。

-v / -version

显示版本信息。

基于 MIT 许可发布