У меня есть две машины, каждая из которых имеет одинаковый набор пользователей. У меня есть сценарий на одной машине, на котором я хочу изменить пароль на обеих машинах.
Итак, я генерирую случайный пароль, затем хеш-файл и передаю его команде usermod, например:
usermod -p PASSWORD_HASH USER
ssh REMOTE_USER@REMOTE_HOST sudo usermod -p PASSWORD_HASH USER
У REMOTE_USER есть привилегии для выполнения этой команды с использованием sudo, не требуя пароля.
Исход этого заключается в том, что пароль успешно изменен на локальном компьютере, что я могу проверить сразу же, пытаясь:
su USER
Я также проверил файл / etc / shadow, и кажется, что хэш действительно сохранен правильно.
Однако, если я перехожу к другой машине и попытаться войти в систему как USER, я не могу войти. Я получаю ошибку проверки подлинности. Если я вхожу на удаленную машину с привилегиями суперпользователя и проверяю файл / etc / shadow, хеш пароля полностью искажен и не имеет никакого смысла.
Однако, если на удаленной машине , Я выполняю ту же самую команду, не переходя через ssh, используя
sudo usermod -p PASSWORD_HASH USER
Тогда все работает отлично.
Мой вопрос:
Есть ли какие-то детали здесь я пропускаю, что заставляет команду usermod НЕ работать над ssh по какой-то причине?