如何检查 deb 包是否有关联的签名?

如何检查 deb 包是否有关联的签名?

在基于 rpm 的系统中,我们可以轻松查看是否存在与 rpm 文件关联的签名:

rpm -qpi <rpm-file.rpm> | grep -i signature

对于.deb文件,我们可以看到包信息,但不包含是否关联签名的信息:

dpkg-deb -I uma-18feb-latest.deb

Ubuntu 有没有办法在不使用以下实际验证签名的命令的情况下查看签名?

dpkg-sig --verify <deb-file.deb>

答案1

dpkg-sig --list <deb-file.deb>

将列出文件中看起来像签名的所有项目,而不验证文件。这将列出文件中任何签名的作用;例如

$ dpkg-sig -l vuescan_9.7.50-1_amd64.deb
Processing vuescan_9.7.50-1_amd64.deb...
builder
$ dpkg-sig -l zstd_1.4.8+dfsg-2.1_i386.deb
Processing zstd_1.4.8+dfsg-2.1_i386.deb...
$

第一个文件有一个带有“构建者”角色的签名;第二个文件未签名。

.deb请注意,对单个文件进行签名的情况并不常见(与 RPM 不同)。 Debian 软件包的真实性依赖于存储库的真实性;看如何保证 Debian 软件包的真实性?

答案2

虽然对于包来说,确实.deb应该对整个存储库(即Release.gpg文件)进行签名,但也可以对单个包进行签名

for i in *.deb; do
    ar -p "$i" _gpgbuilder 2>/dev/null | grep "^Signer";
done

相关内容