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

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

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

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

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

このユーザーとしてパスワードを使用してログインできる人は誰もいないはずなので、このユーザーにはランダムなパスワードが与えられているが、誰もそれを知らないというのが私の考えです。

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

編集:すでにいくつかの回答があり、素晴らしいのですが、まだどのように実行すればよいかわかりません。スクリプトはどのようになるでしょうか?

adduser のように動作し、標準のすべて (標準のホーム ディレクトリ、スケルトンのコピー、同じ名前のグループなど) を作成します。

編集2:最終的に、皆さんの助けを借りて、うまく機能する解決策を見つけたので、それを共有したいと思います。これは、「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

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

答え1

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

次のようにすると、独自のグループを持つ新しいユーザーが作成され、ホーム ディレクトリ (場所を指定していないため、デフォルトの場所) が作成され、スケルトン ファイルがコピーされます。

useradd --create-home <user>

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

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

usermod --lock <user>

答え2

ユーティリティ /usr/sbin/useradd は、パスワードを要求せずに常にユーザーを作成します。私は、別のシステムの /etc/passwd を取得してユーザーを作成するスクリプトを多数作成しました。

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

答え3

# 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

答え4

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

関連情報