ユーザーのパスワードを設定する の方法を説明するガイドを見つけました。私はそれを自動化して、次のようなユーザーに電子メールを送信しようとしています:
userid created with password XYZ.
request to change the initial password.
上記のドキュメントによれば、Python)を使用して暗号化されたパスワードを作成し、次のようにusermod
コマンドに入力する必要があります。
usermod -p "<encrypted-password>" <username>
これを行う他の簡単な方法はありますか?それを行うための特別なユーティリティをダウンロードしたくありません。可能な限り一般化する必要があります。
編集:上記のリンクで与えられた方法でさえ、私にはうまくいかないようです:
bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist. Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.
次のように、chpasswd
を使用して実行できます。
echo "username:newpassword" | chpasswd
chpasswd
以外のプログラムからecho
にパイプすることもできますが、これでうまくいきます。
編集:シェルスクリプト内でパスワードを生成して設定するには、次のようにします。
# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd
chpasswd
の詳細については、 http://linux.die.net/man/8/chpasswd を参照してください
(パスワードを生成するコマンドは http://nixcraft.com/Shell-scripting/13454-command-generate-random-password-string.html からのものです)
OpenSSLを使用してランダムなパスワード(この場合は16文字)を生成できます。
# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl Rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')
次に、ハッシュされたパスワードをuseradd
またはusermod
にフィードします
# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>
クレジット:生成されるパスワード: 類似の方法 を使用したパスワード生成は、/dev/urandom
の代わりにopenssl
。
seraddは動作するはずです(私はUbuntuで実行しました)。多分あなたの各引数が正しいことを確認してください(これらのグループが存在し、パスはbashする権利です)。パスワードとユーザーだけでコマンドを実行し、次にserdelを使用して削除してから、さらにパラメーターを使用して再試行し、問題の原因を突き止めます(ブルートフォースアプローチ)。
newusers(manページを参照)もあります。少なくともUbuntuでは、プレーンテキストのパスワードを含む、infoのようなpasswdファイルを含むファイルを指定すると、それらのユーザーが作成されます。一度に多くのユーザーを実行するための素晴らしい方法。
私が見つけた最も簡単な方法:
PASSWD="mySeCr3t-default-pa55"
echo ${PASSWD} | passwd --stdin username_here