केवल `आरोह` के साथ क्रायसेपसेटअप कंटेनर कैसे माउंट करें?


9

मैं के माध्यम से एक एन्क्रिप्टेड कंटेनर बनाया

#!/bin/bash
dd if=/dev/zero of=$1 bs=1 count=0 seek=$2
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksFormat $LOOPDEV
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER)
mkfs.ext3 $MAPPER
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV

यानी containerइस स्क्रिप्ट के लिए निर्दिष्ट एक फ़ाइल में एक ext3 फाइलसिस्टम शामिल होगा जिसे एन्क्रिप्ट किया गया है cryptsetup luksFormat

इसे माउंट करने के लिए, मैं वर्तमान में एक और स्क्रिप्ट का उपयोग करता हूं, कहते हैं dm.mount container /mnt/decrypted:

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER) || losetup -d $LOOPDEV
mount $MAPPER $2 || (
  cryptsetup luksClose $MAPPER
  losetup -d $LOOPDEV
)

और इसे अनमाउंट करने के लिए dm.umount /mnt/decrypted:

#!/bin/bash
set -e
MAPPER=$(basename $(mount | grep $1 | gawk ' { print $1 } '))
LOOPDEV=$(cryptsetup status $MAPPER | grep device | gawk ' { print $2 } ')
umount $1
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV

बहुत अधिक अतिरेक है और मैन्युअल रूप से लूप डिवाइस और मैपर को हथियाना है जो दोनों ही गुमनाम रह सकते हैं। वहाँ बस mount -o luks ~/container /mnt/decrypted(पासफ़्रेज़ के लिए संकेत) और umount /mnt/decryptedइसके बजाय आसान तरीका कुछ करने का एक तरीका है?


मूल रूप से संपादित मैं अपनी लिपियों के साथ खुश हूँ (हालाँकि त्रुटि जाँच में सुधार किया जा सकता है ...), इसलिए

मेरे द्वारा लिखी गई लिपियों का उपयोग -o luks=~/containerकरने के लिए एक माउंट विकल्प कैसे लागू किया जा सकता है -o loop ~/loopfile?

क्या यह बिना पुनर्लेखन के हासिल किया जा सकता है mount? या वैकल्पिक रूप से, -t luks -o loop ~/containerलागू किया जा सकता है?


क्या आपने क्रिप्टमाउंट की कोशिश की है ?
jw013

@ jw013 मैंने नहीं किया है और यह चीजों को थोड़ा सरल कर सकता है, लेकिन यह मूल रूप से सीधे उपयोग करने का समर्थन नहीं करता हैmount
टोबीस किंजलर

जवाबों:


6

वास्तव में, संशोधन mountसंभव है, जैसा कि मैंने के अस्तित्व से सीखा है mount.ntfs-3g। मैं केवल अनुमान लगा रहा हूं, लेकिन मुझे संदेह है mount -t sometypeकि एक कॉल में परिणाम होता है mount.sometype $DEV $MOUNTPOINT $OPTIONS, मुझे यहां सही करने के लिए स्वतंत्र महसूस करें या कुछ वास्तविक दस्तावेज उद्धृत करें। विशेष रूप से विकल्प -o loopपहले से ही इलाज किया जाता है इसलिए अब और कोई ज़रूरत lopsetupनहीं है ...

के रूप में माउंट स्क्रिप्ट लिपि /sbin/mount.crypto_LUKS। लूपदेविस भाग को हटा दें और इसके बजाय बस -o loopस्विच का उपयोग करें। यहाँ मेरा है /sbin/mount.crypto_LUKS:

#!/bin/bash
set -e
if [[ $(mount | grep ${2%%/} | wc -l) -gt 0 ]]; then
  echo "Path $2 is already mounted!" >&2
  exit 9
else
  MAPPER=$(mktemp -up /dev/mapper)
  cryptsetup luksOpen $1 $(basename $MAPPER)
  shift
  mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)
fi

अब मुझे बस चलाना है mount -o loop ~/container /mnt/decrypted, और mountमुझे पासवर्ड के लिए संकेत देगा और फिर कंटेनर बंद होने पर, स्वचालित रूप से लूपदेवीस जारी करते हुए, कंटेनर को माउंट करें। यदि डिक्रिप्टेड फ़ाइल सिस्टम माउंट करने में विफल रहता है, तो कंटेनर फिर से बंद हो जाएगा, लेकिन आप इसे संशोधित कर सकते हैं। या पर सब कुछ पारित करने के बजाय कुछ विकल्प पार्सिंग लागू करें mount

मैं उम्मीद कर रहा था कि उसी के माध्यम से हासिल किया जा सकता है /sbin/umount.luks, लेकिन umount /mnt/decrypted(यहां तक ​​कि -t crypto_LUKS) अभी भी केवल सामान्य ही करता है, कंटेनर को खुला छोड़ देता है। यदि आपको इसके बजाय umountमेरी dm.umountस्क्रिप्ट को कॉल करने का एक तरीका मिल जाए , तो कृपया मुझे बताएं ... फिलहाल, सीधे कॉलिंग umountको हतोत्साहित किया जाता है क्योंकि आपको /dev/mapperमैन्युअल रूप से नाम का पता लगाना होगा cryptsetup luksClose $MAPPER। कम से कम लूप डिवाइस को स्वचालित रूप से जारी किया जाएगा यदि mount -o loopपहले इस्तेमाल किया गया था ...


के संबंध में umount, मुझे लगता है कि मुझे अपनी प्रविष्टि को संशोधित करना होगा/etc/mtabmount.luks जैसे कि फाइलसिस्टम प्रकार luks.ext3इसके बजाय उदाहरण के लिए है ext3
तोबियस किंजलर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.