Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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}} | ||