Linux использоватьрад и пароль из командной строки?

585
u123

На основании документации здесь:

https://linux.die.net/man/8/adduser

Я пытаюсь создать нового пользователя с домашним каталогом по умолчанию в Ubuntu 17.10 и указать пароль:

useradd john -m -p mypassword 

Пользователь создан просто отлично, но если я попытаюсь рядом с SSH к машине, используя нового пользователя с указанным паролем (mypassword), я получу:

$ ssh john@my-host john@my-host's password:  Permission denied, please try again. john@my-host's password:  

Так почему же он не работает с паролем, который я использовал при создании пользователя?

На основании приведенного ниже ответа useraddтребуется зашифрованный пароль. Из командной строки я могу сделать:

$ echo -n testpass | makepasswd --crypt-md5 --clearfrom - testpass $1$eaXbTWAK$8flrqGzhmtWPjzRcrxWBf/ 

Но как мне передать это useradd, чтобы сделать все это в одной строке?

1

2 ответа на вопрос

3
Ignacio Vazquez-Abrams

Со adduser(8)страницы руководства :

-p, --password ПАРОЛЬ

Зашифрованный пароль, возвращаемый crypt (3).

Задание пароля в виде открытого текста не будет работать.

0
paradoxon

Вы можете объединить несколько команд, используя конструкцию $ (some-cm). Это заставит bash сначала вычислить скобки и использовать вместо них возвращаемое значение:

echo foo $(echo bar) 

сначала будет оцениваться вторая команда, а затем будет оцениваться первая команда. Вы можете использовать это, чтобы сначала сгенерировать свой пароль, а затем ввести его в команду adduser.

Или вы используете команду цепочки: user=john; useradd -m $user && passwd $user. Это все равно будет запрашивать у вас пароль.