使用应用范围的安全书签从系统位置删除文件
Delete file from system location with app-scoped security bookmark
我有一个 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/>
干杯!
系统位置中的大部分文件属于用户root
,其他人没有写权限。为了删除此类文件,他们需要设置适当的权限。您可以使用终端进行检查:
cd /private/var/log
ls -la
仅仅因为您的应用程序具有沙盒权限并不意味着它具有文件系统的写入和删除权限。不好意思说。
我相信您只需要访问文件的(父)目录,因为它是删除文件时修改的目录。
我假设您可以使用您当前使用的相同权限授予机制来执行此操作。
当然用户自己没有read/write访问系统中所有文件的权限,因此删除系统文件的能力将受到限制。如果你想删除那些,那么你需要实施权限升级。
我有一个 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/>
干杯!
系统位置中的大部分文件属于用户root
,其他人没有写权限。为了删除此类文件,他们需要设置适当的权限。您可以使用终端进行检查:
cd /private/var/log
ls -la
仅仅因为您的应用程序具有沙盒权限并不意味着它具有文件系统的写入和删除权限。不好意思说。
我相信您只需要访问文件的(父)目录,因为它是删除文件时修改的目录。
我假设您可以使用您当前使用的相同权限授予机制来执行此操作。
当然用户自己没有read/write访问系统中所有文件的权限,因此删除系统文件的能力将受到限制。如果你想删除那些,那么你需要实施权限升级。