ドツボにハマっている場面を見かけたので、小ネタを。
結論:
Windows 7/2008で、プログラム実行時なアクセス権絡みの妙な挙動や何故か拒否されるという挙動が出たら、フォルダに「Authenticated Users」権限が正しく付いていることを確認すること。
以下、うだうだ。
7や2008では普通にNTFSでフォーマットすると「Authenticated Users」というグループにアクセス権が付与される。このグループは「Windowsで認証済のアカウント」という意味で、「サブフォルダーとファイルの削除」「アクセス許可の変更」「所有権の取得」の3つ以外の全ての権利が付いている、かなり自由度の高い権限となっている。
一方、よく見ると普通に「Users」グループも作成されていて、こちらはフォルダ内の読みと実行のみ、とまあ実に制限されている。また、「Administrators」は例によってフル権限。
さてここで問題です。ここで「Authenticated Users」を削除するとどうなるでしょう。
結果:プログラムからディスクへの書き込みが出来なくなります。
Vista以降、プログラムは通常時は実に制限されたユーザー権限で動作している。
このため、放っておくとディスクからは読込しか出来ない。
これでは困るので、ここで出てくるのが「Authenticated Users」。
コレがあるおかげでプログラムはディスクへの書込が出来るということ。
この辺りの制御をしているのは内部ユーザー認証=UAC。
Usersとの微妙だが決定的な違いもこの辺りの話。
UsersにはGuestアカウント(と昔の匿名ログオン)も含まれるが、Authenticated Usersでは明示的にユーザとして定義されているもののみ。
これが、正規ユーザ実行として認証されない状態のままディスクに突撃するようなマルウェアに対する、セキュリティ防壁になっているというワケですな。
ちなみに、具体的にこの権限周りでコケるのは以下のような場合。
1:今まで他で使っていたHDDを繋いだような場合
2:知ったかクンが勘違いして明示的に権限を削除しちゃったような場合
殆どは1。今回の元ネタもこのパターンだったのだが・・・2の実例を知っているモンで、ね。