linuxのコマンドの話。
実はスゴい勘違いをしていた。
passwdコマンドは、ユーザのパスワードを変更するコマンド。
たいていはスーパーユーザで実行し、適宜ユーザのパスワードを設定していた。
で、勘違いしていた内容は・・・
「パスワードを消す方法」
あまり知識がない頃、同僚にパスワードを消す方法を聞いた時
「パスワード入力のところで何も入力しないでエンター押したらパスワードなくなるよ」
これをずっと信じていた。
無知の知…恐ろしい。
(そもそもこのコマンドを使う機会がすくなかったこともある)
これ(間違った認識)を実施すると、こんな感じになる
[root@dev ~]# passwd testuser
Changing password for user testuser.
New UNIX password: ←なにもせずエンター
BAD PASSWORD: it's WAY too short
Retype new UNIX password: ←なにもせずエンター
No password supplied
No password supplied
No password supplied
passwd: Authentication token manipulation error
この場合はerror!って出ているので「エラー乙!」となるわけだが、確か別の環境ではerrorとは出なかった気がする。気がする。
パスワードの状態を確認したければ
/etc/shadow
を見るといい。スーパーユーザで権限700だから、一般ユーザでは見れないぉ。
testuser:暗号化されたパスワード:14636:0:99999:7:::
こんな風に宣言されているはず。暗号化された値の部分が「!!」となっていたらパスワードがないことを指すけど、
上記のようにエンターで空入力していた場合は値がしっかり残っているはず。(変更されない)
やり方が間違っていたので、ちゃんとドキュメントを読むと、
なんだ、削除用のオプションがあるんだ。
passwd -d ユーザ名
これでユーザのパスワードが削除できると。(スーパーユーザしか使えないオプションだったはず)
これだけだと
testuser::14636:0:99999:7:::
こんな風になっているはず。
これはよくないらしい。要は「パスワードがないユーザ」であるんだと。
sshなどで入る場合に「パスワードがないと入れない」という設定はあくまでsshの設定
#PermitEmptyPasswords no
に依存する部分なので、これが有効にされた場合パスワードなしで入れる「可能性」が残る。
つまり「!!」としてやれ、ということ。
「!!」となっていたらパスワードがない、とさっきは書いたけど、正しくは
「パスワードがなしで、ロックされている状態」を指す。
ロックされていたらパスワードマッチングがされなくなり、そのアカウントは使えないことを指すらしい。
passwd -l ユーザ名 ←ロック
passwd -u ユーザ名 ←アンロック
もちろん、スーパーユーザがロックされているユーザに変身することは可能。
ggrksすればいっぱい出てくるので、このページは自分に対する備忘録だな。
追記。
passwd -l ユーザ名
の後に
passwd -d ユーザ名
をするとロック状態も解除される。順番に注意。
まぁ、削除せずともロックすればいいだけだけどね。
/etc/shadowファイルを見たとき「パスワードなしでロック状態」の方が見やすいと思うから
passwd -d ユーザ名
passwd -l ユーザ名
とした方がいいかな。

」