私は本からこのコマンドの説明を読んだ。
パスワード:
既存のユーザーのパスワードを変更します。
chpasswd:
ログインとパスワードのペアファイルを読み、パスワードを更新します。
このコマンドは同じことをするようです。それらの間に違いがありますか?
編集する:
私たちがファイルを使用するときにどのファイルが変更されたかを知りたいです。同じファイルを変更しますか、それとも別のファイルを変更しますか?他のファイルを変更した場合は何でしたか?
答え1
からman chpasswd
:
「このコマンドは、一度に多数のアカウントが作成される大規模なシステム環境で使用するためのものです。」
passwd
通常、(私の経験では)シングルユーザーの対話に使用されます。
答え2
簡単に言うと:
passwd
.を使用してSTDIN(ファイル記述子0)が端末に接続されていることを確認しますisatty(0)
。それ以外の場合はpasswd
終了できます。つまり、passwd
インタラクティブな作業しかできません。chpasswd
一方、STDINで(ユーザー名と)パスワードを読むことを目的とすることをバッチモード(一度に複数のユーザー資格情報を生成/更新)と呼びます。 STDINからパスワード(デフォルトではプレーンテキスト)とユーザー名を読みます。user_name:password
項目は改行文字で区切られた形式で提供されます。
答え3
該当するマニュアルページを参照してください。
名前
chpasswd - バッチモードでパスワードを更新する
要約
chpasswd
[オプション]説明する
この
chpasswd
コマンドは、標準入力からユーザー名とパスワードのペアのリストを読み取り、この情報で既存のユーザーセットを更新します。各行の形式は次のとおりです。ユーザー名パスワード
名前
passwd - ユーザーパスワードの変更
要約
passwd
[オプション] [ログイン]説明する
この
passwd
コマンドはユーザーアカウントのパスワードを変更します。一般ユーザーは自分のアカウントのパスワードのみを変更でき、スーパーユーザーはすべてのアカウントのパスワードを変更できます。passwd
アカウントまたは関連パスワードの有効期限も変更されます。
答え4
私はそれを見つけた。
echo user:password | chpasswd
一部のオペレーティングシステムでは動作しますが、一部のオペレーティングシステム(debian9,10など)は、パスワードが保存される場所を決定するために使用されるため、can not connect to /var/run/nscd/socket
エラーを表示します。/etc/nsswitch.conf
一方、このpasswd
コマンドには対話型シェルは必要ないようです。
(echo user; echo password) | passwd
物理ホストとコンテナに適しており、さまざまなオペレーティングシステム(ubuntu xenial-bionic、debian9-10、centos75-76、coreos1855-2135)に適しています。