権限を再継承すると添付ファイルが削除される(ことがある)
まだ調査中のため、きちんとしたご説明ができないのですが。しかし再現性が確認できてしまった上、結構洒落にならない問題であるにも関わらず、かなり気づきにくい類ですので、ご報告しておきます。
まず、この現象が確認されている環境ですが、SharePoint2007 SP2 + 6月CU です。
個人的には6月のCUのバグを疑っています。
お知らせリストを作成します。(おそらく添付ができれば他リストでもOK)
このリストにいくつかアイテムを登録します。
ひとつのアイテムの権限を編集し、大量※のユーザーを追加して下さい。
許可レベルは何でも構いません。
これで、SharePointの仕様により、リスト本体には大量の「制限付きアクセス」が設定されます。
※設定されたアカウント数が多いほど再現性が高くなる─ように感じます。ただし手作業で検証する場合、一度に登録削除出来るユーザ数の上限が200のため、200アカウントを推奨します。
次に、別のアイテムを編集し、添付ファイルを付けて保存して下さい。
これもSharePointの仕様により、ファイルはアイテム保存時に Lists/list1/Attachments/ID/ 配下にアップロードされます。
このフォルダの中身は、¥¥server¥site¥Lists¥list1¥Attachments¥ID¥ で確認することが出来ます。
さて、このアイテムの権限を編集し、全てのユーザアカウントを削除してください。
当然、システムアカウントしかアクセスできないアイテムになります。
このアイテムをまた編集し、添付ファイルを追加して保存します。
IDフォルダを確認すると、当然ですが追加されたファイルが表示されます。
さて、ここからが問題の現象です。
このアイテムの権限を編集し、親リストから権限を継承しなおします。
すると…あれれ?
最後に添付した筈のファイルが、消えてしまいました。
リスト側の表示にはきちんと残っているのですが。
GUIからこのファイルにアクセスしようとすると、当然ながらエラーになります。
メッセージは対象のアプリケーションにより異なります。
この現象は必ず発生するわけではなく「時々」です。
ただし、親から継承するアカウント数が多いほど、再現性が高くなる傾向にあるようです。
試しに700アカウントほど権限登録されたリストで試験してみましたが、私の環境では概ね1/2~1/3前後の頻度で発生しました。
これは実用面としても無視出来ない再現率です。
厄介なのは、通常、アイテムの登録者(一般ユーザ)がこの障害に気づくことが難しい点です。
アイテムのGUI上では、添付ファイルはきちんと存在するように見える上、もし登録者がとても慎重で、念のため自分でクリックしてファイルの有無を確認したとしても、どうも ie のキャッシュが悪さをするらしく、きちんと開けたりします。
もともと、この問題は、私達が VisualStudio と C# で独自設計したワークフローが発端でした。
このワークフローは、ResetRoleInheritance および BreakRoleInheritance メソッドを利用して、保存時にアイテムの権限を自動変更するものです。
- 新規/変更で起動
- 権限を編集→作成者と更新者に投稿権限を設定してそれ以外を削除
- 選択列が「下書」ならそれで終り
- 選択列が「公開」なら、親権限を継承して終了
- 選択肢が「限定」なら、指定されたSharePointGrouupに権限を設定して終了
以上がワークフローのおおまかな仕様になります。
当初は ResetRoleInheritance メソッドのバグではないかと予想したのですが、GUIから手作業で権限編集→削除→再継承を繰り返した場合でも、再現してしまいました。
しかも、その保存時にアップロードされたファイルが消える、あるいはIDフォルダ内の全てのファイルが削除されるなら、まだ現象として判りやすいのですが…。
挙動を見る限り「最後に登録されたファイルだけ消える」ようです。
正直、なにがどうしたらこんな挙動になるのか(バグであれ仕様であれ)見当もつきません。
とりあえずは、「公開」による権限の継承を選択不可にして、「限定」選択肢のひとつとして、親権限と同義のSharePoint Groupで用意することで、ResetRoleInheritance を回避し、暫定的な対応としています。
これからMicrosoftに調査を依頼するつもりですが、進展があればまたご紹介します。
原因が判明しました : SharePoint 2007 で権限を継承すると添付ファイルが消える(500エラー)原因
login