Я пытаюсь изолировать определенный процесс Python, предоставляя ему доступ только к сетевым соединениям и определенному количеству файлов в файловой системе. Я следовал инструкциям на сайт документации сообщества Ubuntu и проект Chromium статья об их песочнице.
Однако я хочу заблокировать только некоторые процессы Python. Чтобы обойти это, я привязал исполняемый файл Python к другому месту (назовите его python sandbox
) и применил к нему профиль AppArmor.
Когда я запускаю python-sandbox
, Я все еще могу открывать произвольные файлы в файловой системе и читать из них. В чем дело? Я сделал следующее:
Создал профиль AppArmor следующим образом:
#include <tunables/global>
/opt/python-sandbox {
#include <abstractions/base>
#include <abstractions/fonts>
/proc/** r,
/usr/lib/python2.7/** r,
/usr/local/lib/python2.7/** r,
network,
}
Скопировал его в /etc/apparmor.d/
каталог с названием opt.python-sandbox
(поскольку символическая ссылка на /opt/python-sandbox
.
Бегать apparmor_parser /etc/apparmor.d/opt.python-sandbox
.
Я сделал что-то не так? Стоит ли рассмотреть другой подход?
Ага! Я что-то упустил. Видимо известно, что AppArmor вообще не работает с символическими ссылками. Копирование исполняемого файла Python в / opt / python-sandbox работало нормально.