M2芯片Mac运行复制的cat文件异常:进程被终止求助
解决M2芯片Mac复制系统二进制文件后运行被终止的问题
问题原因
Apple Silicon(包括M2)架构的Mac对系统预装二进制文件(如/bin/cat)启用了**强化运行时(Hardened Runtime)**和严格的代码签名校验机制。直接使用cp命令复制这类文件时,会丢失部分签名元数据或破坏完整性校验上下文,导致系统的AMFI(Apple Mobile File Integrity)组件终止进程运行。而旧款Intel Mac的签名校验逻辑相对宽松,因此可以正常执行复制后的文件。
解决方法
方法1:使用ditto命令完整复制文件
ditto会保留文件的所有属性、签名信息和扩展属性,是复制系统二进制的正确方式:
ditto /bin/cat test
执行完成后,直接运行./test即可正常工作。
方法2:临时禁用AMFI校验(不推荐,仅测试用)
如果需要调试或修改系统二进制,可临时关闭AMFI的验证(需进入恢复模式操作):
- 重启Mac,按住电源键直到出现启动选项,选择「恢复模式」。
- 在恢复模式中打开终端,执行:
csrutil enable --without amfi - 重启回到正常系统,此时复制后的二进制文件可正常运行。注意:该操作会降低系统安全性,测试完成后请执行
csrutil enable恢复完整SIP保护。
方法3:使用别名替代复制
如果只是需要一个快捷调用方式,无需实际复制文件,可创建别名:
alias test='/bin/cat'
之后在终端输入test即可直接调用原始的/bin/cat,完全避免复制带来的问题。
内容的提问来源于stack exchange,提问作者mai
相关产品推荐
相关产品推荐

