最近Windows XP Professionalを使いはじめました。ドメインには参加していません。
当初、Guestアカウントは無効になっていたのですが、ふと気づくと、図1のように「コントロールパネル」-「ユーザーアカウント」では「Guestアカウントをオフ」になっているにも関わらず、「コンピュータの管理」-「ローカルユーザーとグループ」から確認すると、Guestアカウントが有効になっていることに気づきました。
そこでGuestアカウントを無効にしたのですが、今度はファイル共有をしようとしたところ、図2のようにファイル共有に関する警告メッセージが表示されている初期状態の画面に戻ってしまっています。
仕方がないので、ファイル共有をする為に、「危険を認識した上で...」をクリックし、図3の画面で「ファイル共有を有効にする」を選択したのですが、今度はGuestアカウントが有効になってしまいました。しかし、以前として「ユーザーアカウント」で確認すると「Guestアカウントはオフ」のままです。
なぜ、このようなことが発生するのでしょうか?
また「ユーザーアカウント」では「Guestアカウントをオフ」にしているのに、「コンピュータの管理」でGuestアカウントが有効になってしまっているのは一体どういう意味なのでしょうか。
Windows XPのログオンやセキュリティの設定は、ユーザの利便性を向上させる目的で幾つかの機能追加が行われるとともに、インタフェースが大きく変更されています。今回の事象にも、この変更が影響しています。
表面的な使い勝手は向上している面もありますが、従来からのユーザにとっては、逆にと迷う面も大きいと思います。以下詳しく説明していきましょう。
まず、「Guestアカウントをオフ」にしているのにGuestアカウントが無効になっていない事象について説明しましょう。
質問中にもありましたが、「ユーザーアカウント」で「Guestアカウントをオフ」にしても、実際のGuestアカウントは無効になりません。ここで行なった「Guestアカウントのオフ」は、実際には図4にあるローカルポリシーの「ローカルログオンを拒否する」ポリシーに反映されます。
「ローカルログオンを拒否する」ポリシーに列挙されたアカウントは、コンソールからのログオンが拒否されるようになりますが、それ以外に、「ようこそ」画面を利用している場合には、「ようこそ」画面でのアカウント一覧に表示されなくなるのです。
このポリシーが適用されていても、「ネットワーク経由のログオン」権限があれば、ネットワーク経由で該当マシンの共有に接続することは可能です。この権限はGuestアカウントにもありますので、結局の所、「Guestアカウントをオフ」にしても、ネットワークからGuestアカウントで接続することは可能です。
なお、「ローカルログオンを拒否する」ポリシーを提供することによる影響は、Guestアカウント以外のアカウントについても同様なのですが、「ユーザーアカウント」で「アカウントのオン/オフ」を行なえるのは、Guestアカウントだけになっています。
いずれにしても、「ユーザーアカウント」で行なう設定はGuestアカウントの「ローカルログオンを拒否する」ポリシーに関するものだけで、従来のアカウントの無効化/有効化に関する処理は一切行なわれません。
次に、Guestアカウントが勝手に有効になってしまう現象について説明します。
この処理を行なっているのは、ワークグループ構成のWindows XPでデフォルトのインタフェースとなっている、「簡易ファイルの共有」インタフェースです。
このインタフェースが有効になっている場合、最初にファイル共有を行なおうとすると、図2の画面が現れます。ここでファイル共有を有効にするか、ウィザードを利用して設定を行なった場合、最終的にGuestアカウントが有効になります。
「簡易ファイルの共有」機能の詳細については、「304040 Windows XP のファイル共有およびアクセス許可について」や「290403: ワークグループにインストールされているWin XP Proでセキュリティを設定する方法」で説明されていますが、基本的にWindows 9xマシンで実現されていた共有レベルのアクセス制御と類似のアクセス制御をWindows XPで実現する為の機能となっており、共有ファイルのアクセス制御は、図5のように「読み取り」か、「読み取りおよび書き込み」のいずれかを選択する簡単なインタフェースになっています。
この設定は内部的にはEveryoneに対するACLとして設定されます。更に、Windows XPでは
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA REG_DWORD: ForceGuest (1 = ネットワーク経由でのアクセスを強制的にGuestアカウントとみなす)
という新しいレジストリが追加されており、「簡易ファイルの共有」機能を有効にすると、このレジストリの値が1になります。
結果としてアクセスするユーザはすべてGuestとして認証され、Everyoneに対する「読み取り」か「読みとりおよび書き込み」の設定によって、ファイルアクセスが制御されるようになる訳です。説明してきたように、この機能を実現する為にGuestアカウントが必要な為、簡易ファイルの共有機能を有効にすると同時にGuestアカウントが有効になる訳です。
このように簡単にファイル共有を実現する「簡易ファイルの共有」機能ですが、セキュリティ面では決して推奨できるものではありません。
Windows NT/2000と同様に共有に対して詳細なアクセス権を設定したいという場合は、「フォルダオプション」で図6のように「簡易ファイルの共有」機能を無効にしてください。
これにより、図7のように従来と同様の共有インタフェースやファイルのコンテキストメニュー中の「セキュリティ」メニューからのNTFSアクセス権の設定が可能になります。
なお、ドメインに参加したWindows XPでは、この設定に関わらず、「簡易ファイルの共有」は自動的に無効になります。逆にWindows XP Home Editionでは、「簡易ファイルの共有」インタフェースを無効にしたり、ForceGuestレジストリの値を設定したりすることはできません(設定しても無視されます)。これは仕様になります。
このように、ワークグループ構成のWindows XPでは、使い勝手を重視して簡略化したインタフェースを提供していますが、従来からのWindows NT/2000のセキュリティ機構の上で簡略化されたセキュリティを実現するため、結果として内部機構が非常に複雑になってしまっています。
厳格なセキュリティ設定も行なえませんので、元々の質問のように、セキュリティが気になる場合は、素直に「簡易ファイルの共有」を無効にして、従来からのインタフェースで設定を行なった方がよいでしょう。