我使用 OpenJDK 11 和 Apache Commons Compress 1.20 创建了一个 zip 文件,该文件由使用 Netty 服务器的 API 返回。此 zip 文件包含具有可执行文件权限 (755) 的 gradle 包装器。
-rwxr-xr-x 1 myuser mygroup 5766 Aug 24 16:03 gradlew
我用 Commons Compress 压缩它,在 API 响应中返回它,然后浏览器将 zip 保存到磁盘。
如果我在MacOS Mojave中提取 zip 文件,则 gradle 包装文件如下所示(带有扩展文件属性列表):
ls -al@ gradlew
-rwxr-xr-x@ 1 myuser mygroup 5766 Nov 30 1979 gradlew
com.apple.quarantine 56
好的,它已被隔离,但仍可执行。执行它可以正常工作。
如果我在MacOS Catalina中提取 zip 文件,则 gradle 包装文件如下所示(带有扩展文件属性列表):
ls -al@ gradlew
-rw-rw-r--@ 1 myuser mygroup 5766 Nov 30 1979 gradlew
com.apple.quarantine 57
可执行文件权限已被 Catalina 删除。除了在解压后添加可执行文件权限之外,有什么方法可以规避这个问题吗?