Record release owner repair and automatic four-site recovery
This commit is contained in:
parent
2b50ac3670
commit
0f362ce6b1
@ -150,6 +150,8 @@ merge 下仍有旧命名目录,不能据目录名推断当前站点归属。fn
|
||||
|
||||
### 命令与恢复
|
||||
|
||||
生产写操作必须以私有发布目录属主www-data执行,例如`runuser -u www-data -- php tools/freenode/manage.php prepare`或`publish`;root直接写操作会被身份检查拒绝。
|
||||
|
||||
`php tools/freenode/manage.php status` 只显示引擎、批次/hash 元数据;`prepare` 读取来源并在 `storage/app/freenode-v2/versions/` 生成私有候选,不分发;`publish` 校验哈希和时效后更新产物;`rollback RELEASE_ID` 恢复指定产物,省略 ID 时使用 previous。
|
||||
|
||||
官方内核由 `python3 tools/freenode/install_validators.py` 安装到 `/opt/master01-freenode/bin/`,仅支持 Linux amd64,固定官方压缩包 SHA-256:Sing-box 1.14.3、Mihomo 1.19.32;另固定Country.mmdb和geoip.metadb的SHA-256,校验目录使用离线GeoIP数据,避免每批自动下载。GeoIP下载入口虽然是latest,内容哈希仍严格固定,日后变化会拒绝安装,需重新核实摘要。不会改现有代理或系统服务。可通过 FREENODE_SINGBOX_BINARY/FREENODE_MIHOMO_BINARY 指向其他已核验版本。
|
||||
@ -267,4 +269,6 @@ SubCheck正式复检任务`28ca01e368dd4255843646407b95927c`于北京时间2026-
|
||||
|
||||
防复发:ReleaseStore在任何独占写锁之前核对实际有效UID与私有根目录属主,身份不一致抛`release_writer_identity_mismatch:expected_uid=33`,不会先创建锁或清单;Pipeline prepare入口同样先检查,避免root运行校验后才失败。共享读锁和只读status仍可读取。生产操作统一`runuser -u www-data -- php tools/freenode/manage.php <action>`,不可用root直接写发布状态。新增跨属主回归须root创建uid33目录验证,本地非root跳过;普通回归实际27项61断言(1项root专属测试跳过)。
|
||||
|
||||
当前状态:权限现场已修复,防复发代码待Git部署及root/cron身份验收;随后核实12:15四站自动分发结果。
|
||||
功能提交`2b50ac3670ce240b9f7aafae5e00fffa7c40bed2`已推送并快进部署;生产root回归27项64断言全部通过,www-data回归27项61断言、仅root专属项按设计跳过。额外实际以root调用publish,确认返回身份不符且current SHA未变;www-data读取今日16份完整产物及文章计数1855均通过。私有发布树内没有root属主文件,所有原并行Git状态保留。
|
||||
|
||||
本轮12:12自动发布曾再次因相同权限失败,修复后以www-data补发布今日候选成功,两份清单继续www-data:0600;12:15:02—12:15:12原有定时分发自行完成,无需重放全部cron。四站10份今日落盘与本批次哈希匹配(Clash保持既有trim差异),Nodehub服务器侧10个精确HTTPS地址均200、响应哈希与文件一致。已完成权限修复、防复发部署与服务器侧验收,未做线上页面验收或节点联网测试。代码回退点`676196388df7c302e5cbfa14cbdb54f364cdccd8`;属主恢复与代码回退分别处理,不应为回退代码把清单再改回root。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user