Как запустить процесс в Linux с ограниченными правами? - PullRequest
4 голосов
/ 20 июля 2010

Я бы хотел (из кода) запустить процесс с сильно ограниченными привилегиями.

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

(IЯ строю систему в виде сетки. Запущенный код может быть враждебным.)

Вот что я получил до сих пор ... - Заранее, создайте несколько пользователей, grid00-grid99.Назначьте каждому диску / памяти / ЦПУ квоту в соответствии с настройками.

Чтобы запустить процесс ...

  • Выберите неиспользуемого пользователя gridxx.
  • Создайте папку внутридомашняя папка пользователя.
  • Жесткая ссылка / bin, / usr и т. д. в этой папке.
  • Создайте новые папки / home / gridxx и / tmp в этой папке.
  • Скопируйте в файлы программы.
  • Переключитесь на пользователя gridxx.
  • chroot в новую папку.
  • Запустите новый процесс.

Я что-то пропустил?

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 20 июля 2010

Стандартные ограничения использования ресурсов (через ulimit) могут обрабатывать первые три, а SELinux может обрабатывать остальные три.Просто создайте новый домен для приложения, назначьте соответствующие разрешения, и все - и все (но не оно).

3 голосов
/ 20 июля 2010

Похоже, вы ищете что-то вроде FreeBSD jail .(Это, конечно, для FreeBSD, но на этой странице есть ссылки на похожие технологии для Linux.)

1 голос
/ 20 июля 2010

Этого можно добиться с помощью ulimit, chroot, дисковых квот и брандмауэра. Ограничить все формы «разговора» (МПК) сложно. В конце вы можете захотеть использовать набор виртуальных машин.

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