# Changelog:文件管理归属列 + 权限对话框 + 统一 sudo 回退 | 项 | 内容 | |----|------| | 日期 | 2026-06-01 | | 设计 | `docs/design/specs/2026-06-01-files-root-ownership-ui-design.md` | ## 变更摘要 - 新增 `remote_shell.py`:`exec_ssh_command_with_fallback`(`sudo -n` 自动重试) - `browse` 返回 `owner` / `group` / `mode_octal` - `chmod` API 支持可选 `owner`/`group`,走 sudo 回退;审计 `file_permission_change` - `file-ops`、剪贴板复制/移动、解压接入 sudo 回退 - 前端:「归属」列 + `FilePermissionDialog`(预设 644/755 等) - 运维示例:`docs/deploy/nexus-files-sudoers.example` ## 涉及文件 - `server/infrastructure/ssh/remote_shell.py`(新) - `server/utils/unix_ls.py`(新) - `server/infrastructure/ssh/remote_archive.py` - `server/api/sync_v2.py` - `server/api/schemas.py` - `frontend/src/components/FilePermissionDialog.vue`(新) - `frontend/src/utils/fileMode.ts`(新) - `frontend/src/pages/FilesPage.vue` - `frontend/src/types/api.ts` - `frontend/src/utils/fileBrowse.ts` - `tests/test_unix_ls.py`(新) ## 验证 ```bash pytest tests/test_unix_ls.py tests/test_posix_paths.py -q ruff check server/infrastructure/ssh/remote_shell.py server/utils/unix_ls.py server/api/sync_v2.py ``` ## 部署 - 后端 + 前端构建上传;目标机按需安装 `nexus-files.sudoers.example`