У меня нет ответа на ваш основной вопрос, но мне стало интересно узнать о вашем втором вопросе «что я уже пробовал», и на данный момент это лучшее, что я могу сделать, чтобы заставить это работать с помощью одной команды, без подоболочки.:
IFS=: find_path=(${PATH}) && find "${find_path[@]}" <your_find_params>
Это уродливо и доказывает, что одна -команда/без -подоболочки, вероятно, не стоит затраченных усилий. В комментарии Стефана ниже вы можете вместо этого сделать что-то вроде
(IFS=:; set -f; find $PATH <your_find_params>)
Редактировать:Конечно, это не относится к случаю новой строки, встроенной в компонент пути, но кого это волнует... мы живем в реальном мире.:)
Для LUKS1 это 8 фиксированных слотов для клавиш -.
Для LUKS2, в настоящее время не более 32 клавиш -слотов:
#define LUKS2_KEYSLOTS_MAX 32
Попытка добавить больше просто приводит к сообщению об ошибке «Все слоты ключей заполнены».
Однако ответ может оказаться не таким уж простым. Ограничение в 32 существует в коде, но вообще не упоминается в LUKS2 On -Спецификации формата диска .
Заголовок LUKS2 на самом деле способен хранить более 32 слотов ключей -. Или, возможно, он даже не сможет хранить 8 из них. Это зависит от смещения данных, размера области слотов ключей, а также размера, необходимого для каждого отдельного ключа.
Для недавно отформатированного заголовка по умолчанию используется большое смещение данных, поэтому вы можете легко получить 32 ключевых слота -. Если вы конвертировали из LUKS1 (со смещением данных всего в 2 МБ ), он не изменился в 8 слотах ключей -. Если смещение данных меньше, оно может быть меньше, чем 8 ключевых слотов -.
При смещении данных в 1МиБ вы получаете только 3 слота ключей -(cryptsetup
выдает предупреждение об этом):
# truncate -s 100M foobar.img
# cryptsetup luksFormat --offset=2048 foobar.img
WARNING: keyslots area (1015808 bytes) is very small,
available LUKS2 keyslot count is very limited.
# cryptsetup luksAddKey foobar.img
# cryptsetup luksAddKey foobar.img
# cryptsetup luksAddKey foobar.img
No space for new keyslot.
В этом конкретном примере можно было использовать только 3 ключевых слота -, прежде чем в заголовке закончилось место для хранения большего количества:
# cryptsetup luksDump foobar.img
LUKS header information
Version: 2
Epoch: 5
Metadata area: 16384 [bytes]
Keyslots area: 1015808 [bytes]
[...]
Keyslots:
0: luks2
[...]
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
1: luks2
[...]
Area offset:290816 [bytes]
Area length:258048 [bytes]
Digest ID: 0
2: luks2
[...]
Area offset:548864 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Здесь общая доступная площадь слотов ключей составляет всего 1015808 байт. Каждый ключ имеет размер 257048 байт. Для хранения дополнительного ключа потребуется как минимум 1032192 байта, поэтому в данном конкретном случае больше ключей просто не помещается.
Если вас не волнует выравнивание MiB, можно сделать смещение еще меньше,оставив вам только один слот для ключа -.
Luks2 не имеет фиксированных слотов для ключей, как Luks1. Сколько Вы можете хранить, зависит от:
*luks2 -метаданные -размер (макс. 4 МБ можно зарезервировать в соответствии со спецификацией ), где определения слотов ключей хранятся вместе со всеми другими метаданными (в формате JSON, поэтому нет определенного резервирования области для ключей, а также нет требований к абсолютному размеру каждого ключа ).
*luks2 -слоты для ключей -размер (макс.128 МБ могут быть зарезервированы в соответствии со спецификацией ), где сохраняется фактическое криптографическое содержимое слотов ключей. Здесь это также свободная структура, поэтому от реальных данных слотов зависит, сколько ключей вы можете получить с определенным размером.
Я не считал, но думаю, что слотов в большинстве случаев может быть много.