Я являюсь суперадмином сервера и хотел бы сменить пароль существующего пользователя. Как я могу это сделать?
Я пытался
usermod -p 'new-password' john
, но это не сработало?
Флаг usermod -p
ожидает, что данные будут паролем уже в зашифрованном формате.
Используйте openssl passwd
для генерации зашифрованных данных или сделайте так:
usermod -p `openssl passwd` (USERNAME)
Причина, по которой это не сработало, заключается в том, что опция -p usermod
предполагает, что пароль уже зашифрован.
Со страницы руководства usermod
:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3).
Установка пароля таким способом не рекомендуется.
Вместо этого следует использовать passwd <username>
. Это должно быть сделано (как usermod
) от имени пользователя root (если вы не меняете пароль пользователя, вошедшего в систему).
Чтобы сменить пароль для пользователя foo.
sudo passwd foo
Это запросит новый пароль.
Просмотрите страницу руководства для passwd
для получения дополнительной информации о настройке, например, времени истечения.
Удачи!
Способ присвоения пароля с помощью usermod (именно этого и требовал OP) - использовать хешированный пароль crypt()
для аргумента -p
.
SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""
Затем используйте это в аргументе командной строки usermod -p
:
usermod -p ${HASH} john
Неинтерактивная однострочная команда для изменения пароля пользователя:
sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john
usermod -p
для работы требуется зашифрованный пароль. Обратите внимание, что new-password
будет отображаться для пользователей, которые могут перечислять процессы.
Вы можете использовать passwd
:
sudo passwd USERNAME
Вам не нужно sudo
, если вы сами являетесь суперпользователем
Что-то, что должно быть добавлено здесь, следующее. Этот метод:
sudo usermod-p perl -e "print crypt("new-password","Q4")"
Джон
средства, что будут ВСЕ работать несколько очень похожих паролей. Например, на сервере Oracle Linux 7.4 и рабочем столе Ubuntu 17.10 рассмотрите:
sudo usermod-p perl -e "print crypt("borkling","Q4")"
orabuntu
Теперь, если Вы делаете:
su - orabuntu
Вы найдете, что ЛЮБОЙ пароль, который запускается с "borkling", будет работать, например.
borkling88 borklingjars
хотя "borkline" не будет работать, который является, потому что столь же установленный ранее любой пароль, который имеет "borkling", как это - префикс, будет также работать, когда пароль будет установлен таким образом.
Путь к к этому, что afaik не имеет этого нежелательного побочного эффекта, следующий:
(кредит на эти движения к "Sandeep" здесь:
https://stackoverflow.com/questions/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script)
На RedHaty Linux: (опустите "-G колесо", если Вы не хотите sudo privs предоставленный),
sudo useradd-m-p $ (openssl passwd-1$ {ПАРОЛЬ})-s/bin/bash-G $ колеса {ИМЯ ПОЛЬЗОВАТЕЛЯ}
На Linux Debiany (опускают-G sudo, если Вы не хотите sudo privs):
sudo useradd-m-p $ (openssl passwd-1$ {ПАРОЛЬ})-s/bin/bash-G sudo $ {ИМЯ ПОЛЬЗОВАТЕЛЯ}
Просто введите
passwd
Таким образом, обычный пользователь может изменить свой пароль без привилегий root, если у вас его нет.
Мы можем использовать команды mkpasswd
и usermod
. Это просто и надежно.
Чтобы иметь команду mkpasswd:
apt install whois
mkpasswd -m sha-512 ваш-секретный-пароль
с результатом mkpasswd
вы можете запустить usermod следующим образом
usermod -p 'the-result-from-mkpasswd' root
Посмотрите скриншот из моего теста Демонстрация смены пароля