Как сменить пароль с помощью usermod?


10

Я superadmin сервера и хотел бы изменить пароль существующего пользователя. Как я могу это сделать ?

Я старался

usermod -p 'new-password' john

но это не сработало?


лучший ответ здесь: askubuntu.com/a/80447/55435 , обратите внимание также на комментарии к комментариям
ryenus

Ответы:


17

usermod -pФлаг ожидает данные на пароль уже в зашифрованном виде.

Используйте openssl passwdдля генерации зашифрованных данных или сделайте так:

usermod -p `openssl passwd` (USERNAME)

openssl passwdожидает пароль от 0 до 10 символов.
Аноним

6

Причина, по которой это не сработало, заключается в том, что usermodпараметр -p предполагает, что пароль уже зашифрован.

Из usermodсправочной страницы:

 -p, --password PASSWORD
       The encrypted password, as returned by crypt(3).

Устанавливать пароль таким способом не рекомендуется.

Вместо этого вы должны использовать passwd <username>. Это должно (как usermod) быть выполнено от имени пользователя root (если вы не меняете пароль пользователя, вошедшего в систему).

Чтобы сменить пароль для пользователя foo.

sudo passwd foo

Это запросит новый пароль.

Загляните на справочную страницу для passwdполучения дополнительной информации о настройке, например, времени истечения.

Удачи!


6

Вы можете использовать passwd:

sudo passwd USERNAME 

Вам не нужно, sudoесли вы сами являетесь суперпользователем


sudoтребуется пароль root :)
Achu

@Achu: требуется текущий пароль пользователя. Но он суперпользователь.
RiaD

Что superuserпредставляет?
Ачу

3

Способ присвоения пароля с помощью 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

2

Неинтерактивная однострочная команда для изменения пароля пользователя:

sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john

usermod -pтребует зашифрованный пароль для работы. Обратите внимание, что new-passwordэто будет видно для пользователей, которые могут перечислить процессы.


2

Здесь следует добавить следующее. Этот метод:

sudo usermod -p perl -e "print crypt("new-password","Q4")"john

означает, что несколько очень похожих паролей будут работать ВСЕ. Например, на сервере Oracle Linux 7.4 и рабочем столе Ubuntu 17.10 рассмотрим:

sudo usermod -p perl -e "print crypt("borkling","Q4")"orabuntu

Теперь, если кто-то делает:

су - орабунту

вы обнаружите, что ЛЮБОЙ пароль, начинающийся с "borkling", будет работать, например,

borkling88 borklingjars

хотя «borkline» не будет работать, потому что, как указывалось ранее, любой пароль, который имеет «borkling» в качестве префикса, также будет работать, когда пароль установлен таким образом.

Способ, которым afaik не имеет этого нежелательного побочного эффекта, является следующим:

(кредит за это идет в "Sandeep" здесь:
/programming/2150882/how-to-automatics-add-user-account-and-password-with-a-bash-script )

В RedHaty Linux: (опустите колесо -G, если вы не хотите предоставлять привилегии sudo)

sudo useradd -m -p $ (openssl passwd -1 $ {ПАРОЛЬ}) -s / bin / bash -G wheel $ {USERNAME}

В Debiany Linux (опустите -G sudo, если вы не хотите использовать sudo privs):

sudo useradd -m -p $ (openssl passwd -1 $ {ПАРОЛЬ}) -s / bin / bash -G sudo $ {USERNAME}


1

Просто введите

passwd

Таким образом, обычный пользователь может изменить свой пароль без привилегий root, если у вас его нет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.