Могу ли я загрузить библиотеку или процесс с ограниченными разрешениями? - PullRequest
1 голос
/ 28 февраля 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

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

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

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

1 голос
/ 28 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...