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

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

(Windows)削除の不思議な仕様

WindowsServer 2003上で共有フォルダを作成し、Windows XPからアクセスしています。

共有フォルダでユーザhogeに対するアクセス権を下記のような構成にしたいと考えていました。

共有ルートフォルダ → 参照のみ可能

└─shareフォルダ → 削除不可

  └─(自由にフォルダ・ファイル追加、変更、削除可)

NTFSアクセス権は下記のように設定しました。

共有ルートフォルダ

 hoge:フォルダの一覧/ファイルの実行の許可(このフォルダのみ。継承無)

shareフォルダ

 hoge:変更、読み取りと実行、フォルダの内容の一覧表示、読み取り、

書き込みの許可(このフォルダ、サブフォルダおよびファイル)

 hoge:削除の拒否(このフォルダのみ)

これでユーザhogeがshareフォルダを削除しようとすると削除のエラーダイアログは表示されるのですが、shareフォルダ配下のファイル・フォルダオブジェクトは削除されてしまいます。

MSフォーラム:フォルダの削除を制限する設定についてで情報が載ってましたが、どうやらWindowsの仕様のようですね。

Windows7では削除されないということでしたが、実際に評価してないので何とも言えません。

おそらくWindowsServer2003のフォルダ削除の仕様として、まず配下のファイル・フォルダを消してから、元のルートフォルダを消そうとするんでしょうね。

対比策としては、上記MSサポートにあるように最初にExplorerの削除対象となるフォルダ・ファイル(ファイル名0とか)を作り、アクセス拒否にするとかがあるようです。(あまりきれいな方法ではないですが。。)

なんかよりスマートな方法ありませんかね。。。