Wie kann ich überprüfen, ob ein PGP-Schlüssel in RPM importiert wurde?

13

Man kann einen Schlüssel importieren mit:

rpm --import / path / to / key

Aber wie können Sie später feststellen, ob Sie diesen Schlüssel bereits importiert haben? Der Versuch, ihn erneut zu importieren, schlägt mit einem Fehler fehl, und ich versuche, dies zu vermeiden, da ich Puppet verwende, um den Schlüssel zu installieren.

Matthew Scharley
quelle

Antworten:

10

Mit können Sie überprüfen, ob ein Schlüssel bereits importiert wurde rpm -qi gpg-pubkey-<version>-<release>. Wenn es installiert ist, gibt rpm alle Informationen darüber aus. Andernfalls wird es nur mit dem Rückgabewert 1 beendet, sodass Sie Ihrem Puppenrezept einen unlessParameter hinzufügen können :

exec { "rpm --import /path/to/package":
  # ...
  unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}
Torian
quelle
2
Besserer Weg durch einen Code, den ich gefunden habe:KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids < $KEYFILE)|cut -c11-18|tr [A-Z] [a-z]); rpm -q gpg-pubkey-$KEYID
LSD
2
Der Schnitt bindet Sie an ein bestimmtes Layout, das auf meinem RHEL6-Testsystem nicht funktioniert. Und gpg enthält jetzt neben dem Pub-Key auch Sub-Keys. Also habe ichKEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
dannysauer
5

Jeder importierte Schlüssel fügt einen rpmdb-Eintrag von hinzu gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>. Überprüfen Sie einfach den Namen ( gpg-pubkey) und die entsprechende Version (die ersten 8 Zeichen des Schlüsselfingerabdrucks in hex) in der rpmdb.

Ignacio Vazquez-Abrams
quelle
rpm -qi gpg-pubkey-FINGERPRINT-\* > /dev/null 2>&1 (Hinweis, einschließlich, wie Sie die FINGERPRINT: robinbowes.com/article.php/20081107174415581 )
Ted Zlatanov
2

Wenn Sie nur überprüfen möchten, ob der Schlüssel importiert wurde (ohne diese Informationen programmgesteuert zu verarbeiten), können Sie alle Schlüssel wie folgt auflisten:

rpm -qi gpg-pubkey-\* | grep -E ^Packager

oder für die IDs:

rpm -qi gpg-pubkey-\* | grep -E "^Version  "

Dies mag vielen offensichtlich erscheinen, aber ich nehme an, dass es für einige eine direktere Antwort auf die Frage (zumindest in der Überschrift) ist.

TNT
quelle