Xcode编译报“Permission denied”本质是当前用户对缓存目录(如DerivedData)缺少读写权限,需修复归属(chown -R $USER:staff)和权限(chmod -R u+w),禁用iCloud同步干扰,并避免使用sudo编译。
xcode 编译时报“permission denied”写入缓存(比如 deriveddata、build/intermediates.noindex 或 /var/folders/...),本质是当前用户对目标目录缺少读写权限,常见于系统升级、磁盘迁移、误用 sudo 操作或 home 目录权限错乱后。解决重点不是强行加 sudo,而是修复归属和权限逻辑。
检查并修复 DerivedData 所在目录权限
Xcode 默认缓存路径为:~/Library/Developer/Xcode/DerivedData
这是最常出问题的位置。执行以下命令确认归属与权限:
-
查看当前归属:
ls -ld ~/Library/Developer/Xcode/DerivedData—— 正常应显示drwxr-xr-x username staff -
若显示 root 或其他用户:用
sudo chown -R $USER:staff ~/Library/Developer/Xcode/DerivedData重置归属 -
若权限过严(如无写位):补上用户写权限
chmod -R u+w ~/Library/Developer/Xcode/DerivedData
验证并重置 Xcode 命令行工具路径
权限错误有时源于 Xcode 路径未正确指向当前安装版本,导致构建时调用旧版或损坏的工具链:
- 运行
xcode-select -p,确认输出是/Applications/Xcode.app/Contents/Developer - 如果不是,手动设置:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer - 再执行
sudo xcodebuild -license accept确保许可已激活
清理顽固缓存并禁用 iCloud 同步干扰
iCloud Drive 若同步了 ~/Library 下的子目录(尤其开启“桌面与文档文件夹”同步时),可能造成文件锁或权限冲突:
- 临时关闭 iCloud 同步中“桌面与文档文件夹”选项(系统设置 → Apple ID → iCloud)
- 彻底清空缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData(Xcode 关闭状态下执行) - 重启 Xcode,它会自动重建权限正确的新缓存目录
避免未来权限复发的实操建议
- 不要用
sudo xcodebuild编译项目——这会让生成的缓存文件属主变成 root - 定期用
DevCleaner工具清理 Xcode 缓存(GUI 方式更安全,避免误删) - 如需批量修复用户目录权限,可用 Apple 官方推荐方式:
diskutil resetUserPermissions / $(id -u)(仅限当前启动卷)


















