38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
|
|
# 审计 — 文件管理 chmod 不生效修复
|
||
|
|
|
||
|
|
## 范围(文件清单)
|
||
|
|
|
||
|
|
| 文件 | 变更 |
|
||
|
|
|------|------|
|
||
|
|
| `server/application/services/files_browse_service.py` | ETag 含 permissions/owner/group |
|
||
|
|
| `server/api/sync_v2.py` | chmod/chown 分步执行 |
|
||
|
|
| `frontend/src/components/FilePermissionDialog.vue` | 仅变更时提交 owner/group |
|
||
|
|
| `frontend/src/stores/files.ts` | 不继承旧 etag |
|
||
|
|
| `tests/test_files_browse_etag.py` | 权限变更 etag 测试 |
|
||
|
|
|
||
|
|
## Step 3 规则扫描
|
||
|
|
|
||
|
|
| H | 规则 | 结论 |
|
||
|
|
|---|------|------|
|
||
|
|
| H1 | 304 不返回过期权限 | PASS — ETag 含 permissions |
|
||
|
|
| H2 | chmod 不被 chown 连带失败 | PASS — 分步执行 |
|
||
|
|
| H3 | CUD 审计保留 | PASS — `_audit_sync` 未删 |
|
||
|
|
|
||
|
|
## Closure
|
||
|
|
|
||
|
|
| H | 判定 | 依据 |
|
||
|
|
|---|------|------|
|
||
|
|
| H1 | PASS | compute_browse_etag |
|
||
|
|
| H2 | PASS | sync_v2 chmod_file |
|
||
|
|
| H3 | PASS | audit_bits 仍在 |
|
||
|
|
|
||
|
|
## DoD
|
||
|
|
|
||
|
|
- [x] pytest 14 passed
|
||
|
|
- [x] type-check 通过
|
||
|
|
- [x] changelog
|
||
|
|
|
||
|
|
## 验证
|
||
|
|
|
||
|
|
文件页改 644→755 → 列表权限列更新;仅改 mode 不填 chown 时不发 owner 字段。
|