3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(XP)「簡易ファイルの共有」機能にやられた

そろそろ Windows 7 のリリースも近いのに、今更ながら XP ネタです。

XP には「簡易ファイルの共有」機能というのがあり、フォルダオプションで有効無効が設定できます。

このフォルダオプションの設定は、各フォルダやファイルのプロパティで NTFS アクセス許可やフォルダ共有の詳細設定をするかしないかだけかと思ってたらどうやら違ってたようです。

(今までXP使うとき、詳細アクセス権設定ができないと嫌なので即効無効にしてました)

見つけたのが、@IT:簡易ファイルの共有機能を利用するの記事です。

どうやら簡易ファイルの共有機能が有効になっている状態で、フォルダ共有すると、すべてのアクセスは Guest アカウントを使って行われるようです。

試してみたところ、OSインストール直後は Guest アカウントは無効になっていますが、初回のフォルダ共有時(ネットワークセットアップウィザードを使っても、手動で行っても)に、勝手に Guest アカウントが有効になるっぽいです。

このときフォルダ共有の内部的な共有アクセス権限は Everyone の変更と読み取りが許可になっているようです。

また、すべてのアクセスは Guest アカウントを使って行われるので、サーバ側にクライアントPCのローカルユーザと同じアカウント、パスワードを登録しても、簡易ファイルの共有が有効になっていると Guest でアクセスしちゃいます。

ほんとにこれは家族内で簡単にファイル共有したいとかいうレベルの機能ですね。

(なぜ、企業向けの XP Pro でも簡易ファイルの共有がデフォルトで推奨なのかがわかりません。企業こそ重要なファイル共有するから最初から細かく権限指定できるようにすべきだと思うんですがね。。)

(ここかららは、Guestの話になりますが)、ある時点で簡易ファイルの共有を無効にしたとします。(ここからはサーバにしてるPCを server , クライントPCを client とします)

しかし、簡易ファイルの共有を無効にしたとしても、 Guest アカウントは有効のまま残ってしまいます。

これを無視したまま、新たなフォルダ共有をし特定のユーザ(たとえば server\userAアカウント)にだけ共有フォルダへのアクセス許可を与えます。

そして、クライアントPC(client\userBアカウント)で \\server\共有フォルダ にアクセス用しようとすると、、、

後はどうなるかわかりますよね。

アクセスが拒否されてしまいます。

この時、Windowsは具体的下記のような認証をしていると思われます。

クライアントPCのログイン中のアカウント名&パスワードと、サーバ側の共有フォルダに割り当てられてユーザアカウント名&パスワードを比較

(上記の例だと userB と userA を比較。結果は false)

 ↓

サーバ側の Guest アカウントが有効か?

(上記の例だと true)

 ↓

クライアントPCは Guest 権限でサーバPCにアクセスに行く。

(このとき、クライアントPCは Guest 権限を持っているので、エクスプローラからサーバのリソース(共有フォルダやプリンタetc)は見える)

が、共有フォルダのアクセス権は userA のみ。よって、アクセス拒否となる。

Guest が有効になっているため、いわゆる匿名アクセスになるわけですね。つまり、サーバPCには匿名ユーザ(Guest)として、ログインできているわけです。匿名アクセスについては@IT:匿名ファイル・アクセスを許可するに詳細があります。

この共有フォルダに Everyone か、Guest のアクセス権を追加してやると、共有フォルダにアクセスできるようです。

では、クライアントPC側で、 userA アカウントを作成する(パスワードもサーバ側の userA と同じにする)とどうでしょうか。

この場合、クライアントPCは userA としてサーバにログインすることになるので、userA の権限が振られた共有フォルダにはアクセスできます。

まあ、いづれにせよ Guest が有効になっていると厄介なことになることが多いですし、勝手にログインされているのもセキュリティ上問題なので、無効にしておいたほうがいいでしょう。(というより、自分はいつも無効にしてます)

Guest が無効なら、サーバPCにアクセスした時点(エクスプローラでコンピュータを開いた時点)でログインが求められるようにすることができます。

ただ、Geuest を有効にしたいという要件があるときは、ここら辺をよく理解してないと今回の自分のように あれっ?ってことになり無駄に時間とられるので、気をつけないといけませんね。

なお、XP Home Edition だとすべてのネットワーク接続は Guest アカウントを使用してしまうようですね。

詳しくはMSサポート:Windows XP の Guest アカウントについての下のほう。

ほんとよく理解してないと結構ハマることが多い Windows のネットワークアクセスです。

そういえば、初めて自分のPCでファイル共有試したのは確か初代VAIO L330Aと友人のVAIOノート(XR)でしたかね。

あの頃は標準でLANポートがないうえに、L330Aが Windows 98 SE だったので、iLINK(IEEE1394)と SmartConnect(TCP/IPカプセル化し、IEEE1394で流すソフト)でやってましたね。

うまくつなげるのも苦労しましたが、Windows ファイル共有はなかなか手強かった記憶があります。

まあ、あのころは今と比べると無知同然でしたからね。。