Удобное использование encfs

()

У каждого из нас есть секреты. У многих людей часть секретов (а у некоторых даже все:)) хранится в персональном компьютере. Для хранения секретных данных их полезно зашифровать, в этом случае даже если злоумышленник получит доступ к шифрованным файлам - у него уйдут месяцы, а то и годы на дешифровку.

Самым распространённым решением для шифрования данных сейчас является TrueCrypt, однако он не свободен от недостатков, поскольку шифрованный том имеет ограниченный размер и либо в какой-то момент он просто заканчивается (а динамически расширить его не такая уж и простая задача), либо используется не полностью, то есть можно говорить о нерациональном расходовании дискового пространства.

От описываемого недостатка свободен проект encfs (На русском языке о нём можно прочитать в Википедии).

Основное отличие encfs от TrueCrypt состоит в использовании шифрованных директорий вместо шифрованных томов. Размер директории не фиксирован, и она может увеличиваться по мере появления в ней новых данных, вплоть до размера физического носителя, на котором они и расположены.

Свободное от шифрованных данных место на разделе не пропадает, а может быть использовано под нешифрованные данные. Таким образом достигается более эффективное использование дискового пространства.

Единственный недостаток encfs - отсутствие графического интерфейса пользователя, но он легко устраним с помощью несложных скриптов, с использованием например zenity или kdialog.

Далее будет показано как можно сделать использование encfs простым и удобным для простых пользователей. Начальные условия очень простые: дистрибутив xubuntu 8.10, использующий рабочую среду XFCE.

Итак, нам понадобиться два пакета: собственно encfs и пакет zenity, о котором уже говорилось ранее. Установим их:

apt-get install zenity encfs

Далее создадим шифрованную директорию и точку монтирования для него.

Здесь мы будем исходить из того, что работа ведётся под пользовательским аккаунтом "moose", и шифрованные данные будут хранится в директории /home/moose/.crypt, а монтировать для доступа будем в /home/moose/crypt. Если у вас другие данные - нужно внести соответствующие поправки.

Для создания директорий и настройки шифрования нужно выполнить команду:

encfs /home/moose/.crypt /home/moose/crypt

Далее начинаем отмечать на вопросы. Первым делом будут заданы вопросы о необходимости создания директорий. На них нужно ответить "y" (то есть утвердительно).

Следующий вопрос касается параметров шифрования. Здесь есть два варианта: режиме эксперта и максимальное шифрование. Выберем максимальное шифрование набрав "p".

На третьем (завершающем) шаге нужно ввести и повторить пароль для шифрования.

Всё. Теперь шифрованная директория создана и примонтирована. В дальнейшем для монитирования нужно будет выполнять команду:

encfs /home/moose/.crypt /home/moose/crypt

И отвечать на запрос пароля. Для отмонтирования достаточно выполнить команду:

fusermount -u /home/moose/crypt

На этом создание шифрованной директории заканчивается. Теперь создадим простеший интерфейс для облегчения работы с ecnfs простым пользователям.

Как он работает будет видно из комментариев. Вот листинг скрипта:

#!/bin/sh

# Точка монтирования для шифрованной файловой системы
ENCFS_MOUNTPOINT='/home/moose/crypt'

# Исходная директория с шифрованными файлами
ENCFS_SRCDIR='/home/moose/.crypt'

# Смонитирована ли файловая система? Если да - будет единица, если нет - ноль
ENCFS_MOUNTED=`mount | grep encfs\ on\ ${ENCFS_MOUNTPOINT}\  | wc -l`

# Если файловая система смонтирована
if [ ${ENCFS_MOUNTED} -ne 0 ]; then

    # Задаём вопрос
    zenity --question --text='Вы уверены что хотите отмонтировать директорию '.${ENCFS_MOUNTPOINT}.'?' --title='Доступ к шифрованным данным'
    
    # Если ответ утвердительный
    if [ $? -eq 0 ]; then
    
	# Пытаемся отмонтировать шифрованную ФС
	fusermount -u ${ENCFS_MOUNTPOINT}
	# Если всё прошло гладко
	if [ $? -eq 0 ]; then
	
	    # Сообщаем об этом пользователю
	    zenity --info --text='Размонтирование прошло успешно!' --title='Информация'
	    
	# Если попытка размонтировать не удалась
	else
	
	    # Выдаём сообщение об ошибке
	    zenity --error --text='Не удалось отмонтировать!' --title='Ошибка'
	fi
    fi

# Если файловая система не смонтирована
else
    # Спрашиваем пароль
    ENCFS_PASSWORD=`zenity --entry --text='Введите пароль для доступа к шифрованным данным' --hide-text --title='Введите пароль'`
    
    # Если пароль был введён
    if [ "${ENCFS_PASSWORD}" != "" ]; then

	# Пытаемся примонтировать файловую систему
	echo ${ENCFS_PASSWORD} | encfs -S ${ENCFS_SRCDIR} ${ENCFS_MOUNTPOINT}
	
	# Если монтирование прошло успешно
	if [ $? -eq 0 ]; then
	
	    # Сообщаем об успехе
	    zenity --info --text='Монтирование прошло успешно!' --title='Информация'
	# Если же монтирование не удалось
	else
	    
	    # Выдаём сообщение об ошибке
	    zenity --error --text='Не удалось смонтировать директорию, возможно указан не верный пароль!' --title='Ошибка'
	fi
    fi
fi

Скрипт можно сохранить в директорию ~/scripts под именем mount_encfs.sh и сделать его исполняемым:

chmod +x ~/scripts/mount_encfs.sh

Далее остаётся только добавить кнопку запуска этого скрипта на рабочий стол или панель быстрого запуска и всё!

На этом всё. Приятной работы!

Ключевые слова: encfs, GUI, zenity, bash.

Комментарии:

Шаманыш 2009-03-20 01:09:33 (#)

не стоит пароль в переменной хранить, к тому же глобальной. лучше сразу по пайпу передавать

MooSE 2009-03-20 01:33:57 (#)

Цитата:


не стоит пароль в переменной хранить, к тому же глобальной. лучше сразу по пайпу передавать


Сэмпл такого скрипта в студию:)

Anonymous 2011-01-24 17:54:55 (#)

На вскидку пример
zenity --entry --text='Введите пароль для доступа к шифрованным данным' --hide-text --title='Введите пароль' | encfs -S ${ENCFS_SRCDIR} ${ENCFS_MOUNTPOINT}

Anonymous 2011-01-24 17:57:40 (#)

есть еще такая GUI утилитка creeptkeeper. висит в трее и работает через encfs

oermolaev 2011-02-10 00:14:33 (#)

до сего дня был поклонником truecrypt, но ваше решение показалось практичней и удобней :)

MooSE 2011-02-10 01:16:48 (#)

Цитата:

до сего дня был поклонником truecrypt, но ваше решение показалось практичней и удобней :)


У encfs как минимум нет заморочек с размером криптованного тома:)

oermolaev 2013-11-14 13:33:09 (#)

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

oermolaev 2013-11-14 15:26:24 (#)

вот нашел кое что по своему вопросу:
http://andviro.blogspot.ru/2011/06/cat.htmlhttp://andviro.blogspot.ru/2011_11_01_archive.html
Собственно вот: libpam-encfs

MooSE 2013-11-17 04:56:23 (#)

Собственно в Ubuntu как раз и сделана связка PAM и EncFS. Так что пожалуй это действительно ответ на твой вопрос:)

oermolaev 2013-11-28 12:59:58 (#)

вот собрал в кучку:
http://help.ubuntu.ru/wiki/encfs_cloud
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE