используйте ecryptfs для Ubuntu One с уже зашифрованным домашним каталогом

9

Мне бы хотелось, чтобы в Ubuntu One была одна зашифрованная папка. В Интернете есть текущие инструкции по настройке с помощью EncFS или ecryptfs. Я хотел бы использовать ecryptfs - не из-за скорости, так как скорость не имеет большого значения, если вы храните свои данные в облаке - но поскольку я уже использовал ecryptfs, привык к этому и поэтому не Мне действительно нравится использовать другое решение.

Проблема с папкой Ubuntu One состоит в том, что она является частью домашней папки пользователя. В последних версиях Ubuntu во многих случаях домашняя папка пользователя уже зашифрована с помощью ecryptfs, и вы не можете использовать ecryptfs (для папки Ubuntu One) поверх ecryptfs (из домашнего каталога пользователя).

Так что же можно сделать? Конечно, вместо этого используйте EncFS. Или переместите папку Ubuntu One из домашней папки пользователя.

Любые другие идеи или предложения?

СПИ
источник

Ответы:

4

Как уже говорилось, ecryptfs не является решением моей проблемы, так как моя домашняя папка уже зашифрована ecryptfs. Перемещение папки «Ubuntu One» из домашнего дерева также не является решением, так как остальная часть контента «Ubuntu One» больше не шифруется.

Я решил использовать EncFS вместо этого. Настройка зашифрованной папки довольно проста. Но как установить его автоматически, чтобы приложения могли использовать его для хранения файлов конфигурации? Есть несколько решений:

  1. pam_mount
  2. гном-EncFS
  3. AutoFS
  4. 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 / предпочтения).

спи
источник
0

Возможный способ сделать это - использовать два разных каталога:

~ / my_secret_data не будет синхронизироваться, но зашифрует все добавленные в него файлы, а затем переместит зашифрованные файлы из папки ~ / my_secret_data / в папку ~ / Ubuntu One /. Если вы добавили свой ключ GPG ко всем своим компьютерам, вы сможете автоматически открывать зашифрованные файлы, а другие нет.

Это не очень элегантно, я думаю, но это должно работать.

Джо-Эрленд Шинстад
источник
Это то, что я делаю с EncFS. Зашифрованные данные хранятся в ~ / Ubuntu \ One / .encrypted, а незашифрованные - в ~ / .fuse / U1Enc. Я просто использую EncFS вместо GPG для удобства пользователя - данные шифруются / дешифруются на лету.
Спи