Создание и использование в "облаке" криптоконтейнера LUKS (dm-crypt) Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:luks_cloud [2013/11/17 02:08]
[Использование контейнера]
wiki:luks_cloud [2020/05/07 19:26] (текущий)
[Ссылки]
Строка 4: Строка 4:
  
 ======Особенности ====== ======Особенности ======
-  * В качестве "​контейнера"​ используется файл. Его размер ​"фиксирован".+  * В качестве "​контейнера"​ используется файл. Его размер фиксирован. Возможно изменение размера.
   * "​Внутри"​ контейнера создается файловая система,​ любого удобного вам формата.   * "​Внутри"​ контейнера создается файловая система,​ любого удобного вам формата.
-  * При использовании - монтируется ​"как обычный раздел".+  * При использовании - монтируетсякак обычный раздел.
 ---- ----
 Данные сохраняются по блокам,​ как в обычном файле/​файловой системе. То есть : Данные сохраняются по блокам,​ как в обычном файле/​файловой системе. То есть :
   * модификация файла внутри контейнера приводит к перезаписи блоков,​ занимаемых этим файлом,​ но не всего контейнера;​   * модификация файла внутри контейнера приводит к перезаписи блоков,​ занимаемых этим файлом,​ но не всего контейнера;​
   * "​потеря/​порча"​ одного блока приводит к потере информации "​того-что-было-в-этом-блоке",​ и не более того.   * "​потеря/​порча"​ одного блока приводит к потере информации "​того-что-было-в-этом-блоке",​ и не более того.
-  * при синхронизации контейнера "в облако"​ - как правило,​ перезаписывается не весь файл, а "​модифицировання часть",​ что требует малого объема трафика.+  * при синхронизации контейнера "в облако"​ - как правило,​ перезаписывается не весь файл, а "​модифицированная часть",​ что требует малого объема трафика.
 ---- ----
 В отличие от EncFS  В отличие от EncFS 
   * "​снаружи"​ не видны общее количество файлов,​ их размеры и время модификации;​   * "​снаружи"​ не видны общее количество файлов,​ их размеры и время модификации;​
-  * проблематично ​изменить "размер контейнера", ​если весь контейнер "​занят".+  * изменение размера контейнера ​требует отдельных действий.
 ---- ----
 В отличие от Truecript ​ В отличие от Truecript ​
Строка 39: Строка 39:
 или - без ключа, с набором пароля при каждом открытии контейнера или - без ключа, с набором пароля при каждом открытии контейнера
 <code bash>​sudo cryptsetup luksFormat /​home/​user/​.private/​container.crt -c aes-xts-plain64 -s 512</​code>​ <code bash>​sudo cryptsetup luksFormat /​home/​user/​.private/​container.crt -c aes-xts-plain64 -s 512</​code>​
-Параметры контейнера,​ смотрим+Будет предупреждение __WARNING! Данные на /​home/​user/​.private/​container.crt будут перезаписаны без возможности восстановления. Are you sure? (Type uppercase yes)__, надо набрать YES. 
 +  * Параметры ​полученного ​контейнера,​ смотрим
 <code bash>​sudo cryptsetup luksDump /​home/​user/​.private/​container.crt</​code>​ <code bash>​sudo cryptsetup luksDump /​home/​user/​.private/​container.crt</​code>​
   * "​Открываем"​ контейнер   * "​Открываем"​ контейнер
Строка 46: Строка 47:
 <code bash>ls /​dev/​mapper/​ <code bash>ls /​dev/​mapper/​
 sudo dmsetup info container</​code>​ sudo dmsetup info container</​code>​
-Форматируем содержимое контейнера,​ с установкой метки и отключением "​резерва рута"​+Форматируем содержимое контейнера, в данном примере в ext4, с установкой метки и отключением "​резерва рута"​
 <code bash>​sudo mke2fs -t ext4 -O has_journal -L container -m 0 /​dev/​mapper/​container</​code>​ <code bash>​sudo mke2fs -t ext4 -O has_journal -L container -m 0 /​dev/​mapper/​container</​code>​
 монтируем и выдаем права пользователю (себе) монтируем и выдаем права пользователю (себе)
 <code bash>​sudo mount /​dev/​mapper/​container /​home/​user/​private <code bash>​sudo mount /​dev/​mapper/​container /​home/​user/​private
 sudo chown -hR user:user /​home/​user/​private</​code>​ sudo chown -hR user:user /​home/​user/​private</​code>​
-  * Напомним - если мы потеряли файл ключа, надо иметь пароль. Задаем пароль:+  * Напомним - если мы потеряли файл ключа, надо иметь пароль. Задаем пароль, при этом будут два запроса на его ввод - __Введите новый пароль для ключевого слота__ и __Verify passphrase__
 <code bash>​sudo cryptsetup luksAddKey /​home/​user/​.private/​container.crt -d /​home/​user/​keys/​container.key</​code>​ <code bash>​sudo cryptsetup luksAddKey /​home/​user/​.private/​container.crt -d /​home/​user/​keys/​container.key</​code>​
-и проверяем "​занятые"​ ключами слоты (их должно быть два, если мы задали ключ и пароль)+и проверяем "​занятые"​ ключами слоты (их должно быть два, если мы задали ключ и пароль, __Key Slot 0: ENABLED__ и __Key Slot 1: ENABLED__)
 <code bash>​sudo cryptsetup luksDump /​home/​user/​.private/​container.crt</​code>​ <code bash>​sudo cryptsetup luksDump /​home/​user/​.private/​container.crt</​code>​
   * Контейнер к работе готов. Отмонтируем и отключаем.   * Контейнер к работе готов. Отмонтируем и отключаем.
Строка 73: Строка 74:
 Exec=/​home/​user/​keys/​privatestatus.sh Exec=/​home/​user/​keys/​privatestatus.sh
 StartupNotify=true StartupNotify=true
-X-Ayatana-Desktop-Shortcuts=GoGo;​Off;​Starts +X-Ayatana-Desktop-Shortcuts=GoGo;GoPass;​Off;​Starts 
-Terminal=yes+Terminal=false
 Type=Application Type=Application
 Categories=GNOME;​GTK Categories=GNOME;​GTK
 Icon=/​home/​user/​.icons/​private.png Icon=/​home/​user/​.icons/​private.png
 + 
 [GoGo Shortcut Group] [GoGo Shortcut Group]
 TargetEnvironment=Unity TargetEnvironment=Unity
Строка 84: Строка 85:
 Exec=/​home/​user/​keys/​privateopen.sh Exec=/​home/​user/​keys/​privateopen.sh
  
 +[GoPass Shortcut Group]
 +TargetEnvironment=Unity
 +Name=Открываем с паролем
 +Exec=/​home/​user/​keys/​privateopen2.sh
 + 
 [Off Shortcut Group] [Off Shortcut Group]
 TargetEnvironment=Unity TargetEnvironment=Unity
 Name=Закрываем контейнер Name=Закрываем контейнер
 Exec=/​home/​user/​keys/​privateclose.sh Exec=/​home/​user/​keys/​privateclose.sh
 + 
 [Starts Shortcut Group] [Starts Shortcut Group]
 TargetEnvironment=Unity TargetEnvironment=Unity
 Name=Старт Dropbox Name=Старт Dropbox
 Exec=dropbox start</​code>​ Exec=dropbox start</​code>​
-В даше появляется кнопка по имени "​Контейнер",​ выносим ее на панель ланчера. ​ +В даше появляется кнопка по имени "​Контейнер",​ выносим ее на панель ланчера. По нажатию на нее -выводится сообщение о статусе (состоянии) контейнераПо ПКМ - выбираем пункт меню 
-  * По нажатию на нее -выводится сообщение о статусе (состоянии) контейнера +  ​1. Открываем контейнер ​ 
-  * По ПКМ - описаны 3 действия-1. Открываем контейнер ​-2. Закрываем контейнер ​-3. Старт Dropbox+  ​2. Открываем с паролем 
 +  3. Закрываем контейнер ​ 
 +  4. Старт Dropbox 
 +По вызову "​Открываем с паролем"​ - не используется файл-ключ,​ в окне терминала будет выдан запрос на ввод пароля.
  
 ----Создадим скрипты для выполнения действий с контейнером. ----Создадим скрипты для выполнения действий с контейнером.
Строка 103: Строка 112:
 <code bash>#​!/​bin/​sh <code bash>#​!/​bin/​sh
 if  grep -q "​private"​ /​proc/​mounts;​ then if  grep -q "​private"​ /​proc/​mounts;​ then
-  notify-send -u normal "​Контейнер открыт!"​+  notify-send -u normal "​Контейнер открыт! ​Занято: ​"`df -h | grep private | awk '​{print $5}'`
 else else
   notify-send -u normal "​Контейнер закрыт"​   notify-send -u normal "​Контейнер закрыт"​
 fi</​code>​ fi</​code>​
 Для открытия - останавливаем службу dropbox и проверяем,​ не был ли уже открыт контейнер,​ и открываем. Для открытия - останавливаем службу dropbox и проверяем,​ не был ли уже открыт контейнер,​ и открываем.
 +//При открытии или проверке статуса,​ если контейнер открыт,​ сообщение дополняется информацией о размере (в процентах) использованного места, например:​ "​Занято:​ 64%"//
 <code bash>​gedit /​home/​user/​keys/​privateopen.sh</​code>​ <code bash>​gedit /​home/​user/​keys/​privateopen.sh</​code>​
 Его содержание:​ Его содержание:​
Строка 117: Строка 127:
   sudo cryptsetup luksOpen /​home/​user/​.private/​container.crt -d /​home/​user/​keys/​container.key container   sudo cryptsetup luksOpen /​home/​user/​.private/​container.crt -d /​home/​user/​keys/​container.key container
   sudo mount /​dev/​mapper/​container /​home/​user/​private   sudo mount /​dev/​mapper/​container /​home/​user/​private
-  notify-send -u normal "​Открытие контейнера выполнено"​+  notify-send -u normal "​Открытие контейнера выполнено. Занято: ​"`df -h | grep private | awk '​{print $5}'`
 fi</​code>​ fi</​code>​
 +Для открытия с запросом ввода пароля потребуется вызов окна терминала.
 +<code bash>​gedit /​home/​user/​keys/​privateopen2.sh</​code>​
 +Содержание:​
 +<code bash>#​!/​bin/​sh
 +dropbox stop
 +if  grep -q "​private"​ /​proc/​mounts;​ then
 +  notify-send -u normal "​Контейнер уже был открыт!"​
 +else
 +  gnome-terminal --command="/​home/​user/​keys/​privatepass.sh"​
 +fi</​code>​
 +И файл
 +<code bash>​gedit /​home/​user/​keys/​privatepass.sh</​code>​
 +Содержание:​
 +<code bash>#​!/​bin/​sh
 +sudo cryptsetup luksOpen /​home/​user/​.private/​container.crt container
 +sudo mount /​dev/​mapper/​container /​home/​user/​private
 +notify-send -u normal "​Открытие контейнера выполнено. Занято:​ "`df -h | grep private | awk '​{print $5}'​`</​code>​
 +
 Для закрытия - проверяем,​ не был ли уже закрыт контейнер,​ закрываем и стартуем службу dropbox. Для закрытия - проверяем,​ не был ли уже закрыт контейнер,​ закрываем и стартуем службу dropbox.
 <code bash>​gedit /​home/​user/​keys/​privateclose.sh</​code>​ <code bash>​gedit /​home/​user/​keys/​privateclose.sh</​code>​
Строка 132: Строка 160:
 fi</​code>​ fi</​code>​
 Даем права на выполнение Даем права на выполнение
-<code bash>​sudo chmod +x /​home/​user/​keys/​privatestatus.sh +<code bash>​sudo chmod +x /​home/​user/​keys/​*.sh</​code>​
-sudo chmod +x /​home/​user/​keys/​privateopen.sh +
-sudo chmod +x /​home/​user/​keys/​privateclose.sh</​code>​+
 <​note>​Не обязательно именно так располагать каталоги и давать имена. Никто не мешает дать файлу ключа имя /​home/​user/​.icons/​warum.png,​ а контейнеру имя debian_install_QIP.tar.gz,​ и поместить среди иных пакетов.</​note>​ <​note>​Не обязательно именно так располагать каталоги и давать имена. Никто не мешает дать файлу ключа имя /​home/​user/​.icons/​warum.png,​ а контейнеру имя debian_install_QIP.tar.gz,​ и поместить среди иных пакетов.</​note>​
 В завершение,​ создадим ссылку для помещения в dropbox каталога **.private** под именем **dropboxcript** В завершение,​ создадим ссылку для помещения в dropbox каталога **.private** под именем **dropboxcript**
 <code bash>​sudo ln -ds /​home/​user/​.private /​home/​user/​Dropbox/​dropboxcript</​code>​ <code bash>​sudo ln -ds /​home/​user/​.private /​home/​user/​Dropbox/​dropboxcript</​code>​
 Все. Все.
 +====== Увеличение размера (контейнера) ======
 +Посмотреть,​ сколько места использовано (занято файлами) в нашем контейнере,​ можно так:
 +<code bash>df -h | grep container ​
 +Файл.система ​          ​Размер Использовано ​ Дост Использовано% Cмонтировано в
 +/​dev/​mapper/​container ​    ​43M ​         32M   ​10M ​          75% /​home/​user/​private</​code>​
 +Если заканчивается свободное место, увеличим размер контейнера. Например,​ на 50M.
 +Перед этим - убедимся,​ что "​контейнер закрыт"​.
 +  * Увеличим размер файла-контейнера (на 50M)
 +<code bash>dd if=/​dev/​urandom bs=1M count=50 >> /​home/​user/​.private/​container.crt</​code>​
 +  * Открываем ​
 +<code bash>​sudo cryptsetup luksOpen /​home/​user/​.private/​container.crt -d /​home/​user/​keys/​container.key container</​code>​
 +  * Увеличим размер контейнера (на все добавленное к файлу место)
 +<code bash>​sudo cryptsetup resize container</​code>​
 +  * Проверка файловой системы
 +<code bash>​sudo e2fsck -f /​dev/​mapper/​container</​code>​
 +  * Увеличение размера файловой системы (на все добавленное к контейнеру место)
 +<code bash>​sudo resize2fs -p /​dev/​mapper/​container</​code>​
 +
 +Вывод выглядит так:
 +<code bash>~$ sudo e2fsck -f /​dev/​mapper/​container
 +e2fsck 1.42 (29-Nov-2011)
 +Проход 1: Проверка inodes, блокs, а также размеров
 +Pass 2: Checking каталог structure
 +Pass 3: Checking каталог connectivity
 +Pass 4: Checking reference counts
 +Pass 5: Checking группа summary information
 +container: 14/12288 files (7.1% non-contiguous),​ 6455/49152 blocks
 +
 +~$ sudo resize2fs -p /​dev/​mapper/​container
 +resize2fs 1.42 (29-Nov-2011)
 +Resizing the filesystem on /​dev/​mapper/​container to 100352 (1k) blocks.
 +Begin pass 1 (max = 7)
 +Увеличение таблицы inod'​овXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 +The filesystem on /​dev/​mapper/​container is now 100352 blocks long.</​code>​
 +
 +Монтируем и смотрим.
 +<code bash>​sudo mount /​dev/​mapper/​container /​home/​user/​private
 +df -h | grep container ​
 +Файл.система ​          ​Размер Использовано ​ Дост Использовано% Cмонтировано в
 +/​dev/​mapper/​container ​    ​91M ​         32M   ​58M ​          36% /​home/​user/​private
 +</​code>​
 +
 +
 ===== Ссылки ===== ===== Ссылки =====
  
Строка 145: Строка 214:
   * [[http://​dve.jimdo.com/​2010/​10/​27/​%D0%BE-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BE%D0%B2/​|О правильном использовании криптоконтейнеров]]   * [[http://​dve.jimdo.com/​2010/​10/​27/​%D0%BE-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BE%D0%B2/​|О правильном использовании криптоконтейнеров]]
   * [[http://​forum.ubuntu.ru/​index.php?​topic=233759.0|Обсуждение темы на форуме]]   * [[http://​forum.ubuntu.ru/​index.php?​topic=233759.0|Обсуждение темы на форуме]]
-{{tag>​LUKS cloud безопасность шифрование облако}}+  * [[https://​help.ubuntu.com/​community/​ResizeEncryptedPartitions|ResizeEncryptedPartitions]] 
 +{{tag>​LUKS cloud безопасность шифрование облако ​Подсказки_и_советы HOWTO}}