/etc/shadowの「!!」と「*」の違い
環境情報
- RHEL 7
/etc/shadowとは
/etc/passwdはパスワードに関する情報が記述されているファイルで、形式はコロン区切りです。
例えば、RHEL環境で先頭数行を見てみると以下のようになっています。
# head -n 2 /etc/shadow root:$6$2JiRy.....::0:99999:7::: bin:*:17421:0:99999:7:::
この項目の中で、パスワードが有効か無効かを判断する際にチェックするのが、2列目です。
ここには長い文字列またはアスタリスクまたはびっくりマークが記載されています。
長い文字列は、文字通りパスワードを暗号化したものです。
パスワードが短くても、ここの部分は長い文字列となります。
問題は、アスタリスクやびっくりマークの意味です。
アスタリスク=「* 」はパスワードが無効化されている
ユーザbinのところに「*」が入っています。
これは、明示的にパスワードを無効化していることを指します。
パスワードが無効化されている場合、一般的にはrootユーザからスイッチをする必要があります。
ただし、rootにスイッチせずともSSHにて公開鍵/秘密鍵の認証で当ユーザにてログインすることも可能です。
びっくりマーク=「 !!」はアカウントがロックされている
ロックと書くと「パスワードを連続で間違えた場合」などを想定されるかと思いますが、
実はユーザ作成時にもデフォルトでロックされます。
確かに、どちらもパスワードでログインできない状態という意味では同じ状態です。
ユーザ作成後、
パスワードを与えてあげれば暗号化パスワードを意味する長い文字列となり、
パスワードを消去してあげれば無効を意味するアスタリスクとなります。
まとめ
アスタリスクとびっくりマークの違いですが、
パスワードを無効化している状態 と アカウントがロックされている状態 の違いです。
ポイントはユーザ作成後の初期状態でもアカウントがロックされている状態となっていることです。
パスワードを無効化するのであれば、明示的にパスワードを無効化してあげましょう。
また今回はRedHatEnterpriseLinuxですが他のOSだと異なるケースもあります。その点はご注意ください。