プロンプトなしでpasswdを使用してユーザーパスワードを設定する方法


20

大量のユーザーをシステムに追加するスクリプトを書いています。これには、各ユーザーのデフォルトパスワードの設定が含まれます。事前にパスワードの入力を求められることなく、ユーザーのパスワードを設定するにはどうすればよいですか?

残念ながら、passwdは、設定する新しいパスワードを示す引数をとらないようです。Ubuntu 11.10を使用しています。

回答:


22

usermodを試してください:

usermod --password PASSWORD USERNAME

唯一のものは、これには事前に暗号化されたパスワード文字列が必要であり、最初に生成する必要があります。


1
... mkpasswdを使用して生成できます。すばらしい、ありがとう!
ジェイクペトルーレ

16
opensslを使用して、暗号化されたパスワードを生成することもできます。例:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
エリックスミス

1
3年遅れです。@EricSmithには答えられませんでしたが、機能するコマンドのより単純なバージョンを発見しましたusermod --password $(openssl passwd -1 {password}) {username}
。– BoCoKeith

13

chpasswd次のコマンドを確認する必要があります(Linuxフレーバーで使用可能な場合):

echo 'userid:newpasswd' | chpasswd

または、個別の行で各アカウントのuserid:passwdをリストするファイルをcatすることができます。

それでおしまい。


これは私のために働いたDockerfile
ビシュラント

1

エリック・スミスのアイデアに触発され、結合openssl passwdusermod -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:::

0

パスワードエージングを使用し、最初のログインでパスワードを変更する必要があるようにユーザーを設定する必要があります。こちらの記事をご覧ください。


これらはFTP専用のアカウントを対象としていますが、良いアドバイスです。;)
ジェイクペトルーレ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.