Mac终端执行命令报“Operation not permitted”是因TCC隐私控制拦截,非传统权限问题;需在“隐私与安全性→完全磁盘访问”中添加Terminal或iTerm等终端应用并重启。

在Mac笔记本终端执行ls、cp、find等命令时突然报错“Operation not permitted”,连sudo都无效,说明系统已启用TCC隐私控制拦截了对敏感目录的访问,不是传统Unix权限问题。
确认是不是TCC权限拦截
先验证是否为TCC导致:在终端中运行ls -l ~/Downloads。如果返回Operation not permitted,但cd ~/Downloads && pwd能成功输出路径,就【基本可锁定是TCC拦截】——因为路径存在且shell能识别,只是读取内容被系统级策略阻断。
再检查传统权限:ls -ld ~/Downloads。若显示drwx------@且属主是你自己,说明700权限完全足够,排除chmod/chown误操作可能。
给终端授予“完全磁盘访问”权限
打开系统设置 → 隐私与安全性 → 完全磁盘访问。
点击右下角锁图标输入密码解锁。
点击+号添加应用:前往/Applications/Utilities,选中Terminal.app或你实际使用的终端(如iTerm.app),拖入列表。
重启终端程序——旧窗口不生效,必须新开一个。
其他终端工具的授权方式
方法一:iTerm2用户需单独添加
在“完全磁盘访问”列表中,不能只加Terminal.app,iTerm2必须作为独立条目添加,否则仍会报错。
方法二:命令行工具(如zsh/bash)本身不在此列表中
Shell进程由终端启动,权限继承自终端App,所以【不要尝试添加zsh或bash到FDA列表】,这无效且无意义。
方法三:用AppleScript脚本调起终端的工具(如cdto2.6、Open-Terminal-Here)
这类工具自身也需要辅助功能权限。进入系统设置 → 隐私与安全性 → 辅助功能,把对应.app加入列表,否则脚本无法操控Finder和Terminal。










