スクリプトから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
この機能について何かコメントはありますか?
useradd
にパスワードを指定しないと、パスワードは設定されません(したがって、ユーザーはパスワードを使用してログインできなくなります)。 useradd
とadduser
は2つの異なるコマンドであることに注意してください。
以下では、独自のグループで新しいユーザーを作成し、そのホームディレクトリを作成し(場所を指定しないため、デフォルトの場所に)、スケルトンファイルをコピーします。
useradd --create-home <user>
次に、ホームディレクトリにディレクトリ.ssh
を作成し、chmod
を0700
に作成し(SSHはセキュリティのためにこれを必要とします)、ユーザーの公開鍵を.ssh/authorized_keys
に配置します。 (秘密鍵と公開鍵のペアは、ユーザー自身が自分のコンピューターで生成する必要があります)。
既存のアカウントのパスワードを無効にする場合は、以下を使用できます。
usermod --lock <user>
ユーティリティ/ usr/sbin/useraddは、パスワードを必要とせずに常にユーザーを作成してくれました。別のシステムの/ etc/passwdを使用してユーザーを作成するスクリプトを、たくさん作成しました。
または、Mercurial-serverのドキュメントを見ると、サーバー側で1人のユーザーとしてプログラムを実行するように多くのSSHキー(クライアント)を設定する方法がわかります。
# 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
ランダムなパスワードを生成するための組み込みコマンドだけが必要な場合は、次のことを試すことができます。
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
/ etc/shadowのパスワードフィールドに*を入力します(これは、パスワードを設定しない場合に発生するはずです)。これにより、ユーザーはログインできなくなります。
passook を使用して、管理しているログインサーバーでパスワードを生成します。私が見つけたあなたの場合、ログインは必須ではありませんが、passookは記憶に残る十分なパスワードを生成します。