macOS中文件需手动添加执行权限才能运行,可通过访达简介面板设置“读与写”权限,或用chmod u+x等命令精确控制;还需清除quarantine属性(xattr -d com.apple.quarantine)方可成功执行。

当你在Mac上下载或编写了一个Shell脚本、Python可执行文件,或者从其他系统复制来一个带执行位的程序,双击运行却提示“无法打开,因为 Apple 无法检查其是否包含恶意软件”,或终端执行时报错 Permission denied,说明该文件缺少执行权限——macOS默认不赋予任何文件执行权,必须手动开启。
用访达简介面板快速添加执行权限
这一步适合单个文件,操作直观,无需命令行。
在访达中右键点击目标文件(如 deploy.sh)→选择“显示简介”→滚动到底部,展开“共享与权限”区域。
点击右下角锁形图标,输入管理员密码解锁编辑权限。
在用户列表中找到你当前账户名(例如 【yourname】),点击其右侧权限下拉菜单,选“读与写”。【仅设为“只读”会导致chmod命令失效,后续无法补加x位】
关闭简介窗口,权限即刻生效。
用终端命令精确控制执行权限
这是最可靠、可复现的方式,尤其适合脚本批量处理或CI/CD环境。
打开终端,cd进入文件所在目录,例如:cd ~/Downloads。
执行 ls -l scriptname.sh 查看当前权限,确认末三位不含 x(如显示 -rw-r--r-- 表示无执行权)。
方法一:仅给自己添加执行权限(推荐)
运行:chmod u+x scriptname.sh。【u代表user,+x表示追加执行位,不改动读写权限,最安全】
方法二:给所有用户添加执行权限(慎用)
运行:chmod a+x scriptname.sh。这会让owner/group/others都获得执行权,若文件含敏感逻辑或硬编码凭证,可能引发泄露风险。
方法三:设置完整八进制权限(需明确理解数字含义)
例如:chmod 755 scriptname.sh → owner可读写执行(7),group和其他人可读可执行(5)。注意:755不等于“安全默认值”,它对world开放执行权,非必要不建议。
验证执行权限是否真正生效
第一步:在终端中直接运行文件,观察是否报错。
输入:./scriptname.sh(注意前面的 ./)。
第二步:若仍提示 Permission denied,请立即检查是否漏掉关键前提:【该文件必须位于非SIP保护路径下(如不能在 /System 或 /usr/bin 下),且未被标记为quarantine隔离属性】。
第三步:确认无隔离属性,运行:xattr -d com.apple.quarantine scriptname.sh。这步常被忽略——从浏览器或邮件下载的脚本默认带此属性,即使chmod成功,系统仍会拦截执行。
第四步:再次运行 ./scriptname.sh,成功则光标跳转至下一行,脚本开始执行。

















