はじめに
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つのパスワード変更コマンドの違いでした。ご参考になれば幸いです。