Combo entry · machine-readable · status partial

权限与安全排查(Permission denied / EACCES / 属主不一致) Partial

工具装好了但一跑就报权限错——Docker 容器读写挂载目录被拒、git 报 dubious ownership、npm 全局安装 EACCES、SSH 私钥权限过宽、Codex 沙盒 setup refresh 报错

本页嵌入 #trove-entity JSON(本组合包全量结构化数据);全库数据见 /agent/trove.json。

Metadata

idcombo-permission-securityrecorded2026-08-29
members6statuspartial

install script ↓

Members (6)

toolroleversioninstallguide
通用定位先分清「权限错」与「环境错」无
# 权限错的特征:报错关键字 Permission denied / EACCES / too open / dubious ownership;
  # 与「环境错」(daemon 不可达 / 端口冲突,见 combo-docker-wsl-env)区分开,走不同排查链。
  # 先看工具自己的日志定位(Codex 沙盒示例,Windows 侧):
  #   C:\Users\<user>\.codex\.sandbox\sandbox.<date>.log
  # 本环境实证:C:\Users\<user>\.codex\.sandbox\ 下存在按日期命名的多份沙盒日志
—
Docker 容器uid 对齐>= 20.10(与 combo-docker-wsl-env 一致)
# 容器 uid 对齐宿主(推荐):
  docker run -u "$(id -u):$(id -g)" -v "$PWD/data:/data" ...
  # compose:user: "${UID}:${GID}"(${UID} 需在 shell 里导出)
  # 一次性修正宿主目录属主:
  sudo chown -R 1000:1000 ./data
  # 临时应急(破坏最小权限原则,仅本机调试):
  docker run -u 0:0 ...
—
Gitsafe.directory 白名单git >= 2.35(白名单报错提示机制;本机实测 2.53.0)
# 白名单按目录登记、不递归——同盘其他仓库还要再 add:
  git config --global --add safe.directory <仓库绝对路径>
  # 仓库很多时才考虑全局信任(共享机器不推荐):
  git config --global --add safe.directory '*'
  # Linux 文件系统可直接改属主(NTFS/exFAT 挂载盘无效,见下方 drvfs 警告):
  sudo chown -R $(id -u):$(id -g) <仓库路径>
—
npm全局 prefix 改到用户目录无(任意 npm 版本;本机 node v22.22.1,npm prefix 默认 /usr/local——正是 EACCES 高发默认值)
# 形态 1(推荐,一劳永逸):
  npm config set prefix ~/.npm-global
  echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
  # 形态 2:把 ~/.npm 所有权还给自己:
  sudo chown -R $(whoami) ~/.npm
  # 国内网络:npm 全局包走 npmmirror(见 combo-mirror-setup):
  npm config set registry https://registry.npmmirror.com
—
SSH私钥权限收紧无
# Linux/macOS/WSL 侧:
  chmod 600 ~/.ssh/id_ed25519    # 私钥
  chmod 644 ~/.ssh/*.pub         # 公钥
  chmod 700 ~/.ssh               # 目录
  # Windows 原生 OpenSSH(chmod 不适用):
  icacls "私钥路径" /inheritance:r /grant:r "%USERNAME%:R"
  # WSL 访问 /mnt/c 上的密钥:drvfs 不支持 chmod(实测 chmod 600 后 ls 仍 777)——
  # 复制到 WSL 内再 chmod,或在 Windows 侧用 icacls 修
—
Codex 沙盒日志定位 + 属主/ACL 修复无
# 1) 先看日志定位(比瞎猜快),搜 setup refresh had errors / write ACE:
  #    C:\Users\<user>\.codex\.sandbox\sandbox.<date>.log(旧版路径 .codex.sandbox)
  # 2) 改 owner(最常见修复):
  takeown /f <目录> /r /d y
  # 3) 补 ACL(owner 正确仍缺权限时):
  icacls <目录> /grant <user>:(OI)(CI)F /T
  # 4) 验证:重开会话触发 setup refresh,日志 errors=[] 即恢复(幂等,无需重装)
—

Install order

  1. 通用定位先行:确认是权限错(Permission denied/EACCES/too open/dubious ownership)而非环境错(daemon/端口,走 combo-docker-wsl-env)。
  2. 系统层权限修复:SSH 私钥与目录权限、WSL 挂载盘特判——这两个最通用,先排除。
  3. 工具层逐域修复:git 白名单 → npm prefix → Codex 沙盒授权 → Docker 容器 uid(docker 依赖 daemon 可达,排最后)。

Dependency warnings

Linked problems

Evidence

Evidence details kept locally (2026-08-29)