Передача пароля команде zfs mount

У меня есть четыре зашифрованных набора данных zfs, которые мне нужно смонтировать вручную при загрузке моей машины разработки с помощью команды zfs mount -l - a . У всех этих наборов данных один и тот же пароль, и мне нужно ввести его четыре раза.

Есть ли способ упростить это безопасным способом, чтобы мне нужно было ввести пароль только один раз? Может быть, есть безопасный способ автоматического ввода пароля?

0
задан 30 March 2021 в 03:41

2 ответа

Для автоматического ввода наборов данных, зашифрованных паролем, это можно автоматизировать с помощью /etc/rc.local , добавив следующий шаблонный сценарий:

_ZKY_=$(echo <base64_enc_pass> | base64 --decode)
echo $_ZKY_ | zfs mount -l <ds_1>
echo $_ZKY_ | zfs mount -l <ds_2>
...

Где:

  • base64_enc_pass: Ваш пароль, зашифрованный base64. Вы можете ввести пароль в виде открытого текста, если это ваша отрава.
  • ds_n: имена наборов данных для дешифрования и монтирования

Примечание: чтобы включить rc.local в системах с systemd , вот некоторые инструкции ].

В качестве альтернативы, если вы хотите сделать это по запросу, используйте этот скрипт python, чтобы упростить ввод пароля только один раз:

Источник для zmount.py:

import getpass
import sys
from subprocess import Popen, PIPE, STDOUT
_p=getpass.getpass('ZFS Dataset Password:')
for _ds in sys.argv[1:]:
    p = Popen(['zfs', 'mount', '-l', _ds], stdout=PIPE, stdin=PIPE, stderr=PIPE)
    _ = p.communicate(input=_p.encode())[0]

Чтобы использовать zmount.py:

% python3 zmount.py <ds_1> <ds_2>[ ...]
0
ответ дан 23 April 2021 в 23:29

Если наборы данных имеют один и тот же пароль, но вам нужно ввести его несколько раз, это должно означать, что указанные наборы данных используют разные корни/расположение ключей шифрования; вывод zfs получает encryptionroot,keylocation <пул>/ <пул>/ [...] [...] [...]. ...] должен подтвердить это. Вы можете использовать zfs change-key (см. man zfs change-key) для унификации.

Для автоматического ввода пароля во время загрузки можно использовать Network-Bound Disk Encryption (NBDE). Ubuntu предоставляет пакеты как для Clevis, так и для Tang, но вам необходимо предоставить свой собственный вспомогательный сценарий (например, в /usr/share/initramfs-tools/scripts/local-premount/), чтобы убедиться, что необходимые ключи загружены. (Конечно, Clevis - подключаемый фреймворк для автоматической расшифровки - может работать и без Tang)

1
ответ дан 23 April 2021 в 23:29

Другие вопросы по тегам:

Похожие вопросы: