Как уже говорилось, ecryptfs не является решением моей проблемы, так как моя домашняя папка уже зашифрована ecryptfs. Перемещение папки «Ubuntu One» из домашнего дерева также не является решением, так как остальная часть контента «Ubuntu One» больше не шифруется.
Я решил использовать EncFS вместо этого. Настройка зашифрованной папки довольно проста. Но как установить его автоматически, чтобы приложения могли использовать его для хранения файлов конфигурации? Есть несколько решений:
- pam_mount
- гном-EncFS
- AutoFS
- afuse
Мне не нравится идея 1, потому что я не хочу использовать тот же пароль для EncFS, что и мой пароль для входа.
Решение 2 Мне не нравится, с одной стороны, потому что для Ubuntu нет пакета apt, а с другой стороны, я не хочу, чтобы папка EncFS монтировалась только после входа в систему. Если что-то не работает или папка отключается каждый раз последующий доступ не удастся.
Решение 3 просто не работает. Я уже довольно давно использую autofs для монтирования общих ресурсов и папок CIFS через sshfs, но EncFS просто не поддерживается. Я поиграл с несколькими сценариями для монтирования EncFS с помощью autofs, но это стало слишком сложным и подверженным ошибкам.
Итак, в настоящее время я использую решение 4. Afuse доступен в виде apt-пакета. Afuse автоматически монтирует папку EncFS при доступе к папке и снова монтирует ее после некоторого простоя.
Вот быстрые шаги, как все настроить (возможно, я добавлю некоторые детали в будущем):
- установить
- создайте папку «Ubuntu One» для хранения зашифрованного содержимого
Пример:
~ / Ubuntu \ One / .encrypted
- создать папку как верхнюю папку, чтобы можно было монтировать папки внутри
Пример:
~ / .Fuse
- создать несколько вспомогательных скриптов
- создать автозапуск в Gnome для запуска
Незашифрованная папка EncFS монтируется в ~ / .fuse. В моем случае папка с незашифрованным содержимым называется U1Enc, поэтому все данные остаются в ~ / .fuse / U1Enc. Для удобства я создал ссылку из ~ / U1Enc в ~ / .fuse / U1Enc, чтобы там было легче.
Идеи и вспомогательные скрипты я нашел на нескольких сайтах. Вот ссылки:
Автомонтирование файловых систем FUSE
autofs: encfs over sshfs
Я использую следующие скрипты:
~ / .Afuse-Fstab
U1Enc encfs --ondemand --idle=5 --extpass="/home/xxx/.creds/U1.encfs.sh" /home/xxx/Ubuntu\ One/.encrypted %m
~ / .creds / U1.encfs.sh (помечен как исполняемый и доступен только для самого пользователя)
#!/bin/sh
echo PASSWORD_FOR_ENCFS_IN_CLEARTEXT
~ / bin / afuse-handler.pl (помечен как исполняемый файл и ~ / bin в $ 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";
}
}
и, наконец, ~ / bin / afuse.start.sh (снова помеченный как исполняемый файл), который я зарегистрировал в Gnome / System / Settings для запуска после входа в систему.
#!/bin/sh
afuse -o mount_template="/home/xxx/bin/afuse-handler.pl %r %m" -o unmount_template="fusermount -u -z %m" ~/.fuse
Последний скрипт запускает afuse, который запускает обработчик afuse для монтирования папки EncFS в ~ / .fuse, как только к ней получают доступ. Сам afuse.handler проверяет .afuse-fstab, как монтировать папку. Пароль EncFS подтверждается U1.encfs.sh, поэтому никакого вмешательства пользователя не требуется (поскольку этот файл хранится в моей домашней папке, он зашифрован ecryptfs, поэтому я не вижу там большой проблемы безопасности).
Позаботьтесь о разных версиях EncFS. На Natty в настоящее время устанавливается EncFS версия 1.7.4. Это не очень хорошо с более старой версией 1.6 на Maverick. Мне также пришлось обновить EncFS на Maverick до версии 1.7.4 (это можно сделать, закрепив apt / предпочтения).