tldr; I'm interested in having ZipFile's extract() method inverse to add() where possible. I'm not sure about which API would be best to choose.
Firstly some context
Zip files created by ZipFile (from zipfile module) already store last modification time and date and unix file mode of files. When files are extracted, files and directories are always created with default permissions and no other state of files is restored.
Permission behavior is not documented yet  and an enhancement request exists for some time . There have been couple of questions on StackOverflow , ,  with various level of robustness. There is even a pull request  but it changes current behavior.
What others do?
Info-Zip's unzip by default restores only "safe" permissions
PKZIP's PKZIP allows specification of a mask:
[...] mask for files to be added or extracted. The mask specifies
permissions which should not be archived or restored on extraction. [...] The setuid, setgid, and sticky bits are set on extracted files only if the permission option is used.
And in non-zip world - GNU tar preserves permissions when -p is specified (default for superuser).
Python's tarfile - extractall() always preserves ownership, date, time and permissions. Method extract() by default preserves the same but has attribute set_attr to skip all of those.
Finally about ZipFile's interface enhancement
I guess it might not be good idea to change behaviour there was for couple of releases/years now . In zip world SUID/SGID/Sticky bits seems to treated specially so I guess it might be good idea to stick with that instead of imitating python's tar.
Patch  attached to one of the issue uses various constants. Is this a good, pythonic, interface?
I'm rather thinking of adding new attributes to ZipFile class, extract() and extractall() methods:
and later to be extended with:
 https://bugs.python.org/issue18262  https://bugs.python.org/issue15795  https://stackoverflow.com/q/434641/83400  https://stackoverflow.com/q/3007233/83400  https://stackoverflow.com/q/42326428/83400  https://github.com/python/cpython/pull/17790  See man unzip(1)  https://support.pkware.com/home/pkzip/pkzip-securezip-for-unix-linux/pkzip_s...  https://www.python.org/dev/peps/pep-0387/  https://bugs.python.org/file34893/issue15795_test_and_doc_fixes.patch