У меня есть четыре зашифрованных набора данных zfs, которые мне нужно смонтировать вручную при загрузке моей машины разработки с помощью команды zfs mount -l - a
. У всех этих наборов данных один и тот же пароль, и мне нужно ввести его четыре раза.
Есть ли способ упростить это безопасным способом, чтобы мне нужно было ввести пароль только один раз? Может быть, есть безопасный способ автоматического ввода пароля?
Для автоматического ввода наборов данных, зашифрованных паролем, это можно автоматизировать с помощью /etc/rc.local
, добавив следующий шаблонный сценарий:
_ZKY_=$(echo <base64_enc_pass> | base64 --decode)
echo $_ZKY_ | zfs mount -l <ds_1>
echo $_ZKY_ | zfs mount -l <ds_2>
...
Где:
Примечание: чтобы включить 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>[ ...]
Если наборы данных имеют один и тот же пароль, но вам нужно ввести его несколько раз, это должно означать, что указанные наборы данных используют разные корни/расположение ключей шифрования; вывод 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)