The ZIP format can store unix permissions in the "external attributes" field inside the ZIP header.
As an aside, I did this for ZIP files created using the maven-assembly-plugin module using <fileMode>0755</fileMode> in the assembly descriptor.
To programmatically extract an archive from Java while maintaining permissions, there is a good commons-compress cover called jarchivelib that supports several formats, including ZIP, tar.gz. It extracts the correct persistence of UNIX permissions.
source share