
スクリプトから 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 はセキュリティのためにこれchmod
を0700
必要とします)、ユーザーの公開キーを配置します.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 のパスワード フィールドに * を入力します (パスワードを設定していない場合は、これが行われるはずです)。これにより、ユーザーはログインできなくなります。