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


17

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

unzip filename

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

我上载的文件是一个PHP软件脚本,因此我想知道在解压缩文件时如何正确设置权限以及应将其设置为什么?

Answers:


10

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

umask 644

之前unzip


抱歉,它实际上被拉上了窗户。
Brett 2013年

1
它是在Windows或* nix上创建的,都没有关系。Zip仍然不支持Unix文件权限。无论它在哪里创建。
lawl0r13年

是的,我知道....但是您说我可以尝试设置,umask这样它将使用这些权限来创建zip。但是我认为我不能在Windows上做到这一点吗?
Brett 2013年

unziping
lawl0r

8
@ lawl0r是的。使用-Z选项查看它们。
OrangeDog

20

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

unzip -Z

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

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

如果您不是自己制作ZIP文件,则唯一的机会是在解压缩后设置正确的权限,例如使用

chmod -R [permissions] [directory]

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


1
我认为您是正确的,但是您提出答案的方式是不正确的。您应该集中精力提供一个好的答案,而不要批评一个新的答案……
Francisco Tapia 2015年

2
@FranciscoTapia我更新了答案(可以尝试一些操作),但我会暗示那里的其他答案不正确。我认为这很重要。
David Tanzer

1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.在Windows / mingw上。我目前无法访问我的linux机器,但是-Z也可以。无论如何,谢谢您的提示!
大卫·坦泽

3
@David Tanzer,即使不被接受,您的回答也是最好的。实际上,档案(例如Windows,Linux等)的来源很重要。我已经在Linux(Zip 3.0UnZip 6.00)上进行了测试。将文件放入存档后,权限将被保存。然后将它们还原到提取的文件上(例如,在Linux上提取文件时)。显然,在Windows上进行提取时,权限将不会应用。这将真正冷静地看到解压特定交换机(如焦油--no-same-permissions)是不保留的权限和尊重的umask同时提取。
flaz14

1
@DanielF仅当创建程序将权限放到那里时,权限才存在,因此,如果您的存档是在Windows上创建的,则zipinfo/ unzip -Z只能猜测。要查看权限是否存在,请使用zipinfo -v/ unzip -Zv并查找“非MSDOS外部文件属性”;如果“文件系统或源操作系统”是UNIX,则两个最高有效字节是UNIX权限(十六进制,而不是八进制!)。
Alex Shpilkin '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.