1

Информация о версии для этого вопроса выглядит следующим образом:

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?

1 ответ1

0

Следующие символы используются для кодирования хэшей паролей в Debian 8 (мой вариант использования; очень вероятно, что он довольно широко применяется в современных реализациях Linux):

,/0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Любой символ, который не входит в этот набор и не является восклицательным знаком (используется для представления отключенных паролей), может использоваться в качестве разделителя sed.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .