web-dev-qa-db-ja.com

スクリプトからランダムまたは無効なパスワードを使用してLinuxユーザーを追加する方法

スクリプトからLinuxシステムにユーザーを追加したいのですが、パスワードを発明したり気にしたりしたくありません。これは自動的に実行する必要があります。

目標はsshキーを生成することであり、このユーザーはリモートでログインするだけで済みます。または、このユーザーはSudo su - thatuserを介してSudoユーザーから使用されます。

そのようなユーザーを作成するたびに、安全なパスワードを作成して入力する手間を省き、スクリプトからこれを実行したいと思います。

誰もこのユーザーとしてパスワードでログインできないはずなので、私の考えでは、彼は良いランダムなパスワードを取得しますが、誰もそれを知りません。

何かラムダムを生成するスクリプトを書くことはできますが、何かが組み込まれていますか?または、パスワードを無効にするだけです(パスワードログインはできませんが、キーを使用したsshログインとSudo su - thatuserは正常に機能します。

編集:すでにいくつかの答えがありますが、それを行う方法がまだわかりません。スクリプトはどのようになりますか?

Adduserのように動作し、すべての標準を作成する必要があります(std。homedir、スケルトンのコピー、同じ名前のグループなど)

Edit2:最後に、あなたの助けを借りて、私はうまくいく解決策を見つけました。それを共有したいと思います。これは私が「adduser-nopasswd」と呼んでいるスクリプトであり、/ usr/local/sbinに配置し(これは良い場所ですか?)、rootによってのみ実行できます。新しいグループとユーザーの名前である1つの引数を同時に取ります。

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --Shell /bin/bash -g $NAME $NAME

この機能について何かコメントはありますか?

4
user12096

useraddにパスワードを指定しないと、パスワードは設定されません(したがって、ユーザーはパスワードを使用してログインできなくなります)。 useraddadduserは2つの異なるコマンドであることに注意してください。

以下では、独自のグループで新しいユーザーを作成し、そのホームディレクトリを作成し(場所を指定しないため、デフォルトの場所に)、スケルトンファイルをコピーします。

useradd --create-home <user>

次に、ホームディレクトリにディレクトリ.sshを作成し、chmod0700に作成し(SSHはセキュリティのためにこれを必要とします)、ユーザーの公開鍵を.ssh/authorized_keysに配置します。 (秘密鍵と公開鍵のペアは、ユーザー自身が自分のコンピューターで生成する必要があります)。

既存のアカウントのパスワードを無効にする場合は、以下を使用できます。

usermod --lock <user>
14
Mikael Auno

ユーティリティ/ usr/sbin/useraddは、パスワードを必要とせずに常にユーザーを作成してくれました。別のシステムの/ etc/passwdを使用してユーザーを作成するスクリプトを、たくさん作成しました。

または、Mercurial-serverのドキュメントを見ると、サーバー側で1人のユーザーとしてプログラムを実行するように多くのSSHキー(クライアント)を設定する方法がわかります。

3
kmarsh
# 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

では、ユーザーを追加しましょう。

cat user-pw_list | ./CreateUsers.sh
2
ThorstenS

ランダムなパスワードを生成するための組み込みコマンドだけが必要な場合は、次のことを試すことができます。

dd if =/dev/urandom bs = 16 count = 1 2>/dev/null | uuencode- |ヘッド-n2 | grep -v begin |カット-b2-10

これにより、16バイトのランダムデータが読み取られ、それらをuuencodeして印刷可能な文字に変換し、uuencodeの追加出力を切り取ってから、エンコードからランダム文字のみを取得します。出力例を次に示します。

$ dd if =/dev/urandom bs = 16 count = 1 2>/dev/null | uuencode- |ヘッド-n2 | grep -v begin |カット-b2-10

RJ <B6QYRO

1
Nasko

/ etc/shadowのパスワードフィールドに*を入力します(これは、パスワードを設定しない場合に発生するはずです)。これにより、ユーザーはログインできなくなります。

0
Cian

passook を使用して、管理しているログインサーバーでパスワードを生成します。私が見つけたあなたの場合、ログインは必須ではありませんが、passookは記憶に残る十分なパスワードを生成します。

0
John Barrett