Я хочу, чтобы пользователи запускали пользовательские программы на моем веб-сервере без ущерба для безопасности. Я пробовал установить плескаться в течение нескольких дней на сервер amd64 на Debian Etch (с использованием веб-хостинга Dreamhost), но во многих случаях не выполнялся при компиляции из исходников.
Есть ли другие предлагаемые программы-песочницы?
Например:
shobj/rtld-libc.a(rtld-bsd-_setjmp.os): In function `_setjmp':
../sysdeps/x86_64/bsd-_setjmp.S:35: undefined reference to `__GI___sigsetjmp'
/usr/bin/ld: shobj/rtld-libc.a(rtld-bsd-_setjmp.os): relocation R_X86_64_PC32 against `__GI___sigsetjmp' can not be used when making a shared object; recompile with -fPIC
Обычные решения для песочницы включают либо chroot()
или какой-либо тип (пара-) виртуализации, такой как VMWare или Пользовательский режим Linux. Однако для обоих вариантов требуется root-доступ (Редактировать: UML может работать без корневого доступа).
Тем не менее, это, вероятно, самый простой способ (зрелое программное обеспечение, широко распространенное, много документации), поэтому я согласен с предложением womble попробовать и получить какой-нибудь хостинг, который дает вам root-доступ.
Если root-доступ невозможен, ваш единственный вариант, вероятно, - ограничить пользователей на уровне приложения.
Многие среды выполнения (Java, PHP, Apache) позволяют налагать некоторые ограничения на запускаемые ими программы, например позволяют ограничить объем памяти, который может использовать процесс, или его максимальную продолжительность. Вы можете попробовать это; то, что возможно, будет зависеть от того, какие программы вы хотите разрешить. Это менее безопасно, чем chroot / виртуализация, но может быть достаточно в зависимости от ваших потребностей в безопасности.
BTW: Как вы предоставляете пользователям безопасный доступ? Как я полагаю, вы не можете создавать учетные записи пользователей?
Plash не работает: «Plash эффективно отключает эти системные вызовы, помещая изолированный процесс в минимальную тюрьму chroot ()» - chroot требует привилегий root. Я почти уверен, что без корневого доступа вы не сможете этого сделать, потому что все, что вы можете сделать, процесс, который вы пытаетесь изолировать, может отменить (взлом LD_PRELOAD и т. Д.). Я куплю вам дешевый VPS делать иметь root-доступ и запускать их там. За 20 долларов в месяц (или меньше) это трудно не оправдать, особенно если вы потратили несколько дней не получается с плеском. Сколько стоит ваше время?
как насчет их настройки с помощью chroot? Это позволит вам изменить их определение root (возможно, в каталог пользователей), и тогда они смогут работать с ним.