web-dev-qa-db-ja.com

Linuxのuseraddとコマンドラインからのパスワード?

ここのドキュメントに基づく:

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

Ubuntu 17.10でデフォルトのホームディレクトリを使用して新しいユーザーを作成し、パスワードを指定しようとしています。

useradd john -m -p mypassword

ユーザーは問題なく作成されますが、指定されたパスワード(mypassword)で新しいユーザーを使用してマシンにSSHで接続しようとすると、次のようになります。

$ 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行で実行できるようにするにはどうすればよいでしょうか。

1
u123

adduser(8)のマニュアルページから:

-p、-passwordパスワード

Crypt(3)によって返される暗号化されたパスワード。

パスワードをプレーンテキストとして指定しても機能しません。

$(some-cm)構文を使用して、複数のコマンドを組み合わせることができます。これにより、bashは最初に括弧を評価し、代わりに戻り値を使用します。

echo foo $(echo bar)

最初に2番目のコマンドを評価し、次に最初のコマンドを評価します。これを使用して、最初にパスワードを生成し、次にそれをadduserコマンドに入れることができます。

または、コマンドチェーンを使用します:user=john; useradd -m $user && passwd $user。ただし、これでもパスワードの入力を求められます。

0
paradoxon