Могу ли я создать изолированную программную среду для двоичного файла, созданного в C (с GCC) для Linux, и упростить его для пользователей?

356
ccoder987

Я собрал бинарный файл, который хочу распространить среди других людей.

Это закрытый исходный код, но я хочу предоставить пользователям двоичного файла уверенность в том, что он не сможет получить доступ к Интернету, микрофону, принтеру и т. Д. Он также не сможет читать / записывать файлы / каталоги в файловой системе, если они не предоставляют эта программа с доступом к этому файлу / каталогу явно.

Возможно ли это другими, более удобными для пользователя способами, чем указание пользователям использовать что-то вроде SELinux или AppArmor, где пользователь должен сделать что-то особенное для запуска двоичного файла (в отличие от простого ./program)?

0

2 ответа на вопрос

0
Dmitry Grigoryev

In order to have the confidence in your binary, users will need to use trusted tools to confine it. Any sandboxing tool you bundle with your binary should be considered as (un)trusted as the binary itself.

You could provide a human readable setup script that creates an appropirate chroot or AppArmor configuration. That way, your users will be able to audit the script themsleves and see that your binary is sandboxed properly.

0
orion

As @Dmitry said, if the application itself is closed source, you need to show the users at least the part that ensures the application is sandboxed, so they can inspect and even change the way of sandboxing (to adapt to their specific security setup). On top of a chroot, the application should also run as its own user (this can be done with setuid on the binary, which is transparent to users), with appropriately restricted access. With regard to sandboxing against various hardware (microphones, network,...), whatever part of this cannot be restricted by user permissions, would require at least lxc or a virtual machine. That makes things more complicated.

«Что касается« песочницы »против различного оборудования (микрофонов, сети и т. Д.), То какая бы часть этого не была ограничена пользовательскими разрешениями, потребовалась бы как минимум lxc или виртуальная машина. Это усложняет ситуацию». Разве SELinux или AppArmor не будут работать для этого? ccoder987 8 лет назад 0

Похожие вопросы