![沙盒在哪里停止?](https://linux22.com/image/1355823/%E6%B2%99%E7%9B%92%E5%9C%A8%E5%93%AA%E9%87%8C%E5%81%9C%E6%AD%A2%EF%BC%9F.png)
我使用 Mac App Store 中提供的 Norton iAntivirus 应用程序扫描了整个硬盘。正如预期的那样,它在硬盘根目录下显示一个“打开”对话框。我单击“打开”并让其进行扫描。这让我不禁想问... 如果用户在“打开”对话框中打开目录,这是否会让沙盒应用程序访问文件夹中的所有内容,即使特定用户可能无权访问其中某些内容?
答案1
沙盒只读或读写权限是沙盒运行时访问文件系统的额外要求。对于应用程序容器之外的任何项目,必须授予应用程序只读或读写权限 - 可以通过编译到应用程序中的权限静态授予,也可以通过用户选择文件或文件夹动态授予 -和用户必须对文件系统项具有适当的文件系统访问权限。
例如,如果用户使用标准文件对话框授予您的应用程序对另一个用户的公共文件夹的读写访问权限,则这不会改变用户只能读取公共文件夹的内容并写入所包含的 Drop Box 文件夹的情况。
根据适当的文件系统访问权限的要求,用户通过标准文件对话框授予文件夹沙盒访问权限即授予以该文件夹为根的整个文件层次结构的访问权限。
答案2
沙盒应用程序只能访问用户可以访问的内容。因此,如果用户在“打开”对话框中打开他们无权访问的文件夹,应用程序也将无法打开它。我在 OS X 10.8.3 上对此进行了测试。我给了我的用户禁止访问访问桌面上的文件夹的权限,在“打开”对话框中打开桌面,然后尝试将文件写入受限制的文件夹。操作失败,错误如下:您没有权限将文件“file”保存在文件夹“restricted”中。
我主要担心的是,沙盒是由沙盒守护进程管理的,sandboxd
而沙盒守护进程归 root 用户所有。因此,我担心这sandboxd
会让应用程序无限制地访问在“打开”对话框中打开的任何内容(因为 root 用户可以访问任何内容),但事实并非如此。