大量のユーザーをシステムに追加するスクリプトを書いています。これには、各ユーザーのデフォルトパスワードの設定が含まれます。事前にパスワードの入力を求められることなく、ユーザーのパスワードを設定するにはどうすればよいですか?
残念ながら、passwdは、設定する新しいパスワードを示す引数をとらないようです。Ubuntu 11.10を使用しています。
大量のユーザーをシステムに追加するスクリプトを書いています。これには、各ユーザーのデフォルトパスワードの設定が含まれます。事前にパスワードの入力を求められることなく、ユーザーのパスワードを設定するにはどうすればよいですか?
残念ながら、passwdは、設定する新しいパスワードを示す引数をとらないようです。Ubuntu 11.10を使用しています。
回答:
usermodを試してください:
usermod --password PASSWORD USERNAME
唯一のものは、これには事前に暗号化されたパスワード文字列が必要であり、最初に生成する必要があります。
usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
usermod --password $(openssl passwd -1 {password}) {username}
エリック・スミスのアイデアに触発され、結合openssl passwd
とusermod -p
コマンドが機能しました。パスワードのハッシュ値とソルト値を生成します。
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
次に、暗号化された文字列をusermodにコピーします。必ず一重引用符で囲んでください。
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
シャドウファイルで確認してください。
$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::