Здесь пока описаны некоторые, наиболее часто интересующие пользователей аспекты работы. При желании/необходимости можно дополнять.

Установка и миграция

Установка необходимого пакета:

sudo apt-get install ecryptfs-utils
Перед миграцией убедитесь, что на домашнем разделе доступно свободное место, по размеру равное, как минимум, домашней директории пользователя. Миграцию настоятельно рекомендуется выполнять из текстового виртуального терминала, предварительно завершив графический сеанс.

Миграция домашнего каталога:

sudo ecryptfs-migrate-home -u "$USER"
После шифрования swap-раздела использование спящего режима (S4, Suspend to disk) станет невозможным, но ждущий режим (S3, Suspend to RAM) останется доступен.

Шифрование swap-раздела:

sudo ecryptfs-setup-swap

Монтирование

Способы монтирования

Варианты монтирования по степени детализации:

  • Высокоуровневое:
# high level ecryptfs mount
LOGIN="user"
sudo -iu "$LOGIN"
ecryptfs-mount-private
  • Среднего уровня:
# middle level ecryptfs mount
LOGIN="user"
sudo -iu "$LOGIN"
WRAPPED_PASSPHRASE_FILE="/home/$USER/.ecryptfs/wrapped-passphrase"
PASSPHRASE="password"
echo "$PASSPHRASE" | ecryptfs-insert-wrapped-passphrase-into-keyring "$WRAPPED_PASSPHRASE_FILE"
mount.ecryptfs_private
  • Низкоуровневое:
# low level ecryptfs mount
sudo -i
LOGIN="user"
WRAPPED_PASSPHRASE_FILE="/home/$LOGIN/.ecryptfs/wrapped-passphrase"
ecryptfs-unwrap-passphrase "$WRAPPED_PASSPHRASE_FILE"
PASSPHRASE="password"
printf "%s" "$PASSPHRASE" | ecryptfs-add-passphrase --fnek -
MOUNT_PASSPHRASE_SIG_FILE="/home/.ecryptfs/$LOGIN/.ecryptfs/Private.sig"
ECRYPTFS_SIG="$(sed -n 1p $MOUNT_PASSPHRASE_SIG_FILE)"
ECRYPTFS_FNEK_SIG="$(sed -n 2p $MOUNT_PASSPHRASE_SIG_FILE)"
mount.ecryptfs "/home/.ecryptfs/$LOGIN/.Private" "/mnt" \
    -o ecryptfs_passthrough=n,\
    ecryptfs_cipher=aes,\
    ecryptfs_key_bytes=16,\
    ecryptfs_enable_filename_crypto=y,\
    ecryptfs_sig="$ECRYPTFS_SIG",\
    ecryptfs_fnek_sig="$ECRYPTFS_FNEK_SIG",\
    passphrase_passwd="$PASSPHRASE"

Пример монтирования

# Получаем права суперпользователя
arcfi@arcfi-laptop:~$ sudo -i
[sudo] password for arcfi:
# Запоминаем логин пользователя, домашний каталог которого будем пытаться монтировать
root@arcfi-laptop:~# LOGIN="arcfi"
# Запоминаем путь к файлу с парольной фразой
root@arcfi-laptop:~# WRAPPED_PASSPHRASE_FILE="/home/$LOGIN/.ecryptfs/wrapped-passphrase"
# Расшифровываем фразу, используя пароль пользователя
root@arcfi-laptop:~# ecryptfs-unwrap-passphrase $WRAPPED_PASSPHRASE_FILE
Passphrase:
68b329da9893e34099c7d8ad5cb9c940
# Запоминаем полученную парольную фразу
root@arcfi-laptop:~# PASSPHRASE="68b329da9893e34099c7d8ad5cb9c940"
# Добавляем необходимые ключи на связку ключей
root@arcfi-laptop:~# printf "%s" "$PASSPHRASE" | ecryptfs-add-passphrase --fnek -
Inserted auth tok with sig [8cf8463b34caa8ac] into the user session keyring
Inserted auth tok with sig [871a52d5dd7ad1ef] into the user session keyring
# Запоминаем путь до файла с ключами
root@arcfi-laptop:~# MOUNT_PASSPHRASE_SIG_FILE="/home/.ecryptfs/$LOGIN/.ecryptfs/Private.sig"
# Извлекаем из файла имена ключей
# Следует обратить внимание, что эти имена должны соответствовать
# полученным ранее в результате команды ecryptfs-add-passphrase
# Проверить это можно будет командой "echo $ECRYPTFS_SIG $ECRYPTFS_FNEK_SIG"
root@arcfi-laptop:~# ECRYPTFS_SIG="$(sed -n 1p $MOUNT_PASSPHRASE_SIG_FILE)"
root@arcfi-laptop:~# ECRYPTFS_FNEK_SIG="$(sed -n 2p $MOUNT_PASSPHRASE_SIG_FILE)"
# Убеждаемся, что каталог /mnt доступен
root@arcfi-laptop:~# ls /mnt/
# Монтируем зашифрованный каталог пользователя
root@arcfi-laptop:~# mount.ecryptfs /home/.ecryptfs/$LOGIN/.Private /mnt \
> -o ecryptfs_passthrough=n,\
> ecryptfs_cipher=aes,\
> ecryptfs_key_bytes=16,\
> ecryptfs_enable_filename_crypto=y,\
> ecryptfs_sig=$ECRYPTFS_SIG,\
> ecryptfs_fnek_sig=$ECRYPTFS_FNEK_SIG,\
> passphrase_passwd=$PASSPHRASE
Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=871a52d5dd7ad1ef
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=8cf8463b34caa8ac
Mounted eCryptfs
# Проверяем корректность монтирования
root@arcfi-laptop:~# ls /mnt/
Dropbox  examples.desktop  PDF  Видео  Документы  Загрузки  Картинки  Музыка  Общедоступные  Рабочий стол  Шаблоны
# Демонтируем
root@arcfi-laptop:~# umount /mnt/
# Проверяем корректность демонтирования
root@arcfi-laptop:~# ls /mnt/
# Завершаем сеанс суперпользователя
root@arcfi-laptop:~# logout
arcfi@arcfi-laptop:~$

Удалённое открытие/закрытие

# ecryptfs@ssh open
ecryptfs_open(){
    gvfs-mount "sftp://$SSH_USER@$SSH_HOST:$SSH_PORT"
 
    ssh "$SSH_USER@$SSH_HOST" -p "$SSH_PORT" -i "$SSH_KEY" \
        "echo \"$ECR_PASS\" | ecryptfs-insert-wrapped-passphrase-into-keyring ; mount.ecryptfs_private"
}
 
# ecryptfs@ssh close
ecryptfs_close(){
    ssh "$SSH_USER@$SSH_HOST" -p "$SSH_PORT" -i "$SSH_KEY" \
        "ecryptfs-umount-private"
 
    gvfs-mount -u "sftp://$SSH_USER@$SSH_HOST:$SSH_PORT"
}