システムファイルの所有権問題でハマる on Windows Vista

 テスト用にVistaのhostsファイル(C:\Windows\System32\drivers\etc\hosts)を書き換えようとしたんだけど、このファイルはシステムファイルなので、当然一般ユーザー権限では書き換えられない。そこで、管理者権限でコマンドプロンプトを実行し、vimで編集したわけなんだが、このときvimは「編集後のファイルを別のファイルに保存→オリジナルのファイルに置き換え」というステップを踏んでくれていたためにファイルのパーミッションが変わってしまうという問題発生。

 編集後のファイルは、自分のみ「フルコントロール」、「Everyone」と「None」にファイル属性の読み取りのみ許可、というパーミッションになっていて、そのためシステムがhostsファイルにアクセスできなくなり、hostsに何を書いてもそれが適用されない状況に。結局、問題がパーミッションにあることに気付いたのは10数分後……。

 公式には「hostsファイルの編集には管理者権限で起動したメモ帳を使え」と言われているのですが、他のエディタを使うとこういうトラブルになるよ、ということで。しかし、「SYSTEM」のパーミッションがないと本当にシステムもアクセスできないのね>NTFSのパーミッション仕様。