2014-05-20 1 views
3

Я хотел бы иметь возможность запускать ненадежные скрипты python для создания и сохранения изображений с использованием numpy и matplotlib. Это возможно?Можно ли использовать numpy в песочнице pypy и записывать файлы?

Итак:

  1. Могу ли я импортировать NumPy и Matplotlib при работе в PyPy песочнице? Я попытался скопировать каталог nump-пакетов в каталог temp sandbox, но когда я попытаюсь «импортировать numpy», я получаю эту ошибку: «ImportError: Нет модуля с именем _numpypy».

  2. Можно ли записать файл из песочницы pypy? Я думаю, что файл должен находиться внутри папки temp pypy sandbox, но даже тогда я получаю IOError: «IOError: [Errno 2] Нет такого файла или каталога: '/tmp/out.txt'".

Вот простой скрипт, я пытаюсь запустить в песочнице, untrusted.py:

# This import will fail. 
import numpy 

# This works fine. 
print 'SOMETHING' 

# This works fine. 
with open('/tmp/in.txt', 'r') as i: 
    print i.read() 

# This throws an IOError. 
with open('/tmp/out.txt', 'w') as f: 
    f.write('TESTING') 

Вот команда, я использую, чтобы запустить его:

./pypy/sandbox/pypy_interact.py --tmp=mydir ./pypy/goal/pypy-c untrusted.py 

Более подробная информация о pypy песочнице здесь: http://doc.pypy.org/en/latest/sandbox.html

Спасибо большое!

ответ

3
  1. _numpy модуля не включен по умолчанию с песочницей версии, потому что никто тщательно не проверил, что это безопасно, чтобы включить его. Грубо говоря, это должно быть be, но есть много деталей, которые могут пойти не так: например, может быть, некоторая неясная последовательность вызовов может привести к доступу из-за границы памяти (сравните это с методом песочницы, взятым на остальной части PyPy, который работает из коробки для всех внутренних манипуляций с объектами, потому что они выполняются на управляемых GC массивах, а не на необработанной памяти malloc(). Существует также риск того, что некоторая неясная функция, реализованная в библиотеке C, используемой _numpy, предложит злоумышленнику точку доступа. В целом я бы сказал, что подход не работает для _numpy (если только кто-то достаточно параноидальный, действительно будет проверять его безопасность после каждого неуправляемого изменения, что очень маловероятно). Подумайте об использовании песочницы на уровне ОС вместо обычного PyPy или CPython.

  2. Файловые записи - один из примеров большого предупреждения в документах, в котором говорится: «Сложная работа с стороны PyPy завершена - вы получаете полностью защищенную версию. Что только экспериментально и неполировано, так это библиотека, чтобы использовать эту изолированный PyPy от обычного интерпретатора Python (CPython или unsydboxed PyPy). Вклады приветствуются ».

 Смежные вопросы

  • Нет связанных вопросов^_^