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

1287
Emanuele

Только что установил 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

5
Вы забыли добавить флаг `--private` в Firejail. Правда, страница `man` сообщает о том, что только / home и / tmp доступны для записи. Вы уверены, что не пытаетесь это под своим домом? Или папка / диск, смонтированный под вашим домом или что-то в этом роде? Проверка справочной страницы также полезна, для Firejail существует множество различных опций. `man firejail` и посмотрите, какие еще аргументы вам могут понадобиться. Shiki 7 лет назад 0
@Shiki `/ disk5 / ...` монтируется за пределами моего дома, поэтому я очень удивлен ... Emanuele 7 лет назад 0

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

1
VasyaNovikov

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 директивы.

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

-3
joegasca

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

Я не могу, особенно если это программное обеспечение сторонних производителей, такое как игры от _steam_, мои собственные скомпилированные исполняемые файлы, которые я разрабатываю / собираю, и т. Д. И т. Д. ... Я бы не стал и не мог определенно установить их в системе бен пути ... Emanuele 7 лет назад 4

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