У каждого из нас есть секреты. У многих людей часть секретов (а у некоторых даже все:)) хранится в персональном компьютере. Для хранения секретных данных их полезно зашифровать, в этом случае даже если злоумышленник получит доступ к шифрованным файлам - у него уйдут месяцы, а то и годы на дешифровку.
Самым распространённым решением для шифрования данных сейчас является 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
Далее остаётся только добавить кнопку запуска этого скрипта на рабочий стол или панель быстрого запуска и всё!
На этом всё. Приятной работы!
Шаманыш 2009-03-20 01:09:33 (#)