วิธีเมานต์ cryptsetup container ด้วย `mount 'ได้อย่างไร


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

มีความซ้ำซ้อนจำนวนมากและจับอุปกรณ์ลูปและ mapper ด้วยตนเองทั้งสองซึ่งอาจยังไม่ระบุชื่อ มีวิธีที่จะทำสิ่งที่ชอบmount -o luks ~/container /mnt/decrypted(แจ้งให้สำหรับวลีรหัสผ่าน) และumount /mnt/decryptedวิธีที่ง่ายแทนหรือไม่?


แก้ไขโดยทั่วไปฉันมีความสุขกับสคริปต์ของฉันด้านบน (แม้ว่าการตรวจสอบข้อผิดพลาดสามารถปรับปรุงได้ ... ) ดังนั้น

ตัวเลือกการเมานท์-o luks=~/containerสามารถนำไป-o loop ~/loopfileใช้คล้ายกับการใช้สคริปต์ที่ฉันเขียน

สามารถทำได้โดยไม่ต้องเขียนใหม่mount? หรือมิฉะนั้นจะสามารถ-t luks -o loop ~/containerดำเนินการได้?


คุณเคยลองcryptmountไหม?
jw013

@ jw013 ฉันไม่ได้และมันอาจจะมีสิ่งที่ง่ายขึ้นเล็กน้อย แต่ก็ยังไม่สนับสนุนการใช้โดยตรงmount
Tobias Kienzler

คำตอบ:


6

ในความเป็นจริงการแก้ไขเป็นไปได้ที่ผมได้เรียนรู้จากการดำรงอยู่ของmount mount.ntfs-3gฉันคาดเดาเท่านั้น แต่ฉันสงสัยว่าจะmount -t sometypeมีการโทรออกmount.sometype $DEV $MOUNTPOINT $OPTIONSโปรดแก้ไขให้ฉันที่นี่หรืออ้างถึงเอกสารจริง โดยเฉพาะอย่างยิ่งตัวเลือก-o loopได้รับการปฏิบัติแล้วดังนั้นไม่จำเป็นต้องใช้lopsetupอีกต่อไป ...

symlink / /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/mtabการเข้ามาของฉันmount.luksเช่นว่าชนิดของระบบแฟ้มเป็นเช่นแทนluks.ext3 ext3
Tobias Kienzler

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.