Ожидается ли, что firejail разрешает R/W вне песочницы без флага "--overlay"?
Только что установил firejail в Ubuntu 16.04 (версия 0.9.38) и, согласно этой статье в журнале linux, по умолчанию он должен выполнять R/O для всей файловой системы:
Программы в песочнице имеют доступ только для чтения ко всем каталогам и поэтому не могут манипулировать какими-либо важными файлами.
Теперь я попробовал следующее на моем компьютере:
touch /disk5/test.txt
firejail gvim /disk5/test.txt
- изменить файл и сохранить его (
wq!
) cat /disk5/test.txt
- отображает изменения, сделанные 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, и вы будете в безопасности.