(O+P)ut

アウトプット



(O+P)ut

Output Log

【UNIX】passwdとchpasswdの違い

スポンサーリンク

はじめに

UNIX系のOSでは、パスワードを変更するコマンドが二つあります。
passwdコマンドとchpasswdコマンドです。

どちらもパスワードを変更するコマンドなのですが、今回はAIXサーバでのコマンドを例に違いを簡単に整理しました。

passwdとchpasswdの違い

結論から言えば

passwd

  • 誰でも使用可能
  • 対話的にパスワードを変更

し、chpasswd

  • rootのみ使用可能 
  • 非対話的にパスワードを変更

という違いがあります。

使用ケースとしては以下です。

passwd 自分のパスワード変更
chpasswd 複数の他人のパスワードを一括で変更

以下、深堀して解説します。

権限の違い

権限周りの確認ですが、例えば一般ユーザがコマンドのパスを探す whichコマンドを使うとpasswdコマンドが発見できます。

$ which passwd
/usr/bin/passwd

このpasswdコマンドの権限を見てみると
-r-sr-xr-x
になってます。

最初の s は特殊なアクセス権を付与するための「SUID(Set User ID}」ですね。

しかし、一般ユーザがwhichコマンドでchpasswdを探そうとすると見つけられません。

$ which chpasswd
chpasswdはありません

rootにスイッチしてから行うと

# which chpasswd
/usr/bin/chpasswd

passwdコマンドと同じディレクトリに存在していることが確認できます。

chpasswdコマンドの権限を見てみると
-r-x------
となっています。

一般ユーザでは見当たらないわけですね。

使用法の違い

passwdコマンドは、対話的に
「新しいパスワードの入力 → 再入力」
を求められたりしますが、
chpasswdコマンドでは標準出力に操作を求められずにパスワード変更が可能です。

echoコマンドを用いて以下のようにしたり

echo "username:password" | chpasswd

test1:testpass1
test2:testpass2
test3:testpass3

といった構造のパスワードの一覧が記載されたmypwdfileというファイルを用意して以下のようにしたり、

cat mypwdfile | chpasswd

することでパスワード変更可能です。

ただし、気をつけるポイントとしては、echoのようにコマンド内にパスワードを記載するのは履歴にパスワードが残る点です。catではそれが残らないです。

以上、2つのコマンドの違いでした。


他の記事を読む