AWSの登場ごろから、ユーザーにパスワードを設定せず
鍵認証でのアクセス方法がスタンダードになってきた気がします。
しかしOS上はsudo等で利用するためパスワードは設定しておきたい所です。
そんな環境でテストを行っているときに、少し怖かったこと。
テストを行う上で、きちんとパスワード認証が弾かれるか、
パスワードではなく鍵認証でログインできるかを確認するために、
パスワードを設定したり、空にしたりしたかったのですが。
いつもパスワードを空にする際には
# passwd -d hogehoge
とやっていたのですが、ふとシャドウファイルを見てみると
# view /etd/shadow
~省略
hogehoge::16248:0:99999:7:::
あれ?「!!」になっていない?
よくよく調べてみると
# man passwd
~省略
あるアカウントのパスワードを直ちに期限切れにしたい場合は、 -e オプションを用いればよい。するとそのユーザは次に
ログインする際にパスワードを変更するよう強制される。 -d オプションを使って、ユーザのパスワードを削除することも
できる (パスワードが空になる)。このオプションは注意して使うこと。これを使うと、そのアカウントはログインにパ ス
ワードを全く必要としなくなり、システムが侵入者に対してオープンになってしまう。
おいおい!
ためしにSSHやFTPしてみたらどんなパスワードでもログインできた!
じゃぁいったいどうしたらよいのか?
パスワードが設定されていない場合、シャドウファイルには「!!」と書かれている
確かに passwd -d では パスワードの項目が空にはなっていても、!!にはなっていない。
ん~あまり直接このファイルを弄るのはスマートでは無い気がする。というか駄目でしょ。
調べてみたら、そもそもパスワードの無効化とか、空にする、という考え方から違った
/etc/shadow のパスワード欄にある「!!」 は パスワードが空という意味ではなく
パスワードが無効化され「ロック」状態ですよという事だった。
確認
# passwd -d hogehoge
hogehoge::16248:0:99999:7:::
# passwd -l hogehoge
hogehoge:!!:16248:0:99999:7:::
おお!確かに。
# man passwd
-l フラグと -u フラグを用いると、ユーザアカウントをロックしたり、そのロックを外したりできる。 -l オプションを
用いると、パスワードフィールドの値は暗号化された如何なる値ともマッチしなくなり、アカウントは使用不能にな る 。
改めてネット情報を鵜呑みにすることの怖さ、man という基本的なところの大切さを学びました。
今まで・・・考えないようにしておこう。
中井 悦司
技術評論社
売り上げランキング: 35,867