Fedora 25 升級:沒有安裝包更新的密鑰,這是怎麼回事?
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/
使用者可能希望在他們迫切需要磁碟空間時清除它。