web-dev-qa-db-ja.com

プログラムでパスワードを変更する

Raspianの現在のバージョンでは、現在ログインしているユーザーのパスワードをコマンドラインから次のように変更できることを知っています。

Sudo passwd

次に、ユーザーに新しいパスワードを2回入力するように求めます。これにより、次のような出力が生成されます。

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

シェルスクリプトなどのように、プログラムでパスワードを変更する方法はないかと考えていました。

Raspberry Piに展開する構成スクリプトを作成しようとしています。手動で新しいパスワードを入力する必要はありません。

12
James Taylor

chpasswdコマンドを探しています。あなたはこのようなことをするでしょう:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

少なくともデフォルトのPAM構成では、ルートとして実行する必要があることに注意してください。しかし、おそらくrootとして実行することは、システム展開スクリプトの問題ではありません。

また、複数行の入力を供給することにより、一度に複数のユーザーを実行できます。

19
derobert

もう1つの方法は、スクリプトでyesコマンドを使用することです。

yes newpassword | passwd youruser

これにより、newpasswordpasswdyouruserコマンドに送信されます。

スクリプトを使用してユーザーのパスワードを設定/変更すると、セキュリティ上のリスクが生じる可能性があるため、可能な限り回避する必要があることに注意してください。

編集:

この回答にはrootアクセスが必要です。これについて以前言及しなかったことをお詫びします。これは、ルートアクセスを必要とする管理タスクを実行するときに使用する方法です。

9
Timothy Martin