passwdコマンドについて | ヘビィ・SMD!

ヘビィ・SMD!

そんな・・・バナナ!!
1. 甘え度+10 恐れ度+10 寿命-1週間
2. 甘え度+10 恐れ度-10
3. 甘え度-10 恐れ度-10 寿命+1週間

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 ユーザ名


とした方がいいかな。