क्या मैं ext4
Ubuntu 15.04 पर कर्नेल 4.1 के साथ एक नया एन्क्रिप्टेड विभाजन बना सकता हूं ?
क्या मैं ext4
Ubuntu 15.04 पर कर्नेल 4.1 के साथ एक नया एन्क्रिप्टेड विभाजन बना सकता हूं ?
जवाबों:
पहले एक अस्वीकरण: मैंने उबंटू के साथ ऐसा नहीं किया है, लेकिन डेबियन "स्ट्रेच" के साथ एक मशीन पर कस्टम लिनक्स 4.2.3 कर्नेल का उपयोग करके स्थापित किया गया है जिसे मैंने सक्षम EXT4_FS_ENCRYPTION
किया था।
Kmeaw द्वारा दिए गए निर्देश मेरे लिए ठीक वैसे ही काम नहीं करते जैसे पोस्ट किए गए हैं। कुछ चीजें छोड़ दी गईं (कमांड लाइन पैरामीटर और चरण)।
e2fsprogs
ऊपर दिखाए अनुसार अपडेट करेंअपने यादृच्छिक नमक उत्पन्न करें। मैंने इसे "सुरक्षित स्थान" में संग्रहीत करने के लिए निम्नलिखित का उपयोग किया:
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
फ़ाइल सिस्टम पर ext4 एन्क्रिप्शन का उपयोग करने के लिए, "एन्क्रिप्ट" ध्वज को सुपर-ब्लॉक में सेट किया जाना चाहिए। जब ext4 फ़ाइल सिस्टम बनाया जाता है तो यह डिफ़ॉल्ट नहीं होता है। E2fsprogs 1.43 या बाद के "ट्यून 2 एफ़" उपयोगिता का उपयोग करके, "एन्क्रिप्ट" विकल्प सेट करें:
sudo tune2fs -O encrypt /dev/sda4
फ़ाइल सिस्टम को माउंट या रिमाउंट करें ताकि कर्नेल को बदलाव के बारे में पता चले (शायद यह स्वचालित है, लेकिन मैंने केवल एक अलग विभाजन पर ऐसा किया है, इसलिए मुझे यकीन नहीं है।)
उस फ़ाइल सिस्टम पर निर्देशिका बनाएं जो एन्क्रिप्शन सक्षम होने के साथ आरोहित है:
sudo mkdir -p /secret/home/$USER
sudo chown $USER:$USER /secret/home/$USER
कीरिंग में कुंजी बनाएं और निर्देशिका को एन्क्रिप्ट करने के लिए नीति निर्धारित करने के लिए इसका उपयोग करें (यहां sudo
कमांड की आवश्यकता नहीं है):
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
$ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
प्रत्येक रिबूट के बाद, add_key
कमांड का उपयोग निर्देशिका और उसके वंश के डिक्रिप्शन के लिए कुंजी सेट किया जा सकता है:
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
पिछले चरण में उपयोग किए गए समान पासवर्ड दर्ज करें, और आपको विवरणकर्ता हेक्स स्ट्रिंग को याद रखने की आवश्यकता नहीं है।
आप add_key
सीधे भी उपयोग कर सकते हैं। यह एक फाइलसिस्टम विशिष्ट नमक का उपयोग करेगा (इसलिए उस विभाजन के अंतर्गत सभी फ़ोल्डर में समान नमक होगा)
$ /usr/sbin/e4crypt add_key /secret/home/$USER
Added key with descriptor [0132fed69f946c86]
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
cp .. /secret/home/$USER/.
मुझे मिलता है: «cp: नियमित फ़ाइल नहीं बना सकता '/secret/home/alexis/test-top-secret-image.svg': आवश्यक कुंजी नहीं उपलब्ध » । मैंने सिर्फ आपके निर्देश का पालन किया है इसलिए मुझे लगता है कि कुछ बदल गया है।
/usr/bin/e4crypt
" का दूसरा उदाहरण "/ s" में "s" याद आ रहा है।
लिनक्स 4.1 एक फाइल सिस्टम की निर्देशिकाओं को एन्क्रिप्ट करने के लिए एक नए एक्सट 4 फीचर के साथ आता है। एन्क्रिप्शन कुंजियों को कीरिंग में संग्रहीत किया जाता है। आरंभ करने के लिए, सुनिश्चित करें कि आपके पास सक्षम CONFIG_KEYS
और CONFIG_EXT4_FS_ENCRYPTION
कर्नेल विकल्प हैं और आपके पास कर्नेल 4.1 या उच्चतर है।
सबसे पहले, आपको कम से कम संस्करण 1.43 में e2fsprogs अपडेट करने की आवश्यकता है, जो लेखन के समय अभी भी WIP है इसलिए हमें इसे git रिपॉजिटरी से लाने की आवश्यकता है :
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
e4crypt स्रोत ने अपने स्रोत कोड में एक प्रासंगिक अनुभाग अक्षम कर दिया है, इसे misc / e4crypt.c को संपादित करके और रेखा 714 के पास इन दो पंक्तियों को हटाकर सक्षम करें:
printf("arg %s\n", argv[optind]);
exit(0);
अब नए e2fsprogs बनाएं और इंस्टॉल करें:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
अब अपने संस्करण की जाँच करें, यह 1.43-WIP होना चाहिए:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
कुंजियों के साथ काम करने के लिए, हमें keyutils
पैकेज स्थापित करने की आवश्यकता है :
$ sudo apt-get install keyutils
चलो एक निर्देशिका बनाते हैं जिसे हम एन्क्रिप्ट करेंगे। एन्क्रिप्शन नीति केवल खाली निर्देशिका पर सेट की जा सकती है:
$ sudo mkdir -p /encrypted/dir
पहले एक यादृच्छिक नमक मूल्य उत्पन्न करें और इसे सुरक्षित स्थान पर संग्रहीत करें:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
अब अपने कीरिंग में एक नई कुंजी जेनरेट करें और जोड़ें: यह चरण हर बार दोहराया जाना चाहिए जब आप अपने किचेन को फ्लश करते हैं (रिबूट)
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
अब आपको अपनी कुंजी के लिए एक डिस्क्रिप्टर पता है। सुनिश्चित करें कि आपने अपने किचेन में एक कुंजी जोड़ी है:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
लगभग हो गया। अब एक निर्देशिका के लिए एक एन्क्रिप्शन नीति निर्धारित करें:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
बस इतना ही। यदि आप चाबी का गुच्छा, फाइलनाम में एक कुंजी को जोड़े बिना डिस्क तक पहुंचने का प्रयास करते हैं और उनकी सामग्री को एन्क्रिप्टेड गिबरिश के रूप में देखा जाएगा। अपने फाइल सिस्टम पर e2fsck के पुराने संस्करणों को चलाने में सावधानी बरतें - यह एन्क्रिप्टेड फाइलनाम को अमान्य मान लेगा।