Scert/deploy/systemd/Scert-admin服务管理说明.md

6.8 KiB

Scert-admin 服务管理说明

服务边界

Scert-admin 是 Linux 本机管理员交互终端,通过受保护的 Unix Socket 连接已初始化的 Scert 主服务。它不监听 TCP/UDP 端口,不激活 /reset 网页,也不提供其他 HTTP 密码恢复或人工处置入口。

Linux 安装程序必须同时安装 Scert 和 Scert-admin 的 systemd 单元,但不得执行 systemctl enable Scert-admin,不得为 Scert-admin 创建开机启动软链接,也不得配置 Restart=always 或其他自动拉起策略。

启动方式

通过已核对主机身份的 SSH 连接进入 root 前台交互终端,然后执行下方的 start 命令。程序会绑定该启动进程和终端;不要加 &、--no-block,不要通过管道、重定向、定时任务或后台服务调用,也不要直接运行二进制。

当前程序不接受命令参数,不从环境变量、文件或管道读取密码;旧的 --code-output 和 /run/scert-admin/reset-code 流程已经停用。

支持的生命周期控制

日常运行时,Scert-admin 只支持以下两个控制命令:

systemctl start Scert-admin
systemctl stop Scert-admin
  • start:在调用者终端显示本机管理菜单,完成、取消或会话过期后退出。新启动必须重新验证本机身份。
  • stop:在另一个已认证的管理员终端中停止本次交互。若已提交人工处置,停止终端不能证明远端没有执行,必须保留处置编号并查询。
  • restart、reload、try-restart 等操作不属于 Scert-admin 的支持范围;单元不提供 ExecReload,且不配置自动重启。
  • enable 不应使用:该单元没有 [Install] 段,因此不会注册开机启动目标。
  • daemon-reload 仅允许由安装、升级程序在替换 unit 文件后执行,不属于日常服务控制命令。

超级管理员密码重置

  1. 选择“重置超级管理员密码”,再确认向绑定邮箱发送验证码。
  2. 从绑定邮箱取得八位验证码,在终端输入;输入不回显。
  3. 输入新密码两次;当前策略为 8 到 12 个字符,包含字母和数字,输入不回显。
  4. 主服务成功保存后提示重置成功,旧登录会话失效;使用新密码重新登录 Web。

发信使用系统配置的邮件服务;邮件失败、邮箱未绑定或会话过期时不得绕过验证,也不得直接修改数据库中的密码字段。验证码和密码不能写入聊天记录、工单、脚本、命令参数或日志。实际系统发信与完整重置仍需部署环境验收,源码测试不代替邮件送达证据。

部署事务核查与人工处置

主服务提供相应能力时,菜单还包含“只读核查部署事务”“人工处置部署事务”“查询人工处置结果”“重新核查不确定处置”。

  • 只读核查不修改原事务、远端文件或锁。
  • 人工处置先输入事务编号,再选择“仅记录核查”“完成提交”或“恢复基线”。终端展示服务器、阶段、动作、有效期和风险,必须完整输入确认文字后才提交。
  • “仅记录核查”不改变原事务终态;“完成提交”和“恢复基线”可能修改远端文件、清理事务备份或重载服务,不能相互替代,失败不会自动切换动作。
  • 提交前保留显示的处置编号。断连、超时或响应不明确时重新启动终端,选择“查询人工处置结果”,输入处置编号而不是事务编号。
  • running 或 uncertain 不是成功。查询不会重放动作、释放占用或删除远端锁;不得手动删锁、重写历史证据或直接修改事务终态来绕过阻塞。

重新核查不确定处置

选择菜单 5,输入已经结束并持久化为 uncertain 的原处置编号。原动作必须是提交或回滚,且原事务处于相应的已核验阶段。系统重新绑定服务器身份、历史记录和当前现场;不接受仍为 running 的处置,不因超时自动接管。

核对原编号、新核查编号、事务、服务器及原动作方向后,完整输入终端显示的确认文字。新核查只读远端文件,确认目标摘要正确、临时文件与备份及锁全部不存在、严格 HTTPS 和最终关闭均通过;不会重载服务、删除锁或重放原动作。成功后以新审计结束原事务并释放占用,原不确定记录永久保留。

核查拒绝或失败继续保留占用;审计不能可靠落盘时不报告成功。断连后只能通过菜单 4 按新核查编号查询。证据不足或现场不满足条件时不得手动补造历史基线、删占用或修改事务终态。

安全限制说明

systemd 无法阻止 root 或具备等效系统权限的操作者调用 status、kill、restart、mask 等管理命令。因此,本项目的可落地安全边界是:

  1. 单元不提供 [Install] 段,默认不会开机自启动。
  2. 单元使用 Restart=no,异常退出不会被 systemd 自动拉起。
  3. 管理终端使用 root 读取显式启动者的终端;主服务仍使用非特权 Scert 用户运行。PrivateNetwork=yes 和 RestrictAddressFamilies=AF_UNIX 限制管理终端的网络能力,不应复制主服务的网络权限。
  4. Scert-admin 不配置独立端口;不得为恢复功能开放公网或局域网端口。
  5. 运维仅提供 start、stop 两个日常控制入口,不通过 Web 触发本机管理员操作。
  6. 任何需要重新加载 unit 的行为仅限安装或升级阶段,不能通过 Web 管理界面触发。
  7. 单元使用 Type=oneshot、TimeoutStartSec=130s;本机会话和一次性确认另有有效期限制,过期后必须重新核查,不能复用旧确认。
  8. 主服务独立验证本机对端身份及协议;密码和邮箱验证码只在调用终端输入,不生成供人工读取的验证码文件。

这些约束不意味着能限制恶意 root 对主机的全部控制能力;它们保证产品提供的管理流程不依赖公网恢复入口、不自动启动或重放人工操作。不要通过取消 systemd 加固或扩大 Socket 权限解决失败。

安装阶段约定

安装器完成 unit 文件复制后,可以执行一次:

systemctl daemon-reload

安装器不得执行以下命令:

systemctl enable Scert-admin
systemctl start Scert-admin
systemctl restart Scert-admin

安装完成后仅提示管理员在确有需要时手动执行 systemctl start Scert-admin;平时保持停止,交互完成后程序自行退出。

安装或升级验收应分别检查正式包来源、主服务运行身份、Unix Socket 权限、真实交互终端、拒绝后台及非授权调用、系统邮件送达和重置后的登录状态。部署人工处置还必须以实际 SSH 文件操作和 HTTPS 核验为证据,不能只根据服务退出码或测试夹具宣布生产通过。