しかし、辞書を片端から暗号化してパスワードと照合していくことで、パスワードを解くことができることから、ハッカーたちがパスワードを解読してしまうことが可能となったのです。
それでは、パスワードファイルを読めなくすれば良いではないかと考えるでしょうが、それはできません。 /etc/passwd の読み出し属性を変えると、一般ユーザーがログイン 出来なくなります。つまり、一般ユーザーから暗号化されたパスワードを隠す事は SUN OS 4.x 以前では原理的に出来ませんでした。
Solarisでは、パスワードはやはり暗号化されているのですが、これは、一般ユーザには読み出しのできないシャドウ・ファイル /etc/shadow に格納され ます。このシャドウ・ファイルは、システム管理者しか読むことが出来ないように なっています。いわば、シャドウ・ファイルは、もっとも厳重に保護されている ファイルといえます。
root:Aq.3JjCTynlpI:8468:::::: daemon:NP:6445:::::: bin:NP:6445:::::: sys:NP:6445:::::: adm:NP:6445:::::: .......(中略)...... listen:*LK*::::::: nobody:NP:6445:::::: noaccess:NP:6445::::::
シャドウ・ファイルも、パスワード・ファイルと同様に、一人のユーザーが一行に 対応したアスキー・ファイルです。フィールドが、コロンで区切られているのも同じ です。次に、各フィールドの意味を記しておきます。
パスワードフィールドの NP や *LK* は、このユーザーのログインが 許されていないことを あらわしています。もし、パスワードのないユーザーがいれば、このフィールドは、 空でなければなりません。 また、* をパスワードフィールドに書けば、ルートがパスワードを設定するまで ログイン出来なくなります。(SUN OS 4.x 以前では、/etc/passwd のパスワード フィールドに * を設定すれば同じになります。)
実際のユーザ登録の際には、第2フィールドは、適当な文字 * などを入力しておき、後に述べる passwd コマンドで、パスワードを設定します。