(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【UNIX】passwdとchpasswdの違い

スポンサーリンク

はじめに

UNIX系のOS(AIX)では、パスワードを変更するコマンドとして

  • passwdコマンド
  • chpasswdコマンド

が用意されています。

これらはどちらもパスワードを変更するコマンドなのですが、今回はAIXサーバでの実機確認結果と共にコマンドの違いを簡単に整理しました。

環境情報
  • AIX 7

passwdとchpasswdの違い

結論から言えば

passwd

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

chpasswd

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

という違いがあり、想定される使用ケースは以下となっています。

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

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

使用ユーザ/権限の違い

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

$ which passwd
/usr/bin/passwd

このpasswdコマンドの権限は-r-sr-xr-xとなっており、SUID(Set User ID)を利用して全ユーザが使用することを想定しています。

一方で一般ユーザはchpasswdを利用できません。

$ which chpasswd
chpasswdはありません

なぜなら同コマンドはrootユーザにのみ読み取り/実行権限が付与されているコマンド(-r-x------)だらかです。

# which chpasswd
/usr/bin/chpasswd

使用法の違い

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

具体的にはechoコマンドを用いて以下のようにパスワードを変更したり

# echo "username:password" | chpasswd

ファイルを利用して

test1:testpass1
test2:testpass2
test3:testpass3

一括のパスワード変更にも対応しています。

# cat mypwdfile | chpasswd

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

終わりに

chpasswdをechoと組み合わせて使う場合、コマンド履歴にパスワードが残ってしまう点には注意が必要です。

以上、2つのパスワード変更コマンドの違いでした。ご参考になれば幸いです。