Tôi có thể tạo ext4
phân vùng được mã hóa mới với kernel 4.1 trên Ubuntu 15.04 không?
Tôi có thể tạo ext4
phân vùng được mã hóa mới với kernel 4.1 trên Ubuntu 15.04 không?
Câu trả lời:
Trước hết từ chối trách nhiệm: Tôi chưa thực hiện điều này với Ubuntu, nhưng trên một máy có Debian "Stretch" được cài đặt bằng hạt nhân Linux 4.2.3 tùy chỉnh mà tôi đã bật EXT4_FS_ENCRYPTION
.
Các hướng dẫn được cung cấp bởi kmeaw không làm việc cho tôi chính xác như được đăng. Một vài thứ bị bỏ lại (tham số dòng lệnh và các bước).
e2fsprogs
như hình trênTạo muối ngẫu nhiên của bạn. Tôi đã sử dụng những điều sau đây để lưu trữ nó ở "nơi an toàn":
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Để sử dụng mã hóa ext4 trên hệ thống tệp, cờ "mã hóa" phải được đặt trong siêu khối. Đây không phải là mặc định khi hệ thống tệp ext4 được tạo. Sử dụng tiện ích "Tune2fs" từ e2fsprogie 1.43 trở lên, đặt tùy chọn "mã hóa":
sudo tune2fs -O encrypt /dev/sda4
Gắn kết hoặc kết nối lại hệ thống tệp để kernel biết về thay đổi (có thể là tự động, nhưng tôi chỉ thực hiện việc này trên một phân vùng riêng, vì vậy tôi không chắc chắn.)
Tạo một thư mục trên hệ thống tệp được gắn với mã hóa được kích hoạt:
sudo mkdir -p /secret/home/$USER
sudo chown $USER:$USER /secret/home/$USER
Tạo khóa trong quá trình khóa và sử dụng nó để đặt chính sách cho thư mục được mã hóa ( sudo
lệnh không cần thiết ở đây):
$ /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.
Sau mỗi lần khởi động lại, add_key
lệnh có thể được sử dụng đặt khóa để giải mã thư mục và hậu duệ của nó:
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
Nhập cùng một mật khẩu được sử dụng trong bước trước đó và bạn không cần phải nhớ chuỗi hex mô tả.
Bạn cũng có thể sử dụng add_key
trực tiếp. Điều này sẽ sử dụng một loại muối cụ thể của hệ thống tập tin (Vì vậy, tất cả các thư mục trong phân vùng đó sẽ có cùng một loại muối)
$ /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/.
tôi nhận được: «cp: không thể tạo tệp thông thường '/secret/home/alexis/test-top-secret-image.svg': Không yêu cầu khóa có sẵn » . Tôi chỉ làm theo hướng dẫn của bạn để tôi đoán có gì đó đã thay đổi.
/usr/bin/e4crypt
" thiếu "s" trong "/ [s] bin".
Linux 4.1 đi kèm với một tính năng Ext4 mới để mã hóa các thư mục của một hệ thống tập tin. Khóa mã hóa được lưu trữ trong khóa. Để bắt đầu, hãy đảm bảo bạn đã bật CONFIG_KEYS
và CONFIG_EXT4_FS_ENCRYPTION
tùy chọn kernel và bạn có kernel 4.1 trở lên.
Trước hết, bạn cần cập nhật e2fspross lên ít nhất là phiên bản 1.43, vẫn là WIP tại thời điểm viết bài, vì vậy chúng tôi cần tìm nạp nó từ kho git :
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
Nguồn e4crypt đã vô hiệu hóa một phần có liên quan trong mã nguồn của nó, cho phép nó bằng cách chỉnh sửa misc / e4crypt.c và xóa hai dòng này gần dòng 714:
printf("arg %s\n", argv[optind]);
exit(0);
Bây giờ xây dựng và cài đặt e2fspross mới:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
Kiểm tra phiên bản của bạn ngay bây giờ, nó phải là 1.43-WIP:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
Để làm việc với các khóa, chúng ta cần cài đặt keyutils
gói:
$ sudo apt-get install keyutils
Hãy tạo một thư mục mà chúng tôi sẽ mã hóa. Chính sách mã hóa chỉ có thể được đặt trên các thư mục trống:
$ sudo mkdir -p /encrypted/dir
Đầu tiên tạo ra một giá trị muối ngẫu nhiên và lưu trữ nó ở một nơi an toàn:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
Bây giờ tạo và thêm một khóa mới vào khóa của bạn: bước này phải được lặp lại mỗi lần bạn tuôn khóa của bạn (khởi động lại)
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Bây giờ bạn biết một mô tả cho chìa khóa của bạn. Đảm bảo bạn đã thêm một khóa vào móc khóa của mình:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
Sắp xong. Bây giờ hãy đặt chính sách mã hóa cho một thư mục:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
Đó là tất cả. Nếu bạn thử truy cập vào đĩa mà không thêm khóa vào móc khóa, tên tệp và nội dung của chúng sẽ được xem là vô nghĩa được mã hóa. Hãy cẩn thận khi chạy các phiên bản cũ của e2fsck trên hệ thống tệp của bạn - nó sẽ coi tên tệp được mã hóa là không hợp lệ.