web-dev-qa-db-ja.com

Linuxのユーザーパスワードをコマンドラインから対話機能なしで変更できますか?

対話性のない単一のコマンドでユーザーのパスワードを変更できるようにしたいという特定の使用例があります。これは安全な方法(SSH経由、およびログインできるユーザーが1人だけのシステム)で行われているため、コマンドラインで新しいパスワード(および必要に応じて古いパスワード)を公開しても問題ありません。 FWIW、それはUbuntuシステムです。

この1つのタスクだけのために、このシステムにExpectのようなものを追加する必要がないようにしたいだけです。

15
Paul Hoffman

chpasswd を使用できます。

echo user:pass | /usr/sbin/chpasswd
25
xofer

usermod-pオプションとともに使用して、パスワードハッシュを提供できます(実際のパスワードではありません)。 mkpasswd -m sha-256mkpasswd -m md5などを使用してパスワードハッシュを生成できます

5
stew

承知しました。

  1. ローカルシステムのパスワードをハッシュします。
  2. リモートマシン(パスワードを変更する場所)に接続します。
  3. ハッシュされたパスワードとユーザー名を、システムのパスワードファイルを更新するクリエイティブsedスクリプトにフィードします(/etc/shadow/etc/master.passwd、それが何であれ)。
3
voretaq7

passwdユーティリティには、以下を示す--stdinオプションがあります。

このオプションは、passwdが標準入力から新しいパスワードを読み取る必要があることを示すために使用されます。

構文:

echo "newpass" | passwd --stdin user1

気にしないと言ったとしても、パスワードをテキストファイルに入れてcat pass.txt echoコマンドの代わりに、bash履歴に表示されません。

1
Safado

--stdinオプションが機能していません。基本的に2つのオプションを使用できます。

  1. スクリプトでchpaswdという別のユーティリティを使用してください。
  2. またはecho "current_password\nnew_password\nnew_password" | passwd user_name
1
Sanjay s.