我有兴趣检查系统上所有已安装 rpm 软件包的完整性。
如果我有 rpm 文件本身,我将运行rpm -Kv PACKAGE.rpm
,但是如果原始 rpm 丢失,我怎样才能实现相同的目标呢?
签名和摘要数据是否存储在rpm数据库中?
我知道我可以通过 验证 rpm 内的文件rpm -Va PACKAGE_NAME
,但它只会检查文件摘要而不是签名。
答案1
如果该软件包已经安装,那么就太晚了 - 您,该软件包有很小的可能仍在 /var/cache/{dnf,yum}/ 中。
检查签名的最佳方法是创建一个存储库文件(即使 baseurl 将指向文件位置)并gpgcheck 1
在该存储库文件中进行设置。
如果您将运行类似的命令:dnf install foo.rpm
那么您应该将dnf.conf
变量localpkg_gpgcheck
设置为 True,因为默认值为 False。
此外,如果您运行rpm -qi bash
,则会有有关签名的信息:
Signature : RSA/SHA256, Fri Dec 6 13:24:09 2019, Key ID 50cb390b3c3359c4
所有 gpg 密钥都导入到 rpmdb 中,并且看起来与那里的其他包一样。所以你可以这样做:
$ # suffix of the gpg key from the command above
$ rpm -qa |grep 9c4
gpg-pubkey-3c3359c4-5c6ae44d
$ rpm -qi gpg-pubkey-3c3359c4-5c6ae44d
Name : gpg-pubkey
Version : 3c3359c4
Release : 5c6ae44d
Architecture: (none)
Install Date: Ne 18. srpna 2019, 15:49:39 CEST
Group : Public Keys
Size : 0
License : pubkey
Signature : (none)
Source RPM : (none)
Build Date : Po 18. února 2019, 17:58:53 CET
Build Host : localhost
Packager : Fedora (31) <[email protected]>
Summary : gpg(Fedora (31) <[email protected]>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.14.2.1 (NSS-3)
mQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM
fTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ
zYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9
+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO
LTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk
XLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy
7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU
dsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3
8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj
v28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL
SojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB
tDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v
cmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ
Es8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC
/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2
MryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR
id1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA
nY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj
uEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX
ighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi
SrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM
bJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5
HTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB
TTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC
HLs7cw==
=6hRW
-----END PGP PUBLIC KEY BLOCK-----
您可以决定这是否是一把好钥匙。
但恐怕这仍然无法告诉您 rpm 有效负载签名是否实际上与签名的签名匹配。 :(