Вопрос или проблема
Как мне заблокировать одну директорию [a] и разрешить доступ к другой директории [b], где [b] находится внутри [a]?
Я пытаюсь понять, как выполнить профиль Firefox в firejail так, чтобы он не видел другие профили Firefox.
Профили Firefox находятся в следующей директории:
$HOME/.mozilla/firefox/<profile_id>/
Предположим, у меня есть два профиля
user@host:~$ ls ~/.mozilla/firefox/
everyday_profile
firejailed_profile
user@host:~$
Я пытался выполнить firefox в firejail, где ~/.mozilla/firefox/firejailed_profile
находится в белом списке, а ~/.mozilla/firefox/everyday_profile
в черном списке, но это не сработало.
# это не работает
firejail --whitelist="$HOME/.mozilla/firefox/firejailed_profile" --blacklist="$HOME/.mozilla/firefox/*" firefox
К сожалению, когда я выполняю вышеуказанную команду, firefox не может найти никакой профиль firefox.
Как мне исправить команду firejail
выше, чтобы белый список имел приоритет над черным списком (чтобы дочерняя директория была в белом списке, а родительская директория — в черном списке)?
Ответ или решение
Чтобы заблокировать родительский каталог и разрешить доступ к дочернему каталогу в Firejail, необходимо использовать правильные параметры командной строки. В вашем случае каталоги находятся в следующем пути:
$HOME/.mozilla/firefox/
И у вас есть два профиля:
everyday_profile
– этот профиль должен быть заблокирован.firejailed_profile
– этот профиль должен быть разрешен для доступа.
Вы можете использовать параметры --whitelist
и --blacklist
, чтобы детализировать, какие каталоги должны быть доступны, а какие заблокированы. Однако проблема заключается в том, что Firejail не позволяет видеть дочерние каталоги, если родительский каталог заблокирован. Поэтому, вам нужно выполнить следующее:
- Добавьте родительский каталог в черный список, но при этом явно переключите доступ к дочернему каталогу. Для этого можно использовать флаг
--blacklist
для родителя, а затем--whitelist
для дочернего слоя с добавлением опции, позволяющей обойти родительский черный список.
Вот команда, которая должна работать:
firejail --whitelist="$HOME/.mozilla/firefox/firejailed_profile" \
--blacklist="$HOME/.mozilla/firefox/everyday_profile" \
--private="$HOME/.mozilla/firefox/" \
firefox
Обратите внимание на следующие моменты:
- Указание
--blacklist
для конкретного профиляeveryday_profile
, что заблокирует доступ к нему. - Использование
--whitelist
, чтобы явно разрешить доступ кfirejailed_profile
.
Теперь, если вы запустите Firefox с этой командой, он должен иметь доступ только к профилю firejailed_profile
, не видя everyday_profile
. Убедитесь, что Firejail установлен и правильно сконфигурирован на вашем компьютере.
Если вы все еще сталкиваетесь с проблемами, рекомендую ознакомиться с документацией Firejail или проверить наличие дополнительных ограничений конфигурации, которые могут влиять на поведение программы.