ACL ルールが の書き込み可能なファイルがある場合deny delete
、どの[plistableObject writeFoFile:undeletableFile atomically:YES]
呼び出しでも が返されますがNO
、アトミックでない書き込みは成功します。
アトミック書き込みとは、一時ファイルが書き込まれ、正常に書き込まれた場合は最終的に名前が変更されることを意味します。ただし、この特定の意味は奇妙に感じます。
それで、これが原因なのだろうか...
- HFS+ には直接の「名前変更」がありません。
-[NS(Array|Dictionary|Data|String) writeToFile:atomically:]
またはの実装における欠陥- Mac OS X での ACL の実装の欠陥?
前もって感謝します
ダニエル
元の質問:
先日、バックアップから復元した Mac でこの奇妙な動作を発見しました:
ほとんどのアプリケーションは設定を保持できませんでした。~/Library/Preferences
.
さらに掘り下げてみると、どういうわけか、ほとんどの plist にはディレクティブgroup:everyone deny delete
が配置された ACL があることがわかりました。このルールを捨てることで、その日は救われました。
私はNSArray|NSDictionary|NSWhatHaveYou
'swriteToFile:atomically:
がこの動作の原因であると考えました*。確かに、私が作成したテストツールはNO
、ファイルが存在し、そのような ACL が設定されている場合に、2 番目の引数として渡された場合にのみ成功します...
(* ここで、「責任がある」とは、書いていない部分のみを意味します。ACL の状況はまったく別のものでした)
だから私は疑問に思います:
これはバグですか、それとも機能ですか?
技術的には、このメソッドはファイルを書き込み、完了時に名前を変更しますが、ユーザーの観点からは何も削除していません...
バグの場合
:
NSArray や友人に対して、または ACL の実装に対して提出する必要がありますか?
どんな考えでも大歓迎です!
乾杯
ダニエル