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>
編集:
これを 2012 年に投稿して以来、OpenSSL の新しいバージョンでは openssl passwd
に機能が追加されています。 指図。 -1
を使用する代わりに MD5 ベースのハッシュを取得するオプション、最新バージョンも -5
をサポート SHA256 ベースのハッシュと -6
用 SHA512 ベースのハッシュ用。
正当な理由:パスワードの生成は、/dev/urandom
を使用する同様の方法から採用されています openssl
の代わりに .
ユーザー追加 動作するはずです(Ubuntuで実行しました)。たぶん、各引数が正しいことを確認してください(グループが存在し、パスがbashするのに正しいです)。パスワードとユーザーのみでコマンドを実行し、userdel を使用できます。 削除してから、より多くのパラメーターを使用して再試行し、問題の原因を確認します (ブルート フォース アプローチ)。
新規ユーザーもいます (manページを参照)、少なくともUbuntuでは、プレーンテキストのパスワードを含む、infoのようなpasswdファイルを含むファイルを指定すると、それらのユーザーが作成されます。一度に多くのユーザーを処理するための優れた方法です。