कैसे सुरक्षित रूप से डाउनलोड और gpg एक डेबियन स्रोत पैकेज सत्यापित करें?


13

मुझे डेबियन से विशिष्ट (स्रोत या बाइनरी) पैकेज चाहिए।

क्या मैं apt-get का उपयोग करके पैकेज डाउनलोड कर सकता हूँ?

मैं अपने स्रोतों के लिए डेबियन रिपॉजिटरी को कैसे जोड़ सकता हूं। इसलिए यह केवल केस बेस द्वारा उपयोग किया जाता है? पूरे डेबियन भंडार का उपयोग करके मेरे सिस्टम को गड़बड़ाने के बिना?

मैं डेबियन रिपॉजिटरी के लिए gpg कुंजी कैसे प्राप्त कर सकता हूं यह सुनिश्चित करने के लिए पैकेज को डेबियन आर्काइव द्वारा हस्ताक्षरित किया गया था।

(कृपया मुझे यह न बताएं, कि सिस्टम टूट सकता है। मुझे इसकी जानकारी है और मैं कम देखभाल नहीं कर सकता, क्योंकि मैं आसानी से वीएमटीशॉट बहाल कर सकता हूं।)


समाधान का हिस्सा डेबियन-आर्काइव-कीरिंग पैकेज हो सकता है जिसमें /usr/share/keyrings/debian-archive-keyring.gpg शामिल है।
जेम्स मिच

समाधान का एक और हिस्सा Apt- Pinning
जेम्स मिच

मेरा यह जवाब आपकी मदद करता है? askubuntu.com/questions/263705/…
andol

जवाबों:


14

कई प्रश्न हैं जिनका मैं व्यक्तिगत रूप से उत्तर दूंगा:

व्यक्तिगत बाइनरी पैकेज को कैसे डाउनलोड करें (और स्थापित न करें)?

apt-get केवल पैकेज डाउनलोड करने का विकल्प है:

-d  Download only - do NOT install or unpack archives

आपको डाउनलोड किया गया पैकेज मिलेगा /var/cache/apt/archives/। इस स्थिति में आपको apt में एक नया स्रोत सूची विन्यास जोड़ना होगा।

व्यक्तिगत स्रोत पैकेज कैसे डाउनलोड करें?

apt-get source <package>

या जब आप .dsc फ़ाइल का स्थान जानते हैं:

dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc

दोनों दृष्टिकोण फाइलों पर हस्ताक्षर को सत्यापित करते हैं

कैसे स्रोतों को पिन करें। उर्फ ​​मैं अपनी स्थापना को कैसे गड़बड़ नहीं कर सकता?

आपने पहले ही APT पिनिंग के लिए मूल विवरण के पृष्ठ की ओर इशारा किया है , और मैं केवल यह जोड़ना चाहूंगा कि आप शायद apt_preferences मैनपेज को पढ़ना चाहते हैं जिसमें आपके लिए आवश्यक चीजों को पूरा करने के लिए अच्छे उदाहरण भी हैं। विशेष रूप से EXAMPLES में अनुभाग 'ट्रैकिंग स्थिर' देखें, क्योंकि यह आपकी आवश्यकताओं के बहुत करीब का वर्णन करता है:

कई स्रोतों और APT पिनिंग के साथ खेलने पर एक उपयोगी कमांड है:

# apt-cache policy knot
knot:
  Installed: 1.1.3-1~bpo60+1
  Candidate: 1.2.0~rc3-1~bpo60+1
  Version table:
     1.2.0~rc3-1~bpo60+1 0
        500 http://deb.knot-dns.cz/debian/ squeeze/main amd64 Packages
 *** 1.1.3-1~bpo60+1 0
        100 /var/lib/dpkg/status
     1.0.5-1~bpo60+1 0
        500 http://ppa.sury.org/debian/ squeeze/main amd64 Packages

यह दर्शाता है कि स्थापित संस्करण 1.1.3-1 ~ bpo60 + 1 है, और उम्मीदवार 1.2.0 ~ rc3-1 ~ bpo60 + 1 है, जो अगले पर स्थापित हो जाएगा apt-get upgrade। इसके अलावा कुछ पुराने संस्करण अभी तक एक और रिपॉजिटरी से उपलब्ध हैं।

Debian आर्काइव कैसे डाउनलोड करें?

डेबियन आर्काइव कुंजी को ftp-master पर प्रकाशित किया गया है । आपको कुंजी को अपने gpg कीरिंग में आयात करना होगा:

$ gpg --import archive-key-6.0.asc 
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   9  signed:  31  trust: 0-, 0q, 0n, 0m, 0f, 9u
gpg: depth: 1  valid:  31  signed:  38  trust: 25-, 0q, 0n, 1m, 5f, 0u
gpg: depth: 2  valid:  21  signed:  31  trust: 19-, 0q, 0n, 0m, 2f, 0u
gpg: depth: 3  valid:   3  signed:  12  trust: 2-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 4  valid:   1  signed:   8  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-09-22

फिर आपको इसके हस्ताक्षर जांचने होंगे:

$ gpg --list-sig 473041FA
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 3        473041FA 2010-08-27  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig          7E7B8AC9 2010-08-27  Joerg Jaspert <joerg@debian.org>
sig     P    B12525C4 2010-08-27  [User ID not found]
sig          D0EC0723 2010-08-27  [User ID not found]
sig          8AEA8FEE 2010-08-27  [User ID not found]
sig          A3AE44A4 2010-08-28  [User ID not found]
sig          00D8CD16 2010-08-28  Alexander Reichle-Schmehl <alexander@reichle.schmehl.info>
sig          CD15A883 2010-08-28  [User ID not found]
sig          672C8B12 2010-08-28  [User ID not found]
sig 2        C4CF8EC3 2010-08-28  [User ID not found]
sig 2        D628A5CA 2010-08-28  [User ID not found]

और डेबियन डेवलपर्स को व्यक्तिगत रूप से GPG कुंजी ट्रैक करें या तो इसे मैन्युअल रूप से ट्रैक करके, या PGP कुंजी सांख्यिकी प्रोजेक्ट पर फ़े चेकिंग करें । और जब तक कि आपकी PGP / GPG कुंजी से डेबियन कुंजी संग्रह तक एक श्रृंखला नहीं है, तब तक आपको किसी समय विश्वास की छलांग लगाना होगा।

हाथ से व्यक्तिगत पैकेज डाउनलोड और सत्यापित कैसे करें

इसलिए अन्य दृष्टिकोण अधिक जटिल है, क्योंकि डिब पैकेज व्यक्तिगत रूप से हस्ताक्षरित नहीं हैं, लेकिन केवल Releaseफ़ाइल पर हस्ताक्षर किए गए हैं। इस प्रकार आपको व्यक्तिगत पैकेज पर एक साथ हस्ताक्षर Releaseऔर Packagesफाइलों को डाउनलोड करने और सत्यापित करने की आवश्यकता होगी ।

मैं एक उदाहरण जोड़ूंगा जो स्पष्ट होगा।

कल्पना कीजिए कि आप अमाउंट64 आर्किटेक्चर पर उबंटू के लिए आधिकारिक पीपीए से नॉट डीएनएस के लिए डेबियन पैकेज डाउनलोड करना चाहते हैं ।

आपको निर्देशिकाओं पर क्लिक करना होगा और इन फ़ाइलों को खोजना होगा:

wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release.gpg
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/main/binary-amd64/Packages
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/pool/main/k/knot/knot_1.2.0~rc3-1~precise+1_amd64.deb

अगला कदम Releaseफाइल पर हस्ताक्षर को सत्यापित करना होगा :

$ gpg --verify Release.gpg Release
gpg: Signature made Fri 01 Mar 2013 07:14:38 PM CET using RSA key ID F9C59A45
gpg: Good signature from "Launchpad Datové schránky"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5246 3488 670E 69A0 9200  7C24 F233 1238 F9C5 9A45

बेशक आपको कुछ अन्य माध्यमों में कुंजी को सत्यापित करने की आवश्यकता होगी (जैसे डेबियन / उबंटू कीस कुंजी, इसे लॉन्चपैड से चेक करना, आदि ... आदि)

जब आप Releaseफ़ाइल पर सही हस्ताक्षर सत्यापित कर लेते हैं, तो आप अगले चरण पर जा सकते हैं - पैकेज फ़ाइल की पुष्टि कर सकते हैं।

sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad  Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
 c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad             3379 main/binary-amd64/Packages

जैसा कि आप देख सकते हैं, हस्ताक्षर हस्ताक्षरित Releaseफ़ाइल में पाया जा सकता है , इस प्रकार हमने Packagesअपने SHA-256 फिंगरप्रिंट की गणना और तुलना करके फ़ाइल की अखंडता को सत्यापित किया है ।

अंतिम चरण समान है। आपको व्यक्तिगत पैकेज के फिंगरप्रिंट की गणना और तुलना करने की आवश्यकता है:

$ sha1sum knot_1.2.0~rc3-1~precise+1_amd64.deb 
8b34078e9bfef7aa818b2f926a28838b0ede9f43  knot_1.2.0~rc3-1~precise+1_amd64.deb
$ grep -A 13 "Package: knot$" Packages | grep "^SHA1: "
SHA1: 8b34078e9bfef7aa818b2f926a28838b0ede9f43

इस बिंदु पर हमने हस्ताक्षरित Releaseफ़ाइल में पैकेज को सुरक्षित रूप से जंजीर कर दिया है । इसलिए यदि आप Releaseफ़ाइल पर हस्ताक्षर पर विश्वास करते हैं , तो आप सुनिश्चित कर सकते हैं कि पैकेज बरकरार था।

आप डेबियन विकी में सिक्योर एपीटी लेख में अधिक पढ़ सकते हैं ।


क्या आप कृपया बता सकते हैं कि gpgकमांड को रूट निजीकृत की आवश्यकता क्यों नहीं होनी चाहिए? यह एक प्रशासनिक उपकरण माना जाता है।
सिल्पाजो डे एरियेरेज़

1
@SopalajodeArrierez यह एक प्रशासनिक उपकरण नहीं है; आप यहाँ GnuPG के बारे में और अधिक पढ़ सकते हैं: gnupg.org
oerdnj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.