2012-03-25 5 views
2

Я работаю над приложением, написанным на C, которое должно запускать исполняемые файлы изнутри, из-за характера приложения мне нужно ограничить использование exe от чтения или записи чего-либо на компьютер.Песочница исполняемого файла в C

Как я могу ограничить доступ файла к файлу или его изменение на компьютере?

+3

Вы можете использовать тюрьму chroot. Я не уверен, есть ли кросс-платформенный способ сделать это, но для Mac/Linux это тривиально. – Blender

+0

Вам следует рассмотреть возможность запуска в виртуальной машине. –

+1

Вы можете попробовать [Capsicum] (http://www.cl.cam.ac.uk/research/security/capsicum/). – chrisaycock

ответ

0

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

Однако способ, который можно сделать, отличается в зависимости от системы: linux вы можете запустить useradd, и окна почти наверняка будут доступны через windows api.

3

Я не думаю, что это обязательно вопрос C.

Общей методикой является запуск программы в «chroot jail».

Если вы хотите сделать это самостоятельно из программы C, используйте системный вызов chroot (man 2 chroot).

Любой подход ограничивает выполнение программы в ограниченной (листовой или веточкой) части файловой системы. Это ограничивает программу до такой степени, что вы хотите поместить в этот каталог и подкаталоги. Он не может попасть в каталог, который был chroot'ed тоже, поэтому система относительно безопасна.

Это может занять довольно много заботы, чтобы правильно программировать, поэтому я бы рекомендовал сначала поэкспериментировать с командой chroot.

Не знаю, есть ли в Windows механизм simlar, но * NIX и Mac.

Если это «для реального», посмотрите на некоторые ссылки на разблокировку тюрьмы, например. http://www.unixwiz.net/techtips/chroot-practices.html

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