ここのドキュメントに基づく:
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行で実行できるようにするにはどうすればよいでしょうか。
adduser(8)
のマニュアルページから:
-p、-passwordパスワード
Crypt(3)によって返される暗号化されたパスワード。
パスワードをプレーンテキストとして指定しても機能しません。
$(some-cm)構文を使用して、複数のコマンドを組み合わせることができます。これにより、bashは最初に括弧を評価し、代わりに戻り値を使用します。
echo foo $(echo bar)
最初に2番目のコマンドを評価し、次に最初のコマンドを評価します。これを使用して、最初にパスワードを生成し、次にそれをadduserコマンドに入れることができます。
または、コマンドチェーンを使用します:user=john; useradd -m $user && passwd $user
。ただし、これでもパスワードの入力を求められます。