対話性のない単一のコマンドでユーザーのパスワードを変更できるようにしたいという特定の使用例があります。これは安全な方法(SSH経由、およびログインできるユーザーが1人だけのシステム)で行われているため、コマンドラインで新しいパスワード(および必要に応じて古いパスワード)を公開しても問題ありません。 FWIW、それはUbuntuシステムです。
この1つのタスクだけのために、このシステムにExpectのようなものを追加する必要がないようにしたいだけです。
chpasswd を使用できます。
echo user:pass | /usr/sbin/chpasswd
usermod
を-p
オプションとともに使用して、パスワードハッシュを提供できます(実際のパスワードではありません)。 mkpasswd -m sha-256
やmkpasswd -m md5
などを使用してパスワードハッシュを生成できます
承知しました。
sed
スクリプトにフィードします(/etc/shadow
、/etc/master.passwd
、それが何であれ)。passwd
ユーティリティには、以下を示す--stdinオプションがあります。
このオプションは、passwdが標準入力から新しいパスワードを読み取る必要があることを示すために使用されます。
構文:
echo "newpass" | passwd --stdin user1
気にしないと言ったとしても、パスワードをテキストファイルに入れてcat pass.txt
echoコマンドの代わりに、bash履歴に表示されません。
--stdin
オプションが機能していません。基本的に2つのオプションを使用できます。
chpaswd
という別のユーティリティを使用してください。echo "current_password\nnew_password\nnew_password" | passwd user_name