在获得正确权限的同时解压缩文件?

Bre*_*ett 23 linux zip permissions

我使用以下方法解压缩了服务器上的文件:

unzip filename
Run Code Online (Sandbox Code Playgroud)

但是,这似乎导致所有文件的所有者/组权限为0 0.

我上传的文件是一个PHP软件脚本,所以我想知道在解压缩文件时如何正确设置权限以及它们应该设置为什么?

Dav*_*zer 33

实际上,这里的一些答案是不正确的。ZIP 文件也可以具有文件权限。(*) 您可以使用以下命令列出 ZIP 文件中文件的权限:

unzip -Z
Run Code Online (Sandbox Code Playgroud)

也许您用来创建 ZIP 文件的工具没有存储权限或没有正确存储它们。

因此,如果您自己制作了 ZIP 文件,请检查您制作 ZIP 文件时使用的工具。也许有一种方法可以在压缩之前设置权限(如使用 maven),或者它保留原始权限(但这仅适用于支持权限的系统 - 即不适用于 Windows)。

如果您没有自己制作 ZIP 文件,那么您唯一的机会就是在解压后设置正确的权限,例如使用

chmod -R [permissions] [directory]
Run Code Online (Sandbox Code Playgroud)

(*) 我们将该功能与 Maven 程序集插件结合使用,您可以在其中为进入 ZIP 文件的文件指定 fileMode。

  • **@David Tanzer**,即使没有被接受,您的答案也是最好的。事实上,档案的来源(例如 Windows、Linux 等)很重要。我已经在 Linux(*Zip 3.0*、*UnZip 6.00*)上进行了测试。将文件放入存档后,权限将被保存。并且在提取的文件上恢复它们​​(例如,当在 Linux 上提取文件时)。显然,在 Windows 机器上提取时不会应用权限。在 *unzip* 中看到一个特定的开关(比如 **tar** 的 `--no-same-permissions`)会很酷,它在提取时不保留权限并尊重 **umask**。 (4认同)
  • @FranciscoTapia 我更新了我的答案(可以尝试一些事情),但我会暗示其他答案不正确。我认为这很重要。 (2认同)
  • ```解压缩 6.00,2009 年 4 月 20 日,Info-ZIP。由 C. Spieler.``` 在 Windows / mingw 上维护。我目前无法访问我的 linux 机器,但 -Z 也可以使用。无论如何,谢谢你的提示! (2认同)

law*_*l0r 11

据我所知,Zip 不支持保存文件所有权/权限。您可以尝试设置 umask,以便解压缩应创建具有这些权限的文件。跑

umask 644
Run Code Online (Sandbox Code Playgroud)

之前unzip

  • @lawl0r 是的。使用 -Z 选项查看它们。 (11认同)