【发布时间】:2020-12-14 09:24:46
【问题描述】:
我使用 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 已删除可执行文件权限。除了解压后添加可执行文件权限,有什么办法可以规避吗?
【问题讨论】:
标签: java zip executable macos-catalina apache-commons-codec