web-dev-qa-db-ja.com

暗号化された形式のパスワードを知らずにユーザーを追加する方法は?

次のコマンドを使用して、Linuxマシンでユーザーを作成します。

useradd -d /home/dummy -g idiots -m -p 12345689 dummy

ユーザーが作成され、ホームディレクトリも作成されます。
問題は、-pcryptoから返される暗号化されたパスワードを予期しているため、このアカウントを使用してシステムにログインできないことです。

質問:bashスクリプトを使用してユーザーを作成したいのですが、cryptoによる暗号化されたパスワードがわかりません。スクリプトを使用してこのユーザーを自動的に作成し、パスワードの問題を回避できるようにするにはどうすればよいですか?

8
Jim

Opensslを使用して、事前に暗号化されたパスワード文字列を生成し、-pオプションを使用してuseraddを実行できます。

echo "P4sSw0rD" | openssl passwd -1 -stdin

$1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1

-1はMD5パスワードハッシュを生成するように言っています。塩は自動的に生成されます。

次に使用できます

useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy

ユーザーを追加します。これをインタラクティブに行うには、パスワードを非表示にします

useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy
13
user9517

どうやら 、あなたは使うことができます

echo "password" | passwd dummy --stdin

私はこれを試したことはありません。

または、ユーザーの公開鍵を/home/dummy/.ssh/authorized_keysとパスワードを完全に忘れてください。これは、セキュリティの面で最適なオプションです。

3
Ladadadada

それが私のやり方です:

# cat user-pw_list
john:p455W0rD
geany:p455W0rD


# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
  USER=${REPLY%%:*}
  PWD=${REPLY##*:}
  # alternative for random passwd, where $RANDOM is a bash function
  #PWD=${REPLY%%:*}$RANDOM$RANDOM

  echo -e "adding User $USER "
  # for disabled users: /usr/sbin/nologin, otherwise /bin/bash
  /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
  echo "$USER:$PWD" | chpasswd --md5 $USER

  ## also add user to samba:
  #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done
3
ThorstenS

Bashスクリプトを使用するので、おそらく古き良きnewusersコマンドが役に立ちますか?次のような形式のテキストファイルから入力を読み取ります。

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_Shell

そして、そのファイルのパスワードは平文でなければなりません。入力ファイルには、必要な数のユーザーをリストできます。

詳細については、man newusersを参照してください。

2