mac终端添加防火墙白名单需四步:先用--getglobalstate检查状态,若关闭则用--setglobalstate on启用;再用--add指定程序路径注册;接着用--unblockapp授权传入连接;最后用--listapps验证是否显示“(allowed)”。

Mac终端添加防火墙白名单程序,是解决开发工具、自研脚本或未签名应用被系统拦截联网的核心操作。图形界面无法识别这类程序时,必须通过终端调用底层防火墙服务 socketfilterfw 手动注册并放行。
确认防火墙全局状态并启用
打开“终端”,输入以下命令检查当前防火墙是否已开启:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
若返回“Firewall is disabled”,说明防火墙处于关闭状态,需先启用:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
执行后需输入管理员密码(输入过程无任何显示),回车后等待提示符返回。这一步不可跳过——【socketfilterfw 所有后续操作均依赖全局防火墙已启用】。
将目标程序添加至防火墙规则库
使用 --add 参数将可执行文件路径写入防火墙白名单数据库:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Postman.app
路径必须指向 .app 包本体或独立二进制文件(如 ~/Desktop/myserver),不能是别名、快捷方式或 shell 脚本封装器。若路径含空格,需用引号包裹:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add "/Applications/Visual Studio Code.app"
添加成功后无显式提示,仅返回新命令行。若报错“Invalid argument”,大概率是路径错误或文件不存在。
允许该程序接收传入连接
添加只是注册,还需显式授权其响应外部请求:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/Postman.app
此命令将程序状态设为“允许传入连接”。注意:--unblockapp 和 --blockapp 是互斥操作,重复执行不会报错但无实际效果。
验证是否生效,运行:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
在输出列表中查找目标程序名称,确认其右侧标注为 “(allowed)” 而非 “(blocked)” 或空白。
特殊场景处理:SIP 保护下的路径限制
方法一:绕过 SIP 限制复制程序
若目标程序位于 /System、/usr 或其他受 SIP 保护路径下,socketfilterfw 会拒绝添加。此时需先将其复制到非保护位置(如 ~/Applications):
cp -R /usr/local/bin/mytool ~/Applications/
再对新路径执行 --add 和 --unblockapp。
方法二:临时禁用 SIP(仅限调试,不推荐长期使用)
重启 Mac → 按住 Command+R 进入恢复模式 → 顶部菜单“实用工具”→“终端”→ 输入 csrutil disable → 重启。操作完成后务必重新启用:
csrutil enable











