「passwd」と「chpasswd」の違いは何ですか?


14

これらのコマンドの説明を本passwdから読みました

既存のユーザーのパスワードを変更します。

chpasswd:

ログイン名とパスワードのペアのファイルを読み取り、パスワードを更新します。

これらのコマンドは同じ仕事をしているようです。それらに違いはありますか?

編集:

どのファイルが変更されるかを、いつ使用するかを学びたいです。同じファイルを変更しますか、それとも異なるファイルを変更しますか?異なるファイルを変更する場合、それらは何ですか?


2
/etc/passwordユーザーアカウント情報が含まれています。/etc/shadow暗号化されたパスワードが含まれています。これらが関連する唯一のファイルだと思います。これらのファイルを手動で編集することでパスワードを変更できますが、非常に厄介です。
ソースコード

回答:


18

からman chpasswd

「このコマンドは、一度に多くのアカウントが作成される大規模なシステム環境で使用するためのものです。」

passwd (私の経験では)通常、単一のユーザーに対して対話的に使用されます。


7

両方のマニュアルページを参照してください。

名前

    chpasswd-バッチモードでパスワードを更新する

あらすじ

    chpasswd [オプション]

記述

    このchpasswdコマンドは、ユーザー名とパスワードのペアのリストを標準入力から読み取り、この情報を使用して既存のユーザーのグループを更新します。各行の形式は次のとおりです。

       ユーザー名パスワード


名前

    passwd-ユーザーパスワードの変更

あらすじ

    passwd [オプション] [ログイン]

記述

    このpasswdコマンドは、ユーザーアカウントのパスワードを変更します。通常のユーザーは自分のアカウントのパスワードのみを変更できますが、スーパーユーザーは任意のアカウントのパスワードを変更できます。  passwdまた、アカウントまたは関連するパスワードの有効期間も変更します。


7

手短に:

  • passwdを使用して、STDIN(ファイル記述子0)が端末に接続されているかどうかを確認しますisatty(0)。そうでない場合は、passwd救済されます。つまり、passwd対話的にしか作業できません

  • chpasswd一方、STDINから(ユーザー名と)パスワードを読み取るように設計されており、バッチモードと呼ばれます(一度に複数のユーザー資格情報を作成/更新します)。パスワード(デフォルトではクリアテキスト)、およびSTDINからの形式user_name:passwordで指定されたユーザー名を読み取り、エントリを改行で区切ります


0

私はそれを見つけました

echo user:password | chpasswd

一部のOSでは動作しますが、debian9,10などの一部のOSでは、/ etc / nsswitch.confをcan not connect to /var/run/nscd/socket使用してパスワードの保存場所を決定するため、エラーが表示されます。

一方、passwdコマンドは対話型シェルを必要としないようですが、

(echo user; echo password) | passwd

さまざまなOS(ubuntu xenial-bionic、debian9-10、centos75-76、coreos1855-2135)で、物理ホストとコンテナの両方で動作します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.