Информация о версии для этого вопроса выглядит следующим образом:
root@hypervisor:~# uname -a
Linux hypervisor 4.4.35-1-pve #1 SMP Fri Dec 9 11:09:55 CET 2016 x86_64 GNU/Linux
root@hypervisor:~# cat /etc/debian_version
8.9
root@hypervisor:~#
Поскольку контейнеры Linux часто создаются / уничтожаются, мне нужно найти способ сохранить пароли пользователей для их учетных записей в этих контейнерах.
Для этого я сохраняю /etc/shadow
перед уничтожением контейнера. Когда контейнер повторно развернут, я делаю следующее для заново созданных контейнеров Linux:
#!/bin/bash
HASH_TO_REPLACE=$(grep testuser /etc/shadow)
HASH_TO_RESTORE=$(grep testuser /root/shadow_SAVE)
echo "HASH_TO_REPLACE: $HASH_TO_REPLACE"
echo "HASH_TO_RESTORE: $HASH_TO_RESTORE"
sed -i "s!$HASH_TO_REPLACE!$HASH_TO_RESTORE!" /etc/shadow
Кажется, это работает нормально. Но есть одна вещь, которая касается меня:
Это мое понимание этого !
никогда не может появляться в (не отключенном) хэше пароля. Итак, я использовал его в качестве разделителя sed
на данный момент. Но вероятность того, что пароль может быть отключен (в этом случае !
появится в теневом файле) значит !
не должен использоваться в качестве разделителя sed
. Какие другие символы гарантированно никогда не появятся в хэше пароля и поэтому безопасны для использования в качестве разделителя sed?