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

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

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

sudo passwd

これにより、ユーザーに新しいパスワードを2回尋ねるメッセージが表示されます。これにより、次のような出力が生成されます。

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

たとえば、シェルスクリプトを使用してプログラムでパスワードを変更できるかどうかを知りたいと思います。

私はRaspberry Pisにデプロイする設定スクリプトを作成しようとしていますが、新しいパスワードを手動で入力したくありません。

答え1

あなたはコマンドを探していますchpasswd。あなたは次のことをします:

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

少なくともデフォルトのPAM設定を使用してrootとして実行する必要があります。ただし、システム展開スクリプトの場合、rootとして実行することは問題にならない可能性があります。

また、複数行の入力を提供することで、複数のユーザーを同時に処理できます。

答え2

yes別のオプションは、スクリプトでコマンドを使用することです。

yes newpassword | passwd youruser

これはコマンドnewpasswordに送信されます。passwdyouruser

スクリプトを使用してユーザーパスワードを設定/変更するとセキュリティ上のリスクを引き起こす可能性があるため、可能であれば避ける必要があることに注意してください。

編集する:

この回答にはrootアクセスが必要です。この点をあらかじめ言及しておらず申し訳ありません。これは、rootアクセスを必要とする管理タスクを実行するために使用する方法です。

答え3

@derobertの答えは正しいですが、次のようにスーパーユーザーでコマンドを実行する必要があります。

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

sudo背面に注意してください|sudoでのみ動作するため、最初は役に立ちません。echo

関連情報