如何检查 RHEL 中 zip 文件的权限?

如何检查 RHEL 中 zip 文件的权限?

我对 RHEL 了解甚少,很惊讶地发现它unzip -lunzip -lv包含文件权限。我看到提取文件最终会恢复权限,但我想知道是否有一种方法可以在不解压的情况下检查权限。

正如您在下面的命令行交互中所看到的,ex是可执行的,nonex不是,并且unzip恢复了两者的权限,但我想在不解压的情况下查看权限

/tmp> ls -lgG *ex
-rwxrwxr-x 1 0 Feb 17 04:26 ex
-rw-rw-r-- 1 0 Feb 17 04:26 nonex
/tmp> zip -qq  perms *ex
/tmp> unzip -l perms.zip
Archive:  perms.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  02-17-2015 04:26   ex
        0  02-17-2015 04:26   nonex
---------                     -------
        0                     2 files
/tmp> unzip -lv perms.zip
Archive:  perms.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 02-17-2015 04:26 00000000  ex
       0  Stored        0   0% 02-17-2015 04:26 00000000  nonex
--------          -------  ---                            -------
       0                0   0%                            2 files
/tmp> unzip -qq -d perms perms.zip
/tmp> ls -lgG perms
total 0
-rwxrwxr-x 1 0 Feb 17 04:26 ex
-rw-rw-r-- 1 0 Feb 17 04:26 nonex

答案1

您可以使用zipinfo显示权限。请记住,根据存档的生成位置,权限可能无法反映实际的源系统权限(如果您提取在 Windows 中生成的存档,则尤其如此)。

以下是文档中的一段代码,zipinfo其中详细说明了输出格式,该格式基于熟悉的ls -l(长)列表格式。第一个字段详细说明了权限。

-rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660

最后三个字段是文件的修改日期和时间以及文件的名称。文件名的大小写是受尊重的;因此来自 MS-DOS PKZIP 的文件始终大写。如果文件是使用存储的目录名压缩的,则该目录名也会显示为文件名的一部分。

第二和第三个字段表示该文件是在 Unix 下使用 zip 1.9 版压缩的。由于它来自 Unix,因此行开头的文件权限以 Unix 格式打印。未压缩的文件大小(本例中为 2802)是第四个字段。

第五个字段由两个字符组成,每个字符都可以取多个值。第一个字符可以是“t”或“b”,分别表示 zip 认为该文件是文本或二进制文件;但如果该文件已加密,zipinfo 会通过大写字符(“T”或“B”)来记录这一事实。第二个字符也可以取四个值,具体取决于该文件是否有扩展本地标头和/或“额外字段”(在 PKWare 的 APPNOTE.TXT 中有完整解释,但基本上类似于 ANSI C 中的编译指示 - 即,它们提供了一种在存档中包含非标准信息的标准方法)。如果两者都不存在,则该字符将为连字符(“-”);如果有扩展本地标头但没有额外字段,则为“l”;如果相反,则为“x”;如果两者都存在,则为“X”。因此,此示例中的文件(可能)是文本文件,未加密,并且既没有额外字段也没有与之关联的扩展本地标头。

相关内容