# 2026-06-01 文件浏览目录 sudo 提权回退

## 日期
2026-06-01

## 变更摘要
`POST /api/sync/browse` 与写文件/chmod 一致，在 `files_elevation=auto_sudo`（默认）且 `ls` 遇 Permission denied 时自动 `sudo -n bash -c`。

## 动机
- 非 root SSH 用户无法直接 `ls /www/wwwroot`，前端表现为「暂无文件」
- 浏览此前仅用 `exec_ssh_command`，**从未走 sudo**；与「去掉 sudo」无关，应**启用**提权而非关闭

## 涉及文件
- `server/api/sync_v2.py` — `browse_directory`
- `frontend/src/utils/fileMode.ts` — 提示文案含「浏览」

## 迁移 / 重启
- 需 `supervisorctl restart nexus` 部署后端

## 验证方式
1. 服务器 SSH 用户为非 root，`files_elevation` 为 `auto_sudo`（默认）
2. 目标机已安装 `docs/deploy/nexus-files-sudoers.example`（含 bash）
3. 打开 `#/files?server_id=8`，应列出 `/www/wwwroot` 内容

## 运维说明（不要关掉 sudo）

| 策略 | 适用 |
|------|------|
| `auto_sudo`（推荐） | 先普通 `ls`，失败再 sudo |
| `off` | 仅当 SSH 已是 root 或目录对当前用户可读 |
| `always_sudo` | 所有命令先 sudo；sudoers 未配全时反而更易失败 |

若 `always_sudo` 且 sudo 未配好：在「服务器」编辑里改回 **自动提权 (auto_sudo)**，并安装 sudoers 示例。
