ฉันจะสร้างระบบไฟล์ที่เข้ารหัสภายในไฟล์ได้อย่างไร


16

ฉันได้พบนี้กวดวิชาที่น่าสนใจในบล็อก flossstuff

มันอธิบายถึงวิธีการสร้างไฟล์เปล่าจัดรูปแบบเป็น ext4 และติดตั้งเป็นอุปกรณ์

ฉันต้องการทราบว่าสามารถสร้างเป็นระบบไฟล์ ext4 ที่เข้ารหัสหรือไม่

ฉันได้ลองใช้ palimpsest (ยูทิลิตีดิสก์ที่พบในเมนู System) เพื่อจัดรูปแบบระบบไฟล์ที่สร้างขึ้นแล้ว แต่มันไม่ทำงานเพราะตรวจพบระบบไฟล์ที่กำลังใช้อยู่

หากฉันพยายามยกเลิกการต่อเชื่อมระบบไฟล์นั่นจะไม่ทำงานเนื่องจากไม่ได้ตรวจพบอุปกรณ์ (เนื่องจากไม่ใช่อุปกรณ์จริงเช่นฮาร์ดไดรฟ์หรือไดรฟ์ USB)

ดังนั้นคำถามของฉันคือมีตัวเลือกในการสร้างระบบไฟล์ที่เข้ารหัสตั้งแต่ต้นหรือไม่ ฉันใช้คำสั่งเหล่านี้:

สร้างไฟล์เปล่าขนาด 200Mb:

dd if=/dev/zero of=/path/to/file bs=1M count=200

ทำให้เป็น ext4:

mkfs -t ext4 file

ติดตั้งในโฟลเดอร์ภายในบ้านของฉัน:

sudo mount -o loop file /path/to/mount_point

มีวิธีใดบ้างที่mkfsคำสั่งสามารถสร้างระบบไฟล์ ext4 ที่เข้ารหัสไว้เพื่อขอรหัสผ่านการถอดรหัส?

ฉันวางแผนที่จะใช้สิ่งนี้เป็นวิธีในการเข้ารหัสไฟล์ภายใน Dropbox


ที่เกี่ยวข้อง: askubuntu.com/questions/137828/ …และaskubuntu.com/questions/18751/…
landroni

หากคุณต้องการการเข้ารหัสที่เหมาะสมเมื่อสำรองไฟล์คุณอาจต้องพิจารณา SpiderOak แทน ความปลอดภัยมากขึ้นและความยุ่งยากน้อยลง
landroni

คำตอบ:


8

คุณสามารถใช้cryptmountเพื่อเข้ารหัสระบบไฟล์ได้เช่นกันหากระบบไฟล์อยู่ในไฟล์

cryptmountหน้าคู่มือมีคำอธิบายที่ง่ายมากและมีรายละเอียดที่ผมรายงาน (แก้ไข) นี่และมันไม่พูดถึงอย่างชัดเจนไฟล์ตามระบบแฟ้ม

  • ขั้นตอนที่ 1
    เพิ่มรายการ/etc/cryptmount/cmtabดังต่อไปนี้:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    ที่/media/data/mycryptอยู่ในแฟ้มการสนับสนุนที่สร้างขึ้นโดยddและ/home/enzotib/mycryptเป็นจุดเมานท์ที่ต้องการ

  • ขั้นตอนที่ 2
    สร้างคีย์ถอดรหัสลับ

    sudo cryptmount --generate-key 32 mycrypt
    
  • ขั้นตอนที่ 3
    ดำเนินการคำสั่งต่อไปนี้

    sudo cryptmount --prepare mycrypt
    

    คุณจะถูกถามถึงรหัสผ่านที่ใช้เมื่อตั้งค่าคีย์

  • ขั้นตอนที่ 4
    สร้างระบบไฟล์

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • ขั้นตอนที่ 5
    ดำเนินการ

    sudo cryptmount --release mycrypt
    
  • ขั้นตอนที่ 6
    ตอนนี้เมานต์ระบบไฟล์

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    จากนั้นเลิกเมานท์

    cryptmount -u mycrypt
    

นอกจากนี้หากคุณต้องการเข้ารหัสไดเรกทอรีencfsอาจมีค่าควรพิจารณา


ขอบคุณสำหรับคำตอบของคุณฉันได้สร้างระบบไฟล์เข้ารหัสและอัปโหลดไปยัง Dropbox แล้ว หลังจากนั้นฉันจะลองเมานต์ไฟล์นั้นในพีซีเครื่องอื่น มีเพียงสิ่งเดียวที่สามารถทำได้โดยไม่ต้อง sudo? หากฉันต้องการเก็บไฟล์และติดตั้งระบบไฟล์ไว้ในบ้านของฉัน (ไม่ใช่ในสื่อเช่นยูเอสบีหรือฮาร์ดไดรฟ์) คำสั่งจะเหมือนกันโดยไม่ต้องใช้ sudo หรือ cryptmount ต้องการสิทธิ์รูทเสมอหรือไม่
animaletdesequia

1
@darent: ดูเหมือนว่าคำสั่งต้องการสิทธิ์ใช้งานรูทเฉพาะในการตั้งค่าระบบไฟล์ แต่การเมานต์ / ยกเลิกการต่อเชื่อมเป็นการดำเนินการของผู้ใช้โดยมีอิมเมจไฟล์และเมานต์เป็นเจ้าของโดยผู้ใช้ ในการตั้งค่าไฟล์ภาพเดียวกันในเครื่องอื่นฉันคิดว่าคุณควรคัดลอก/etc/cryptmount/mycrypt.keyและข้าม--generate-keyขั้นตอน
enzotib

ฉันได้รับข้อผิดพลาดนี้ในขั้นตอนสุดท้าย: $ sudo cryptmount -m encriptat ป้อนรหัสผ่านสำหรับเป้าหมาย "encriptat": e2fsck 1.41.14 (22-Dec-2010) fsck.ext4: ไม่จำเป็นต้องมีบล็อกอื่น ๆ อีกต่อไป .. fsck.ext4: หมายเลขเวทย์มนตร์แย่ใน super-block en intentar obrir / dev / mapper / encriptat
animaletdesequia

1
@darent: คุณสร้างระบบไฟล์ตามที่แสดงในขั้นตอนที่ 4 แล้วหรือยัง คุณมีความสอดคล้องในการทดแทนชื่อ "mycrypt" ด้วย "encriptat" หรือไม่?
enzotib

ขออภัยข้อผิดพลาดเกิดขึ้นแทน (sudo mkfs.ext4 / dev / mapper / mycrypt) ฉันกำลังพิมพ์ (sudo mkfs.ext4 mycript) ฉันกำลังเขียนถึงไฟล์โดยตรงไม่ใช่อุปกรณ์ ตอนนี้มันทำงานได้สมบูรณ์แบบ และขออภัยเกี่ยวกับรูปแบบของข้อความนี้ไม่รู้ว่าทำไมฉันไม่สามารถแยกบรรทัดได้ (ถ้าฉันกด Enter มันจะเผยแพร่ความคิดเห็นแทนการสร้างบรรทัดใหม่บางทีอาจเป็น firefox glitch ... ) ไชโย! แก้ไข: ตอนนี้ฉันได้อ่านคำตอบของคุณแล้วชื่อ encriptat ไม่ใช่ปัญหา (เพียงดัดแปลงโพสต์ของคุณและวางไฟล์ด้วยชื่อคาตาลัน แต่ก็สอดคล้องกันทั้งหมด) Everithing ทำงานได้แล้วในตอนนี้ขอขอบคุณอีกครั้ง :)
animaletdesequia

7

ทำตามขั้นตอนต่อไปเพื่อสร้างไฟล์ที่เข้ารหัสด้วยระบบไฟล์ภายใน:

1.วิธีที่เร็วกว่าในการสร้างไฟล์ขนาดที่กำหนดคือ:

fallocate -l 128M /path/to/file

2.สร้างพาร์ติชันLUKS (การตั้งค่าคีย์รวม Linux) ภายในไฟล์โดยใช้เครื่องมือdm-crypt :

cryptsetup -y luksFormat /path/to/file

คุณสามารถตรวจสอบว่าไฟล์นั้นถูกเข้ารหัสคอนเทนเนอร์:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3.เปิดคอนเทนเนอร์ที่เข้ารหัส:

cryptsetup luksOpen /path/to/file data

dataเป็นชื่อปริมาณอุปกรณ์ทำแผนที่ คุณสามารถเลือกชื่ออื่น

นี้จะเปิดอุปกรณ์ LUKS /dev/mapper/dataและแผนที่ไปยังชื่อที่เราจัดหาในกรณีของเราสร้างไฟล์ที่

4.สร้างext4ระบบไฟล์บนอุปกรณ์นี้:

mkfs.ext4 /dev/mapper/data

5.จากนั้นสร้างจุดเมานท์:

mkdir /path/to/mount

6.และติดตั้งอุปกรณ์ที่นั่น:

mount /dev/mapper/data /path/to/mount

7. วิธียกเลิกการต่อเชื่อมระบบไฟล์และปิดอุปกรณ์ LUKS:

umount /path/to/mount
cryptsetup luksClose data

ตอนนี้คุณได้เข้ารหัส LUKS container ด้วยระบบไฟล์ ext4 ภายใน เมื่อคุณต้องการใช้เพียงทำซ้ำขั้นตอนที่ 3 และ 6 เมื่อคุณเสร็จสิ้นการโทรขั้นตอนที่ 7

บทความนี้มีประโยชน์กับฉันมาก

อีกวันหนึ่งตู้สินค้าของคุณก็จะเต็มพื้นที่ สมมติว่าไฟล์คอนเทนเนอร์เข้ารหัสมีขนาด 128 MB และเราต้องการเพิ่มขนาดไฟล์เป็น 512 MB ในการเพิ่มความสามารถให้ทำตามขั้นตอนเหล่านี้:

1.ถอนติดตั้งและปิดอุปกรณ์ LUKS (ดูขั้นตอนที่ 7 ในรายการด้านบน)

2.เพิ่มขนาดไฟล์คอนเทนเนอร์:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3.เปิดอุปกรณ์ LUKS

cryptsetup luksOpen /path/to/file data

4.ปรับขนาดอุปกรณ์ LUKS ให้ตรงกับขนาดไฟล์คอนเทนเนอร์ จากหน้าคน:

หากไม่ได้ระบุขนาด (ในส่วน) ขนาดของอุปกรณ์บล็อกพื้นฐานจะถูกนำมาใช้

ดังนั้นคุณสามารถ:

cryptsetup resize data

5.จากนั้นปรับขนาดระบบไฟล์ ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6.ตอนนี้คุณสามารถเมานต์ระบบไฟล์กลับ:

mount /dev/mapper/data /path/to/mount

1
ฉันคิดว่าคำตอบนี้เป็นคำตอบที่ดีที่สุดและทันสมัยที่สุด ควรเลือกให้เป็นคำตอบที่ถูกต้อง!
yurtesen

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