Меняем пароль пользователю из bash скрипта (или просто командой из шелла).: различия между версиями

Материал из support.qbpro.ru
imported>Vix
Нет описания правки
imported>Vix
Нет описания правки
 
Строка 11: Строка 11:
  #!/bin/bash
  #!/bin/bash
  newpass="newpassword\n"
  newpass="newpassword\n"
  echo -e $newpass$newpass| passwd username;
  echo -e $newpass$newpass| passwd -q username 2>/dev/null;


Сменим пароль пользователю username (запуск от рута)
Сменим пароль пользователю username (запуск от рута)

Текущая версия от 18:14, 12 июля 2016

Сейчас на КИТе нашли отличный способ сменить пароль пользователю из шелла (а значит и из скрипта). В общем, кто сталкивался с этой проблемой — поймут меня. UPD: в комментариях указали другой способ смены пароля от рута:

root@host:~# echo "username:password" | chpasswd

Такой способ тоже подходит, но не является универсальным. Например, во FreeBSD утилиты chpasswd нет.

EOUPD

Суть такая: Сменим пароль руту на megapassword (запуск от рута):

root@host:~# echo -e "megapassword\nmegapassword\n" | passwd

Рабочий пример:

#!/bin/bash
newpass="newpassword\n"
echo -e $newpass$newpass| passwd -q username 2>/dev/null;

Сменим пароль пользователю username (запуск от рута)

root@host:~# echo -e "megapassword\nmegapassword\n" | passwd username

Для того, что бы было понятнее, покажу что в кавычках с пробелами: «megassword \n megapassword \n», где megapassword — новый пароль, а \n — «нажатие» клавиши enter (а точнее — перенос строки) Сменим пароль пользователю username при запуске от username:

username:~$ echo -e "oldpassword\nmegapassword\nmegapassword\n" | passwd

Здесь добавляется третья строка в выводе echo, в которой нужно указать старый пароль. Чего я в общем-то вам не советую. Ну и чтобы не было вопросов о том, что происходит:

inky@laptop1:~$ echo -e "oldpassword\nmegapassword\nmegapassword\n"
oldpassword
megapassword
megapassword

То есть мы на STDIN passwd скармливаем STDOUT echo. А echo и «жмет enter»

взято тут