हां, आप वॉल्यूम को डिक्रिप्ट किए जाने के दौरान मास्टर कुंजी तक पहुंचकर ऐसा कर सकते हैं।
नया पासफ़्रेज़ जोड़ने के लिए त्वरित और गंदा:
device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)
device
और volume_name
उचित रूप से सेट किया जाना चाहिए।
volume_name
डिक्रिप्टेड वॉल्यूम का नाम है, जिसे आप देखते हैं /dev/mapper
।
स्पष्टीकरण:
LUKS वॉल्यूम एक मास्टर कुंजी के साथ अपने डेटा को एन्क्रिप्ट करते हैं। आपके द्वारा जोड़े गए प्रत्येक पासफ़्रेज़ में इस मास्टर कुंजी की एक प्रति संग्रहीत होती है जिसे उस पासफ़्रेज़ के साथ एन्क्रिप्ट किया गया होता है। इसलिए यदि आपके पास मास्टर कुंजी है, तो आपको बस एक नए कुंजी स्लॉट में इसका उपयोग करने की आवश्यकता है।
ऊपर दिए गए कमांड को फाड़ने देता है।
$ dmsetup table --showkeys $volume_name
यह सक्रिय रूप से डिक्रिप्ट किए गए वॉल्यूम के बारे में जानकारी का एक गुच्छा डंप करता है। आउटपुट इस तरह दिखता है:
0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096
फ़ील्ड # 5 मास्टर कुंजी है।
$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p
बाइनरी डेटा के रूप में इस के आउटपुट को दिखाने के लिए नहीं जा रहा है, लेकिन यह क्या करता है यह वॉल्यूम के लिए मास्टर कुंजी को पकड़ो और फिर इसे कच्चे बाइनरी डेटा में परिवर्तित करें जो बाद में आवश्यक है।
$ cryptsetup luksAddKey $device --master-key-file <(...)
यह वॉल्यूम की नई कुंजी जोड़ने के लिए क्रायसिपेटअप बता रहा है। आम तौर पर इस कार्रवाई के लिए एक मौजूदा कुंजी की आवश्यकता होती है, हालांकि हम --master-key-file
यह बताने के लिए उपयोग करते हैं कि हम इसके बजाय मास्टर कुंजी का उपयोग करना चाहते हैं। शेल कमांड प्रतिस्थापन और पुनर्निर्देशन है। यह मूल रूप से अंदर सब कुछ निष्पादित करता है, आउटपुट को एक पाइप में भेजता है, और फिर उस पाइप के लिए एक पथ के साथ स्थानापन्न करता है ।
<(...)
<(...)
तो कई ऑपरेशनों को संचालित करने के लिए पूरी कमान सिर्फ एक लाइनर है।