Fedora

Fedora 25 升級:沒有安裝包更新的密鑰,這是怎麼回事?

  • January 8, 2019

Fedora 24 彈出這個可愛的 GUI 觸發的 Fedora 25 更新(使用 gnome 軟體)。升級 Fedora 工作站的說明僅列出了在 GUI 中點擊的步驟。做得好!

當我去安裝一些軟體時,我驚訝地發現這個提示/警告:

$ sudo dnf upgrade
...
warning: /var/cache/dnf/updates-1d34501737ae01ab/packages/NetworkManager-openconnect-1.2.4-3.fc25.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fdb19c98: NOKEY
Importing GPG key 0xFDB19C98:
Userid     : "Fedora 25 Primary (25) <fedora-25-primary@fedoraproject.org>"
Fingerprint: C437 DCCD 558A 66A3 7D6F 4372 4089 D8F2 FDB1 9C98
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-25-x86_64
Is this ok [y/N]:

這是否意味著除非我手動安裝某些東西並接受密鑰,否則自動更新(通知)會靜默失敗?

其實這很好。我什至可能會爭辯說這是最好的方法:-)。

Fedora Workstation 中的自動更新通知使用 PackageKit。他們不使用dnf命令。

您可以看到pkcon成功安裝軟體包,(或使用(此處pkcon -c 1 refresh && pkcon update-c 的解釋)進行更新)。它不會提示密鑰。它也不會在;使用的商店中安裝密鑰。如果再次執行,它仍然會提示接受密鑰。dnf``dnf

這讓我很驚訝,因為 dnf 使用的密鑰庫實際上是rpm. PackageKit 充當 rpm 的前端,但顯然它不填充 rpm 密鑰環或依賴​​它進行驗證。

您可以看到 PackageKit 將密鑰保存在 eg 中/var/cache/PackageKit/25/metadata/fedora/gpgdir/。可以說,這比傳統組織更有意義。這樣,就可以知道為哪個 repo 下載了哪些密鑰。

與 dnf 不同,PackageKit 不會提示接受來自配置 URL 的密鑰。(請注意,如果它確實提示將這個文件保存在 中/var/cache,嚴格來說這個文件不會是一個純粹的記憶體,因為它也代表了使用者配置:-)。

缺少提示並不會降低 Fedora 的安全性,因為例如/etc/yum.repos.d/fedora.repo說從已經安裝的文件中載入密鑰(通過fedora-release軟體包)。dnf如果您使用腳本,也將跳過提示dnf -y install- 這是在安裝的軟體包有其他要求時避免提示的標準方法。(Ansiblednf模組做同樣的事情)。

我得出結論,這個提示dnf不被認為有重要目的。考慮到問題中的情況,最好刪除“警告”的提示,並詢問“這可以嗎”。(並且最好修復libdnf使用與 PackageKit 相同的模式。從安全形度來看,無限期地保留舊的 RPM 密鑰似乎很奇怪。

編輯:在較新的版本中,PK 和dnf現在都使用libdnf. 所以有更少的藉口不解決這個問題:-)。

像 google-chrome.repo 這樣的其他儲存庫可能依賴於通過 HTTPS 下載更新的密鑰。這具有不同的安全屬性。特別是,似乎不太可能為 PackageKit 實現密鑰固定和 HSTS(主要 HTTPS 客戶端使用)。我不清楚為什麼首先實現這種可能性,即使用具有不同安全屬性的方法下載更新的密鑰。至少,不將下載的密鑰保留在 中似乎是一個論據,/var/cache/使用者可能希望在他們迫切需要磁碟空間時清除它。

引用自:https://unix.stackexchange.com/questions/331668