Я, никогда не имею не устанавливают chroot-заключенную-в-тюрьму среду прежде, и я боюсь, что нуждаюсь в некоторой помощи, чтобы сделать это хорошо.
Для объяснения вскоре, о чем это - все: у Меня есть веб-сервер, в который пользователи отправляют сценарии Python для обработки различных файлов, которые хранятся на сервере (система для цели Исследования). Каждый день задание крона запускает выполнение загруженных сценариев через команду этого вида:
/usr/bin/python script_file.py
Все это действительно небезопасно, и я хотел бы создать тюрьму, в которой я скопирую необходимые файлы (загруженные сценарии, файлы для обработки, двоичный файл Python и зависимости).
Я уже посмотрел на различные утилиты для создания тюрем, но ни один из них не казался актуальным или испытывал недостаток в основательной документации (т.е. ссылки, предложенные в том, Как я могу запустить недоверяемый скрипт Python),
Кто-либо мог вести меня к эффективному решению моей проблемы? как рабочий пример сценария, который создает тюрьму, помещает некоторые файлы в него, и выполняет сценарий Python?
Большое спасибо.
Вы нуждаетесь в debootstrapchroot, проверяете инструкции относительно установки Вашего chroot: https://wiki.kubuntu.org/DebootstrapChroot
Вам было бы нужно довольно много библиотек в Вашем chroot, и это не будет препятствовать тому, чтобы кто-то установил сервер сокета. Поскольку необходимо позволить сценариям Python работать, который означает полный доступ к стандартным модулям Python, как сокет, и т.д. Я действительно не вижу то, что Вы сможете защитить с этим chroot?
Если пользователь может создать сервер сокета, он сможет соединить в этом chroot и получить доступ/изменить к чему-либо.
Даже простой сценарий как os.system('rm -rf /')
не может быть предотвращен и представил бы Вашу неприменимую тюрьму.
Возможное решение состояло бы в том, чтобы использовать модуль как TOMOYO, который может быть настроен для предотвращения доступа на основе примитивов от ядра (открытый, запишите, и т.д.).