macos下permission denied的解决方法有三步:一是用chmod +x或u+x为文件添加执行权限;二是用xattr -d com.apple.quarantine清除隔离属性;三是前往系统设置开启终端的完全磁盘访问权限。

macOS 下运行二进制文件或脚本提示 Permission denied,通常不是系统故意限制,而是权限机制在起作用——它既保障安全,也要求你明确授权。核心问题就三点:文件本身缺执行权、被系统打上隔离标记、终端没拿到磁盘访问许可。
给文件加上可执行权限
macOS 默认不赋予新文件(尤其是下载或手写的 .sh、.py、adb 等)执行权限,这是基础安全设计。必须手动启用:
- 进入脚本/二进制所在目录,运行 chmod +x your-file(如 chmod +x adb)
- 只想让当前用户可执行,更稳妥的做法是 chmod u+x your-file
- 用 ls -l your-file 检查:权限字段中出现 x(例如 -rwxr-xr-x),说明已生效
清除 macOS 的隔离属性
从浏览器、邮件等渠道下载的文件会被自动标记 com.apple.quarantine,即使有执行权限也会被拦截:
- 运行 xattr -d com.apple.quarantine /path/to/your-file(路径可直接拖入终端补全)
- 确认是否成功:ls -l@ your-file 输出中不再含
com.apple.quarantine - 若提示 No such xattr,说明该属性已不存在,无需操作
授予终端完全磁盘访问权限
macOS Sequoia 及后续版本加强了隐私保护,终端若无权限,连本地脚本都可能无法读取或执行:
- 前往 系统设置 → 隐私与安全性 → 完全磁盘访问
- 点击右下角锁图标解锁,勾选你实际使用的终端应用(如 Terminal、iTerm2、VS Code 内置终端)
- 重启终端再试,避免权限缓存影响
这三步覆盖了绝大多数“Permission denied”场景。关键不是系统太严,而是它把控制权交还给你——加权、去标、授访问,每一步都是主动确认,而非默认放行。











