【问题标题】:Maintain file and folder permissions inside archives维护档案内的文件和文件夹权限
【发布时间】:2012-05-30 21:47:03
【问题描述】:

我正在打包和分发我为 Windows、Linux 和 Mac 制作的程序。我打算将文件和文件夹放入 zip 存档中。

如果我设置了正确的文件夹和文件权限,然后压缩成 zip 并重新分发它们,当用户在 Linux 或 Mac 系统中提取它们时,这些权限是否会保留?还是他们必须自己设置权限?

【问题讨论】:

  • 无法跨平台将权限存储在ZIP文件中。
  • 是否有任何其他类型的存档,如 tar、rar 等可以存储权限?
  • 由于权限不可移植,很难理解您打算如何通过在多个平台上解压缩相同的存档来设置它们。安装程序(脚本或应用程序)对您的目标更有用。
  • @EugeneMayevski'EldoSCorp 这并不完全正确。我在回答此站点上的另一个问题时解释了如何使用 InfoZip 实用程序来实现这一点:stackoverflow.com/questions/13185364/…
  • @itsbruce infozip 是一个边界案例,不是通用解决方案。

标签: linux macos zip


【解决方案1】:

zip 不在存档中存储文件权限。

tar 存档将保留 Linux 和 OS X 上的文件权限。我不知道在 Windows 上会发生什么。如果您可以在 Windows 上进行测试并且可以正常工作,那么这可能是您最好的选择。这可能取决于人们使用什么工具来解压档案。

另一种选择是创建安装程序,尽管创建跨平台安装程序的非商业选项很少。维基百科有a list

【讨论】:

  • Zip 可以通过使用 ZIP 标头内的“外部属性”字段来存储 Unix 文件权限。如果在 unix 系统上使用正确的工具解压缩,文件将保留权限。如果在 windows 上打包,文件将失去权限。我想知道这个答案怎么会被选为正确的答案并获得 10+ 分。
  • 在Ubuntu 20.04下,Info-ZIP的Zip 3.0(2008年7月5日)的默认行为是存储和恢复执行权限。
  • unix.stackexchange.com/questions/14705/… 很好地记录了每个所有者/组/其他的 RWX 掩码如何在 ZIP 文件中工作的位标志。
【解决方案2】:

安装程序是您最好的选择。 让我解释一下为什么。

Windows 拥有以下权限:

Modify
Read & Execute
Read
Write

分配给组或用户名,

基于 Unix 的系统有:

Read
Write 
Execute

可以分配给所有者、组和其他人。

您是否看到,很难将权限从一个系统映射到另一个系统,因为文件系统处理权限的方式不同。

不过,一些 zip 实用程序(例如 Info-Zip)支持基于 Unix 的文件系统功能,例如用户和组 ID、文件权限以及对符号链接的支持。它还支持 NTFS 文件系统权限,并在提取文件时尝试将 NTFS 权限转换为 Unix 权限,反之亦然。这可能会导致潜在的意外组合,例如.exe 文件正在 NTFS 卷上创建,但可执行权限被拒绝。*

如果您打算分发您的程序,安装程序确实是您的最佳解决方案。

*来自维基百科:Zip (file format)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2016-02-28
    • 2011-06-13
    • 2012-01-06
    • 2011-02-24
    • 2013-12-22
    • 2011-08-12
    相关资源
    最近更新 更多