首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序沙箱: Python走出沙箱

应用程序沙箱: Python走出沙箱
EN

Stack Overflow用户
提问于 2015-12-22 16:21:21
回答 1查看 449关注 0票数 1

我正在编写一个Mac应用程序,该应用程序将文件作为输入,让用户执行元数据操作,然后将文件发送到Python脚本以处理输出。这真的很好,没有沙箱。就像所有的事情一样,沙井让事情变得很困难。

我嵌入在NSBundle中的python库正在调用系统拥有的一些MimeTypes库,但是这些库试图打开沙箱中没有的/etc/apache2/mime.types,并且错误地失败了:IOError: [Errno 1] Operation not permitted: '/etc/apache2/mime.types'

以下是我的权利:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
</dict>
</plist>

以下是完整的回溯:

代码语言:javascript
复制
Traceback (most recent call last):
File "/Users/thomaspritchard/Library/Developer/Xcode/DerivedData/Chapters-ejrappchxzcmqxdjlzydqffndmtk/Build/Products/Debug/Chapters.app/Contents/Resources/EditChaptersScript.py", line 3, in <module>
import eyed3        # ID3 Writer
File "/Users/thomaspritchard/Library/Developer/Xcode/DerivedData/Chapters-ejrappchxzcmqxdjlzydqffndmtk/Build/Products/Debug/Chapters.app/Contents/Resources/eyed3/__init__.py", line 91, in <module>
from .utils.log import log
File "/Users/thomaspritchard/Library/Developer/Xcode/DerivedData/Chapters-ejrappchxzcmqxdjlzydqffndmtk/Build/Products/Debug/Chapters.app/Contents/Resources/eyed3/utils/__init__.py", line 33, in <module>
_mime_types = mimetypes.MimeTypes()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetypes.py", line 66, in __init__
init()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetypes.py", line 358, in init
db.read(file)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetypes.py", line 202, in read
with open(filename) as fp:
IOError: [Errno 1] Operation not permitted: '/etc/apache2/mime.types'

提前感谢您的帮助,我真的很想在Mac中发布这个应用程序,但是我一直在这个问题上不择手段。

编辑:--我想也许我可以允许访问文件,通过临时例外待遇访问/etc/apache2/mime.types。使用此更新的应享权利plist,它退出时具有相同的错误:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
    <key>com.apple.security.temporary-exception.files.absolute-path.read-only</key>
    <array>
        <string>/etc/apache2/mime.types</string>
    </array>
</dict>
</plist>

有趣的是,如果我使用绝对路径/,而不是/etc/apache2/mime.types,它可以工作,但在地狱中,苹果不可能允许在Mac!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 19:31:47

发现了问题。在OS中,设置/etc/的权限似乎存在一个问题,当它包含一个符号链接时!我把它改成了/private/etc/,现在起作用了。

感谢这个答案帮助我找到答案。

编辑:苹果工程师说这是一个适当的例外使用,并关闭了我的雷达。如果你有同样的问题,参考雷达:#24011257

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34420174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档