【发布时间】:2013-07-27 03:17:49
【问题描述】:
我试图在压缩后保留某些文件权限,但是,我注意到文件权限没有保留。无论我做什么,解压缩文件的文件权限始终是 rw-r--r--。
我尝试了以下方法:
-
在我的 bash_profile 中将 umask 设置为 0027,但是,我注意到默认情况下,新创建的 zip 文件会为 "0022" 又名 rw-r--r-- 的文件创建权限。
李> 我尝试将 AsiExtraField 设置为 777 模式并将其附加到 ZipArchiveEntry,但是,它似乎不会影响烫发。
ZipArchiveEntry 条目 = 新的 ZipArchieveEntry(文件名);外场 temp = new AsiExtraField(); temp.setMode(777); entry.addAsFirstExtraField(temp); zipoutputstream.putNextEntry(entry);
- 对于 ZipEntries,我尝试将 UnixMode() 设置为 777,但是,解压缩的文件仍然具有 rw-r--r-- 的权限。
ZipEntry entry = new ZipEntry(filename); entry.setUnixMode(777); zipoutputstream.putNextEntry(entry);
- 最后,我在目标文件即将压缩之前明确设置了文件权限,但是,文件权限不会被复制过来。
Runtime.getRuntime.exec("chmod 777" + file.getCanonicalPath()): ZipEntry entry = new ZipEntry(filename); zipoutputstream.putNextEntry(entry);
帮助非常感谢!
【问题讨论】:
-
Zip 不存储文件权限。提取文件时,会创建新文件。他们将拥有执行解压缩的用户的权限。见this。
-
@SotiriosDelimanolis 那么如果我在我的 bash_profile 中设置了一个 umask,那么新提取的文件是否应该具有掩码设置的权限?因为即便如此,似乎也并非如此。我设置了一个 0027 的 umask,它将转换为 rw-r-----,但是当我提取文件时,它们似乎具有 rw-r--r-- 的权限。还有设置提取文件权限的典型过程是什么?
-
我不知道
umask做了什么。根据您希望文件在解压缩后具有的权限,可以在解压缩之前更改用户,或者编写一个提取文件的脚本,然后更改解压缩文件的权限。
标签: java apache unix permissions zip