На днях понадобилось зашифровать каталог пользователя. Да так чтобы он сам мог подключать и отключать его. Вот решил написать заметку на память.
Практически все программы которые шифруют каталоги, используют файловую систему Fuse. Можно воспользоваться на выбор Encfs, Ecryptfs и даже банальным TrueCrypt. Мне понравилась Ecryptfs.
Установим необходимые пакеты:
[root@test]# yum install fuse ecryptfs-utils
Все дополнительные пакеты подтянутся сами. Дальше надо загрузить модули в ядро.
[root@test]# modprobe fuse
[root@test]# modprobe ecryptfs
Проверим:
[root@test]# lsmod | grep fuse
fuse 73115 0
[root@test]# lsmod | grep ecryptfs
ecryptfs 99791 2
Все, теперь можно приступать к шифрованию. Для начала определитесь, какой каталог вы хотите шифровать. Можно зашифровать один и монтировать его в другой.
Я предпочитаю не плодить каталоги. Шифруется так:
[root@test]# mount -t ecryptfs /home/user/input /home/user/input
То есть я монтирую каталог в себя и шифрую. Будет задано несколько простых вопросов, включая парольную фразу. В результате в домашнем каталоге пользователя root создастся скрытый каталог .ecryptfs, и в нем текстовой файл sig-cache.txt в котором содержится кэшик зашифрованного каталога. Проверить можно командой mount
[root@test]# mount
/home/user/input on /home/user/input type ecryptfs (rw,noexec,nosuid,nodev,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_ cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs,user=root)
Повторить проделанное просто так, обычный пользователь не сможет, так как не будет прав на утилиту mount. Можно обойти права и дать возможность монтировать пользователю. Для начала надо выдрать информацию о смонтированном каталоге из mtab.
grep '/home/user/input' /etc/mtab
/home/user/input /home/user/input ecryptfs rw,noexec,nosuid,nodev,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_cipher=aes, ecryptfs_key_bytes=32,ecryptfs_unlink_sigs,user=root 0 0
Скопировать это в /etc/fstab но при этом добавить два параметра - user и noauto. В итоге получим запись:
/home/user/input /home/user/input ecryptfs rw,user,noauto,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_cipher=aes, ecryptfs_key_bytes=32,ecryptfs_unlink_sigs 0 0
Теперь подробнее:
/home/user/input /home/user/input - что и куда
ecryptfs - тип файловой системы
rw - разрешаем чтение/запись
user - разрешаем обычным пользователям использовать это правило
noauto - эта файловая система может быть смонтирована только вручную
ecryptfs_sig - кэшик нашего шифрования
ecryptfs_cipher - тип шифрования который выбирали
ecryptfs_key_bytes - размер ключа
ecryptfs_unlink_sigs - заставляет удалять ключ из кольца после размонтирования
Все ключи хранятся в keyring - кольце. Перед использованием зашифрованного каталога, необходимо сначала добавить ключ в кольцо. Делается это с помощью ecryptfs-manager. Пробуем:
[root@test]# su - user
[user@test]# ecryptfs-manager
eCryptfs key management menu
-------------------------------
1. Add passphrase key to keyring
2. Add public key to keyring
3. Generate new public/private keypair
4. Exit
Make selection:
Выбираем первый пункт, вводим ключ. Менеджер сообщает нам что все прошло успешно. Дальше user может попробовать смонтировать каталог:
mount -l /home/user/input /home/user/input
Комментариев нет:
Отправить комментарий