понедельник, 16 июня 2008 г.

Делаем EncFS более дружелюбным к пользователю (Ubuntu)

  1. Устанавливаем EncFS
    $ sudo aptitude install encfs
  2. Добавляем текущего пользователя в группу fuse, если он еще не в этой группе
    $ sudo adduser $USERNAME fuse
  3. Создаем директории
    $ mkdir ~/.Encrypted
    $ mkdir ~/"Secret Documents"
    В «~/.Encrypted» будут храниться зашифрованные данные, а в «~/Secret Documents» - монтироваться EncFS. Не забывайте что EncFS требует абсолютные пути, т.е. они должны начинаться с «/».
  4. Создаем и монтируем шифрованное хранилище
    $ encfs ~/.Encrypted ~/"Secret Documents"
    Будет задано несколько вопросов с вариантами ответов и подсказками.
  5. Размонтируем его
    $ fusermount -u ~/"Secret Documents"
  6. Создадим два скрипта, призванные упростить работу с созданным хранилищем.
    • Скрипт №1 будет выполнять роль внешней программы авторизации, вызываемой EncFS.
      Файл: ~/bin/req-pass.sh
      #!/bin/sh
      /usr/bin/zenity --entry --title=Пароль --text='Введите пароль' --hide-text
    • Скрипт №2 упрощает монтирование и размонтирование шифрованного хранилища.
      У скрипта два параметра
      mount
      Монтирует зашифрованное хранилище
      umount
      Размонтирует зашифрованное хранилище
      Файл: ~/bin/encfs-user.sh
      #!/bin/sh

      if [ ! -z "$HOME" ];
      then
      ENC=$HOME/.Encrypt;
      DIR="$HOME/Secret Documents";
      MOUNT="`/bin/grep -E '^encfs[[:space:]]+'$DIR'\>' /proc/mounts`";

      case "$1" in
      mount)
      if [ -z "$MOUNT" ];
      then
      # Назначаем скрипт №1 внешней программой авторизации для encfs
      /usr/bin/encfs --extpass=$HOME/bin/req-pass.sh $ENC $DIR;
      if [ $? -eq 0 ];
      then
      /usr/bin/zenity --info --title=Сообщение --text='Том с документами успешно подключен';
      else
      /usr/bin/zenity --warning --title=Предупреждение --text='Возникла ошибка при попытке подключения тома с документами';
      fi;
      else
      /usr/bin/zenity --warning --title=Предупреждение --text='Том с документами уже подключен'
      fi;
      ;;
      umount)
      if [ ! -z "$MOUNT" ];
      then
      /usr/bin/zenity --question --title=Вопрос --text='Вы действительно хотите отключить том с документами?'
      if [ $? -eq 0 ];
      then
      /bin/fusermount -u $DIR;
      if [ $? -eq 0 ];
      then
      /usr/bin/zenity --info --title=Сообщение --text='Том с документами успешно отключен';
      else
      /usr/bin/zenity --warning --title=Предупреждение --text='Возникла ошибка при попытке отключения тома с документами';
      fi;
      else
      /usr/bin/zenity --info --title=Сообщение --text='Том с документами не был отключен';
      fi;
      else
      /usr/bin/zenity --warning --title=Предупреждение --text='Том с документами уже отключен'
      fi;
      ;;
      esac;
      fi;
  7. Проверим работу скрипта в консоли.
    Смонтируем хранилище
    $ ~/bin/encfs-user.sh mount
    Скрипт запросит пароль и в всплывающем окне выведет результат работы скрипта.
    Теперь размонтируем
    $ ~/bin/encfs-user.sh umount
  8. Осталось создать ярлыки в оконном менеджере для запуска скрипта. :)

1 комментарий:

Damir комментирует...

Cryptkeeper проще и удобнее