我有一个OS X应用程序,我使用NSOpenPanel
从用户请求应用程序范围的安全书签 - 这很有用。
现在我也要删除该文件 - 这适用于所有文件,除了那些存储在系统位置的文件,例如/private/var/log
。即使用户授予我一个(不是陈旧的)安全书签。
是否有任何权利允许我从这些位置删除用户选择的文件?
仅供参考,设置以下权利:
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<array>
<string>/.Trash</string>
</array>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
干杯!
答案 0 :(得分:0)
系统位置中的大多数文件属于用户root
,没有其他人拥有写入权限。为了删除这些文件,他们需要设置适当的权限。您可以使用终端来检查:
cd /private/var/log
ls -la
仅仅因为您的应用程序拥有沙盒的权限并不意味着它具有文件系统写入和删除的权限。很抱歉地说。
答案 1 :(得分:0)
我相信您所需要的只是访问文件的(父)目录,因为它是删除文件时修改的目录。
我假设您可以使用当前使用的相同权限授予机制来执行此操作。
当然,用户自己没有对系统中所有文件的读/写访问权限,因此这将限制删除系统文件的能力。如果您想删除那些,那么您需要实现权限提升。