在基于 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