Ожидается ли, что firejail разрешает R/W вне песочницы без флага "--overlay"?

Только что установил firejail в Ubuntu 16.04 (версия 0.9.38) и, согласно этой статье в журнале linux, по умолчанию он должен выполнять R/O для всей файловой системы:

Программы в песочнице имеют доступ только для чтения ко всем каталогам и поэтому не могут манипулировать какими-либо важными файлами.

Теперь я попробовал следующее на моем компьютере:

  1. touch /disk5/test.txt
  2. firejail gvim /disk5/test.txt
  3. изменить файл и сохранить его (wq!)
  4. cat /disk5/test.txt
  5. отображает изменения, сделанные gvim во время сессии firejail !

Это ожидаемое поведение? Разве Firejail не должен был защитить меня от перезаписи исходного файла? Что я сделал не так? Обратите внимание, что /disk5 смонтирован в корневой файловой системе, вне моего /home,

Поднял ошибку на github

2 ответа

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

firejail --noprofile

Не даст никакой защиты вообще. Потому что вы не указали никаких ограничений, и firejail разрешает по умолчанию. Чтобы сделать некоторые каталоги доступными только для чтения, вы должны написать это явно. Что-то вроде:

firejail --noprofile --read-only=/ --read-only=~ --read-only=/tmp

(Я написал /, ~ а также /tmp отдельно, потому что firejail несколько удивительно ведет себя, сортируя ваши директивы по не совсем тривиальным правилам и создавая свои собственные ~ крепится посередине.)

Кроме того, без каких-либо --caps.drop=all аргументы, --seccomp и такие ваши программы не будут в безопасности в любом случае. Потому что процесс может взаимодействовать с другими процессами через сокеты Unix, абстрактные сокеты и т. Д., Используя их ошибки. Если вы хотите относительно нормальную "тюрьму", добавьте по крайней мере seccomp, caps.drop = all и nonewprivs директивы.

РЕДАКТИРОВАТЬ: цитата, которую вы упомянули, вероятно, просто неправильно. (Или я так думаю.) Это сложнее, чем просто "все только для чтения".

Зачем вам хранить ваши программы в нестандартном каталоге Unix, например /disk5? Вы определенно просите неприятностей. Храните ваши исполняемые файлы в обычных местах, таких как /bin, /usr/bin. /usr/local/bin или даже /opt. Убедитесь, что все ваши исполняемые файлы принадлежат пользователю root, а обычные пользователи не имеют доступа к ним. Linux - это система Unix, просто следуйте правилам Unix, и вы будете в безопасности.

Другие вопросы по тегам