eCryptfs с Dropbox: необходимо перемонтировать для того, чтобы синхронизированные изменения были видны

3186
Quantumboredom

Я экспериментирую с использованием eCryptfs поверх dropbox, и у меня возникают некоторые проблемы.

Моя система GNU / Linux, а точнее openSUSE 12.2.

Моя настройка такова: я настроил два экземпляра VirtualBox, работающих под управлением openSUSE 12.2, давайте назовем их VM1 и VM2. Dropbox, как обычно, синхронизирует все в ~ / Dropbox. Для создания моей настройки eCryptfs я делаю следующее на обеих виртуальных машинах:

mkdir -m 500 ~/ecryptfs_upper mkdir -m 700 ~/Dropbox/ecryptfs_lower sudo mount -t ecryptfs Dropbox/ecryptfs_lower/ ecryptfs_upper/ 

Я настраиваю eCryptfs с:

key type: passphrase cipher: aes key bytes: 16 plaintext passthrough: no filename encryption: yes 

Если я сейчас приступлю к созданию файла в ~ / ecryptfs_upper на VM1, он также будет корректно отображаться на VM2. Однако, когда я затем изменяю этот файл на одной виртуальной машине, он иногда (часто, но не всегда по какой-то причине) не будет обновляться на другой виртуальной машине.

Если я проверяю базовые файлы в ~ / Dropbox / ecryptfs_lower на двух виртуальных машинах, они идентичны (sha256sum выдает одинаковый хэш), поэтому dropbox правильно сумел их синхронизировать. Но соответствующие файлы в ~ / ecryptfs_upper все еще разные! Я должен размонтировать, а затем снова смонтировать eCryptfs, чтобы изменения отображались корректно.

Кажется, проблема в том, что когда dropbox обновляет файл в нижнем каталоге eCryptfs, eCryptfs не замечает это изменение. Предположительно eCryptfs предполагает, что все изменения пройдут через монтирование. Для большинства случаев использования это, очевидно, справедливое предположение, но при использовании eCryptfs для шифрования синхронизированного облачного хранилища, такого как dropbox, это, очевидно, большая проблема.

Я видел нескольких людей, выступающих за использование eCryptfs с dropbox, но я не видел, чтобы эта проблема упоминалась. Кто-нибудь знает о исправлении (например, способ отключить кэш, который eCryptfs использует), или о какой-либо альтернативе eCryptfs, которая не страдает от этой проблемы?

4

3 ответа на вопрос

3
hrunting

Посмотрите на encfs как на альтернативу eCryptfs. Это не страдает от проблемы, которую вы описываете.

Руководство по настройке EncFS / Dropbox

EncFS действительно, похоже, не страдает от этой проблемы, что делает его гораздо более подходящим для этой задачи. Я также нашел https://github.com/timoc/encfsbox, который обеспечивает хороший механизм обработки конфликтов для комбинации dropbox + EncFS, что делает его действительно очень хорошим решением. Quantumboredom 11 лет назад 2
В Windows, Mac и мобильных устройствах вы можете использовать [BoxCryptor] (https://www.boxcryptor.com/), чтобы упростить доступ к зашифрованным данным. hrunting 11 лет назад 1
Помните о криптографических уязвимостях в EncFS, если вы полагаетесь на него в чем-то критическом (https://defuse.ca/audits/encfs.htm). В настоящее время ведется работа над версией 2.0, которая может или не может адресовать их, но пока нет никаких выпусков. darrend 8 лет назад 1
3
Mike Halcrow

Вы наткнулись на недостаток дизайна в eCryptfs в Linux. Там нет механизма, чтобы сообщить eCryptfs, что было внесено изменение в нижний кеш страницы, поэтому он не знает, если страница изменилась из-под него. Изменение нижних зашифрованных файлов на активном монтировании eCryptfs похоже на переключение битов на блочном устройстве во время монтирования EXT4. EXT4 имеет собственное представление о состоянии блочного устройства, поскольку предполагает, что это единственное, что мешает блочному устройству, и если это изменится из-под него, все может пойти довольно быстро на юг.

0
siewa001

It's not a solution but its way around. Tested on Linux Mint 17 and works perfectly, but should also works on other Linux distributions.

#!/bin/bash export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" xhome=$ # HOWTO # # Remove previous installation of Dropbox - all directories (~/.dropbox, ~/.dropbox-dist, ~/Dropbox) and in command line type: # # mkdir -p $/.mount/dropbox # dd if=/dev/zero of=$/.mount/dropbox.img bs=4K count=2M # for 8GB # mkfs.xfs $/.mount/dropbox.img # for XFS, but you can use your prefered FS, eg. EXT4 # mkdir $/bin # # Put this script to $/bin # # chmod 0755 $/bin/dropbox-mount.sh # # Add to /etc/sudoers line: # # YourUserName ALL=NOPASSWD: /bin/mount # # Run this script: $/bin/dropbox-mount.sh # # chown ( id -u ):( id -g ) $/.mount/dropbox # # Next start Dropbox App and select $/.mount/dropbox/ as a base directory, # Dropbox automatically will create $/.mount/dropbox/Dropbox. # # IMPORTANT # Turn off Dropbox autostart in Dropbox preferences. # Add this script to system autostart (Setting->Startup Applications) xdropbox=".mount/dropbox" xdropbox_dir="$/$" xdropbox_img="$/$.img" if [ `mount | grep -c "$/$"` -eq 0 ]; then sudo mount -o loop $ $ fi sleep 10 && dropbox start &>/dev/null exit 0 

Похожие вопросы