Như đã nêu ecryptfs không phải là một giải pháp cho vấn đề của tôi vì thư mục nhà của tôi đã được mã hóa bởi ecryptfs. Di chuyển thư mục "Ubuntu One" ra khỏi cây nhà không phải là một giải pháp vì phần còn lại của nội dung "Ubuntu One" không được mã hóa nữa.
Tôi đã quyết định sử dụng EncFS thay thế. Thiết lập thư mục được mã hóa khá đơn giản. Nhưng làm thế nào để nó được gắn tự động để các ứng dụng có thể sử dụng nó để lưu trữ các tập tin cấu hình? Có một số giải pháp:
- pam_mount
- gnome-encfs
- tự động
- một cầu chì
Tôi không thích ý tưởng 1 vì tôi không muốn sử dụng cùng một mật khẩu cho EncFS làm mật khẩu đăng nhập của mình.
Giải pháp 2 Tôi không thích một mặt vì không có gói apt nào có sẵn cho Ubuntu và mặt khác tôi không muốn có thư mục EncFS chỉ được gắn sau khi đăng nhập. Nếu có lỗi hoặc thư mục sẽ bị ngắt truy cập tiếp theo sẽ thất bại.
Giải pháp 3 không hoạt động. Tôi đã sử dụng autofs khá lâu để gắn kết các chia sẻ và thư mục CIFS thông qua sshfs nhưng EncFS chỉ không được hỗ trợ. Tôi đã chơi xung quanh với một số tập lệnh để gắn EncFS bằng autofs nhưng điều đó trở nên quá phức tạp và dễ bị lỗi.
Vì vậy, những gì tôi hiện đang sử dụng là giải pháp 4. Afuse có sẵn dưới dạng gói apt. Afuse tự động gắn kết thư mục EncFS ngay khi thư mục được truy cập và ngắt kết nối lại sau một thời gian nhàn rỗi.
Dưới đây là các bước nhanh để thiết lập mọi thứ (có thể tôi sẽ thêm một số chi tiết trong tương lai):
- cài đặt afuse
- tạo thư mục "Ubuntu One" để lưu trữ nội dung được mã hóa
Thí dụ:
~ / Ubuntu \ One / .encrypted
- tạo một thư mục như một thư mục hàng đầu để sử dụng để gắn kết các thư mục trong
Thí dụ:
~ / .fuse
- tạo một số kịch bản trợ giúp
- tạo một mục nhập tự động trong Gnome để khởi chạy afuse
Thư mục EncFS không được mã hóa được gắn bên dưới ~ / .fuse. Trong trường hợp của tôi, thư mục có nội dung không được mã hóa được đặt tên là U1Enc, do đó tất cả dữ liệu nằm trong ~ / .fuse / U1Enc. Để thuận tiện, tôi đã tạo một liên kết từ ~ / U1Enc đến ~ / .fuse / U1Enc để đến đó dễ dàng hơn.
Các ý tưởng và kịch bản trợ giúp tôi tìm thấy trên một số trang web. Đây là các liên kết:
Tự động hóa hệ thống tập tin FUSE
autofs: encfs trên sshfs
Tôi sử dụng các tập lệnh sau:
~ / .afuse-fstab
U1Enc encfs --ondemand --idle=5 --extpass="/home/xxx/.creds/U1.encfs.sh" /home/xxx/Ubuntu\ One/.encrypted %m
~ / .creds / U1.encfs.sh (được đánh dấu là có thể thực thi và chỉ có thể truy cập bởi chính người dùng)
#!/bin/sh
echo PASSWORD_FOR_ENCFS_IN_CLEARTEXT
~ / bin / afuse-handler.pl (được đánh dấu là có thể thực thi được và với ~ / bin trong $ PATH)
#!/usr/bin/perl -w
$fstab="$ENV{HOME}/.afuse-fstab";
$afusedir=$ARGV[0];
$afuse_mountpoint=$ARGV[1];
print "afusedir:$afusedir\n";
print "afuse_mountpoint:$afuse_mountpoint\n";
system("logger -t afuse 1:$ARGV[0] 2:$ARGV[1]");
open(FSTAB, $fstab ) or die("Can not open afuse-fstab at $fstab\n");
while( <FSTAB> ) {
if( /^$afusedir/ ) {
s/[^\s\/]+[\s]*//;
s/%r/$afusedir/g;
s/%m/$afuse_mountpoint/g;
chomp;
$cmd = $_;
print "$cmd\n";
system($_) == 0
or die "execution of FUSE filesystem failed!\n"
. "command:$cmd\n"
. "reason:$?\n";
}
}
và cuối cùng ~ / bin / afuse.start.sh (được đánh dấu lại là có thể thực thi) mà tôi đã đăng ký với Gnome / System / Settings để bắt đầu sử dụng sau khi đăng nhập
#!/bin/sh
afuse -o mount_template="/home/xxx/bin/afuse-handler.pl %r %m" -o unmount_template="fusermount -u -z %m" ~/.fuse
Kịch bản cuối cùng khởi chạy afuse để khởi động trình xử lý afuse để gắn thư mục EncFS bên dưới ~ / .fuse ngay khi nó được truy cập. Bản thân afuse.handler kiểm tra .afuse-fstab cách gắn thư mục. Mật khẩu EncFS được lặp lại bởi U1.encfs.sh vì vậy không cần sự can thiệp của người dùng (vì tệp này được lưu trong thư mục nhà của tôi nên nó được mã hóa bởi ecryptfs vì vậy tôi không thấy có vấn đề bảo mật lớn).
Chăm sóc các phiên bản EncFS khác nhau. Trên Natty hiện tại phiên bản EncFS 1.7.4 được cài đặt. Điều đó không chơi tốt với phiên bản 1.6 cũ hơn trên Maverick. Tôi cũng phải cập nhật EncFS trên Maverick lên 1.7.4 (thực hiện điều này bằng cách ghim apt / Preferences).