# 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` 只支持以下两个控制命令: ```bash 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 文件复制后,可以执行一次: ```bash systemctl daemon-reload ``` 安装器不得执行以下命令: ```bash systemctl enable Scert-admin systemctl start Scert-admin systemctl restart Scert-admin ``` 安装完成后仅提示管理员在确有需要时手动执行 `systemctl start Scert-admin`;平时保持停止,交互完成后程序自行退出。 安装或升级验收应分别检查正式包来源、主服务运行身份、Unix Socket 权限、真实交互终端、拒绝后台及非授权调用、系统邮件送达和重置后的登录状态。部署人工处置还必须以实际 SSH 文件操作和 HTTPS 核验为证据,不能只根据服务退出码或测试夹具宣布生产通过。