2012-02-27 3 views
1

Это мнимый пример того, что я люблю делать. Не воспринимайте это слишком буквально.Могу ли я загрузить библиотеку или процесс с ограниченными разрешениями?

Скажите, что мой процесс запускается как www-data, и у меня есть сценарий lua под названием thedevil.lua. Он попытается удалить, испортить и вызвать как можно больше проблем. Я хотел бы запустить процесс (или загрузить общий объект), который имеет интерпретатор lua, и он попытается разрушить все мои веб-сайты, поскольку пользователь является www-данными.

Есть ли способ, который я могу сказать, позволяет создать этот процесс (или загрузить библиотеку) с правами LIMITED. Скажем, скрипт находится в /var/www/devilscript/thedevil.lua. Я бы хотел дать ей разрешения для /tmp/www/devilscript и /var/www/devilscript/. Это возможно? Я не хочу создавать нового пользователя с именем devilscript и давать ему ограниченные разрешения, кроме запуска процесса как этого пользователя. Я просто хочу сказать, что я www-data, но я хочу только дать этому процессу/lib подмножество того, что я могу сделать.

-edit- Не могли бы вы дать мне имя функций для выполнения указанного так или двоичного с более низкими разрешениями?
-edit2- Могут ли окна делать что-то вроде того, что я спросил?

ответ

2

Да, в зависимости от операционной системы, в которой вы работаете, существуют различные методы песочницы, доступные в современных Unix-системах. Это немного зависит от того, на котором вы работаете. В Linux почти слишком много - SELinux, Apparmor, Tomoyo и другие. FreeBSD имеет обязательную систему контроля доступа, а также систему возможностей Capsicum. Mac OS X также имеет систему песочницы.

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

Простейший способ сделать это ограничение привилегий в старых системах Unix - это «chrooting» процесс, то есть его запуск в ограниченной части файловой иерархии с использованием системного вызова chroot. К сожалению, это единственная по-настоящему портативная форма снижения привилегий, доступная в Unix-системах - вы, таким образом, сталкиваетесь с ней в конфигурационных системах многих системных демонов.

+0

Я использую C++, но не могли бы вы дать мне имя c-метода, который делает это? общая библиотека мудрая я только видел dlopen, и у этого не было этого варианта. Процесс мудрый я еще не смотрел. –

+0

К сожалению, это зависит как от точной ОС, так и от версии той операционной системы, которую вы используете, и даже в этом случае используемые методы неприятно усложняются. Боюсь, это потребует руководства. Если вы обнаружите свою ОС в приведенном выше листинге, попробуйте найти руководства для этой конкретной ОС - например, в Linux вы можете проверить, поддерживает ли ваша система SELinux или Apparmor, или что у вас есть, и обратитесь к руководству. – Perry

+1

arg. Я не хотел chroot (чего я еще не сделал до этого) или создавал пользователей bc, может быть тысячи, и проект (который динамически создается) может переименовать. Это было бы так просто, если бы я мог сказать, что этот exe работает как виртуальный пользователь или я-но-ограниченный. -edit- я использую debian, но я надеялся, что linux сделает это изначально. –

1

SELinux позволит вам создать домен, который имеет ограниченный доступ к различным контекстам и ресурсам файлов, независимо от того, какой пользователь выполняет процесс (даже root).

+0

Могу ли я получить дополнительную информацию. Я буду читать скрипт с таким путем или bin, который мне нужно выполнить. Как выполнить его с ограниченными правами. Какую функцию я просматриваю на страницах руководства? –

+0

Это не просто функция. Для этого вам нужно создать модуль SELinux. –

+0

arg :(Это звучит болезненно. –

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