2009-05-20 2 views
2

Возможно ли создать среду для безопасного запуска произвольных скриптов Python под Linux? Предполагается, что эти сценарии будут получены от ненадежных людей и могут быть слишком большими, чтобы проверять их вручную.Безопасная среда Python в Linux

Очень грубое решение состоит в том, чтобы создать виртуальную машину и восстановить ее начальное состояние после каждого запуска ненадежного скрипта. (Слишком дорого.)

Интересно, возможно ли ограничить доступ Python к файловой системе и взаимодействие с другими программами и так далее.

+0

Похожие Qs на песочницу/тюремное процессов в Linux или Unix: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/3859710/94687 * http://stackoverflow.com/q/4410447/94687 * http://stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 –

ответ

4

Рассмотрите возможность использования CHROOT острог. Это не только очень безопасно, хорошо поддерживается и проверено, но также применяется к внешним приложениям, которые вы запускаете с python.

2

Вы можете запустить jython и использовать механизм песочницы из JVM. Песочница в JVM очень сильная, очень хорошо понятная и более или менее хорошо документированная. Потребуется некоторое время, чтобы точно определить, что вы хотите разрешить, и что вы не хотите разрешать, но вы должны иметь возможность получить очень сильную защиту от этого ...

С другой стороны, jython не является 100 % совместимость с CPython ...

4

есть 4 вещи, которые вы можете попробовать:

  • Как уже упоминался, используя виртуальную машину или какую-либо другая форму виртуализации (возможно зоны достаточно легкие?). Если скрипт разбивает ОС, тогда вам все равно.
  • Использование chroot, который помещает сеанс оболочки в виртуальный корневой каталог, отдельно от основного корневого каталога ОС.
  • Использование systrace. Подумайте об этом как о брандмауэре для системных вызовов.
  • Использование «острог», который опирается на Systrace, давая каждому из тюрьмы его собственной таблицы процессов и т.д.

Systrace был взломан в последнее время, так что надо знать об этом.

1

Не могли бы вы просто запустить как пользователь, который не имеет доступа ни к чему, кроме скриптов в этом каталоге?

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