Как firejail создает свой черный список по умолчанию?

461
allo

Когда я начинаю firejail, я вижу мой полный домашний каталог. Когда я начинаю firejail --whitelist=~/something, я вижу только somethingв моем доме. Теперь я хотел бы ограничить больше доступа к системе. Я могу, например, добавить, --blacklist=/mediaи это работает, как ожидалось.

Но как поведение по умолчанию определяет, что /home/OTHERUSERи /home/*кроме белого списка файлов скрыто? Я не вижу подходящего правила в /etc/firejail/*.

И допустимы ли подкаталоги? Например --blacklist=/media --whitelist=/media/data, не работает должным образом, даже когда man-страница сообщает, что белый список переопределяет другие параметры, такие как --read-only.

Эти правила жестко запрограммированы в двоичном коде? Если нет, какое правило делает эти вещи?

Пример того, что я хотел бы иметь. Основные правила:

  1. Дом пуст, кроме вещей, перечисленных в профиле
  2. Черный список /media/data
  3. Разрешить символическую ссылку ~/apps ->/media/data/appsтолько для чтения.
  4. Разрешить /media/data/apps(если необходимо) только для чтения.

1, 2 работают, 3 работает только с 4 (вероятно, все в порядке), но переопределение прав на чтение для подкаталога запрещенного каталога не работает.

Кажется, это немного противоречит интуитивному пониманию того, что это должно работать, но на уровне файловой системы mkdir -p foo/bar;chmod 111 foo;ls foo/bar/(где 111означает, что у foo нет разрешения на чтение (dir-list), но работает только исполняемый бит (вход в подкаталоги), даже когда происходит ls foo/сбой.

Расширенный сценарий запретил бы все, кроме белого списка (профиль + / usr, / bin, / lib и т. Д.). Другая вещь, которая не представляется возможной без root (а затем само приложение запускается от имени root), это заменить ie / etc / passwd на тот, который не содержит пользователей, что не должно быть известно в тюрьме. /etcсодержит довольно много читаемых данных, которые должны быть скрыты от ненадежных приложений.

Но, возможно, расширенный сценарий действительно оправдал бы полный контейнер chroot + userspace-lxc.

1
Жесткие коды Firejail - много правил в двоичном коде, это правда. Он различает / home / user, / tmp, /tmp/.X11-unix, / dev и множество других специальных директорий. О `whitelist` - он переопределяет только` read-only`, а не `blacklist`. VasyaNovikov 6 лет назад 1
Я видел, что есть дополнительная опция `` noblacklist``, но, похоже, она не работает для всех вещей, которые вы можете захотеть сделать. Я добавляю полный сценарий к вопросу. allo 6 лет назад 0

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

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