Làm cách nào để tạo một hệ thống tệp được mã hóa trong một tệp?


16

Tôi đã tìm thấy hướng dẫn thú vị này trên blog floss ware .

Nó giải thích cách tạo một tệp trống, định dạng tệp đó là ext4 và gắn kết nó dưới dạng thiết bị.

Tôi muốn biết liệu nó có thể được tạo như một hệ thống tệp ext4 được mã hóa hay không.

Tôi đã thử sử dụng palimpsest (tiện ích đĩa được tìm thấy trong menu Hệ thống) để định dạng hệ thống tệp đã được tạo nhưng nó không hoạt động vì nó phát hiện hệ thống tệp đang được sử dụng.

Nếu tôi cố gắng ngắt kết nối hệ thống tệp, điều đó sẽ không hoạt động vì nó không phát hiện ra thiết bị (vì đó không phải là thiết bị thực như ổ cứng hoặc ổ USB).

Vì vậy, câu hỏi của tôi là, có một tùy chọn để tạo hệ thống tập tin như được mã hóa từ đầu? Tôi đã sử dụng các lệnh này:

Tạo một tệp trống kích thước 200Mb:

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

Làm cho nó ext4:

mkfs -t ext4 file

Gắn nó vào một thư mục trong nhà tôi:

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

Có cách nào để mkfslệnh có thể tạo một hệ thống tập tin ext4 được mã hóa yêu cầu mật khẩu giải mã không?

Tôi dự định sử dụng điều này như một cách để mã hóa các tệp trong Dropbox.



Nếu bạn muốn mã hóa phù hợp khi sao lưu tệp, bạn có thể muốn xem xét SpiderOak thay thế. An ninh hơn và ít ồn ào hơn.
Landroni

Câu trả lời:


8

Bạn có thể sử dụng cryptmountđể mã hóa một hệ thống tập tin, nếu hệ thống tập tin nằm trên một tập tin.

Các cryptmounttrang hướng dẫn có một lời giải thích rất đơn giản và chi tiết mà tôi báo cáo (sửa đổi) ở đây, và nó làm đề cập đến một cách rõ ràng một file dựa hệ thống tập tin.

  • Bước 1
    Thêm một mục trong /etc/cryptmount/cmtab, như sau:

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

    nơi /media/data/mycryptlà file hỗ trợ tạo ra bởi dd/home/enzotib/mycryptlà thời điểm gắn mong muốn.

  • Bước 2
    Tạo khóa giải mã bí mật

    sudo cryptmount --generate-key 32 mycrypt
    
  • Bước 3
    Thực hiện lệnh sau

    sudo cryptmount --prepare mycrypt
    

    sau đó bạn sẽ được hỏi mật khẩu được sử dụng khi thiết lập khóa

  • Bước 4
    Tạo hệ thống tập tin

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Bước 5
    Thực thi

    sudo cryptmount --release mycrypt
    
  • Bước 6
    Bây giờ gắn kết hệ thống tập tin

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    sau đó ngắt kết nối nó

    cryptmount -u mycrypt
    

Ngoài ra, nếu bạn cần mã hóa một thư mục, encfscó thể đáng để xem xét.


Cảm ơn câu trả lời của bạn, tôi đã tạo hệ thống tệp, được mã hóa và tải lên Dropbox. Sau này tôi sẽ thử gắn tập tin đó vào máy tính khác. Chỉ cần một điều, nó có thể được thực hiện mà không cần sudo? Nếu tôi muốn giữ tệp và hệ thống tệp được gắn trong nhà của tôi (không phải trong phương tiện truyền thông như usb hoặc ổ cứng), các lệnh sẽ giống nhau mà không có sudo hoặc cryptmount luôn cần quyền root?
Animaletdesequia

1
@darent: có vẻ như lệnh chỉ cần quyền root trong thiết lập hệ thống tệp, nhưng việc gắn / ngắt kết nối là hành động của người dùng, miễn là tệp hình ảnh và điểm gắn kết được sở hữu bởi người dùng. Để thiết lập cùng một tệp hình ảnh trên một máy khác, tôi cho rằng bạn nên sao chép /etc/cryptmount/mycrypt.keyvà bỏ qua --generate-keybước.
enzotib

Tôi gặp lỗi này ở bước cuối cùng: $ sudo cryptmount -m encriptat Nhập mật khẩu cho mục tiêu "encriptat": e2fsck 1.41,14 (22 tháng 12 năm 2010) fsck.ext4: Súperbloc no vàlid, provant els blocs de còp. .. fsck.ext4: Số ma thuật xấu trong siêu khối en có ý định obrir / dev / mapper / encriptat
Animaletdesequia

1
@darent: bạn đã tạo hệ thống tập tin như trong bước 4 chưa? Bạn đã thống nhất trong việc thay thế tên "mycrypt" bằng "encriptat" chưa?
enzotib

Xin lỗi, lỗi là do thay vì (sudo mkfs.ext4 / dev / mapper / mycrypt) tôi đã gõ (sudo mkfs.ext4 mycript). Tôi đã sẵn sàng để tập tin trực tiếp, không phải thiết bị. Bây giờ nó hoạt động hoàn hảo. Và xin lỗi về định dạng của thông báo này, không biết lý do tại sao tôi không thể tách các dòng (nếu tôi nhấn enter, nó sẽ xuất bản bình luận thay vì tạo một dòng mới, có thể là một trục trặc firefox ...) Chúc mừng! EDIT: bây giờ tôi đã đọc câu trả lời của bạn, tên encriptat không phải là vấn đề (chỉ cần điều chỉnh bài đăng của bạn và đặt các tệp có tên Nguồn, nhưng tất cả đều nhất quán). Everithing hiện đang hoạt động tốt, cảm ơn một lần nữa :)
Animaletdesequia

7

Thực hiện theo các bước tiếp theo để tạo một tệp được mã hóa với hệ thống tệp bên trong:

1. Cách nhanh hơn để tạo tập tin có kích thước nhất định là:

fallocate -l 128M /path/to/file

2. Tạo phân vùng LUKS (Linux Unified Key Setup) trong tệp bằng các công cụ dm-crypt :

cryptsetup -y luksFormat /path/to/file

Bạn có thể kiểm tra xem tập tin có được mã hóa container không:

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

3. Mở container được mã hóa:

cryptsetup luksOpen /path/to/file data

datalà tên khối lượng thiết bị ánh xạ. Bạn có thể chọn tên khác.

Điều này sẽ mở thiết bị LUKS và ánh xạ nó tới một tên mà chúng tôi cung cấp, trong trường hợp của chúng tôi tạo một tệp tại /dev/mapper/data.

4. Tạo ext4hệ thống tập tin trên thiết bị này:

mkfs.ext4 /dev/mapper/data

5. Sau đó tạo điểm gắn kết:

mkdir /path/to/mount

6. Và gắn thiết bị ở đó:

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

7. Để ngắt kết nối hệ thống tập tin và đóng thiết bị LUKS:

umount /path/to/mount
cryptsetup luksClose data

Bây giờ bạn đã chứa container LUKS được mã hóa với hệ thống tập tin ext4 bên trong. Khi bạn muốn sử dụng, chỉ cần lặp lại bước 3 và 6. Khi bạn kết thúc, hãy gọi bước 7.

Bài viết này rất hữu ích cho tôi.

Ngoài ra một ngày container của bạn sẽ hết không gian. Giả sử kích thước tệp container được mã hóa là 128 MB và chúng tôi muốn tăng kích thước của nó lên 512 MB. Để tăng công suất, hãy làm theo các bước sau:

1. Ngắt kết nối và đóng thiết bị LUKS (xem bước 7 trong danh sách trên).

2. Tăng kích thước tệp container:

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

3. Mở thiết bị LUKS.

cryptsetup luksOpen /path/to/file data

4. Thay đổi kích thước thiết bị LUKS để phù hợp với kích thước tệp chứa. Từ trang nam:

Nếu --size (trong các ngành) không được chỉ định, kích thước của thiết bị khối bên dưới được sử dụng.

Vì vậy, bạn có thể chỉ:

cryptsetup resize data

5. Sau đó thay đổi kích thước hệ thống tập tin ext4:

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

6. Bây giờ bạn có thể gắn hệ thống tập tin trở lại:

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

1
Tôi nghĩ rằng câu trả lời này là câu trả lời tốt nhất và cập nhật nhất. Nó nên được chọn là câu trả lời chính xác!
yurtesen

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.