当单个 Firefox 安装运行多个配置文件时,是否有办法为每个 Firefox 配置文件创建 AppArmor 配置文件?或者更一般地说,对于支持多个配置文件的任何应用程序,Thunderbird 等。通常,我为这些应用程序找到的所有 AppArmor 配置文件仅包含整个应用程序,除非我错过了某些内容。
通常,您使用命令行参数启动 Firefox 或 Thunderbird 来指定不同的配置文件。但是,我在 AppArmor 配置文件语法中找不到任何与应用程序参数匹配的内容。
我知道 libvirt 通过为每个虚拟机创建 AppArmor 配置文件来以某种方式实现此目的,因此必须有某种方法。
答案1
AppArmor 通过可执行文件运行。它无法确定 Firefox 已加载不同的配置文件,因此它应该使用不同的 AppArmor 配置文件。
AppArmor确实支持改变规则,这允许应用程序更改适用于它的配置文件。预期的用例正是为了允许应用程序在完成初始化并确定在此特定实例中需要访问的内容后切换到更具限制性的配置文件。因此,如果 Firefox 具有 AppArmor 感知能力,则可以为其指定change_profile
规则,并在确定要运行的配置文件后应用转换。据我所知,这还没有完成。
无需编程,您可以做的就是制作firefox-bin
可执行文件的多个副本或硬链接,并为每个文件定义不同的配置文件(AppArmor 基于可执行文件的路径,因此不同的硬链接不需要使用相同的配置文件,这与 SELinux 不同。基于 inode)。这需要 root 并且不太方便,这就是 AppArmor 中添加更改配置文件功能的原因。
答案2
我不确定,但据我了解,我认为:不。
Apparmor 可以区分不同的
- 应用
- 文件系统路径
- 用户/组
为了针对不同的应用程序配置文件具有不同的 apparmor 行为,您必须为每个 apparmor 行为创建不同的用户。
就像 Android 对不同“用户”下的所有应用程序进行沙箱处理一样。
答案3
答案4
非常简单,我的朋友。创建一个名为 firefox-(putProfileNameHere) 的硬链接:
cd /data/usr/lib/firefox/
sudo ln firefox /usr/bin/firefox-default
sudo ln firefox /usr/bin/firefox-1b58iygj
#etc etc etc
创建多个 App Armor 配置文件:
cd /etc/apparmor.d
cp usr.bin.firefox usr.bin.firefox-default
cp usr.bin.firefox usr.bin.firefox-1b58iygj
#etc etc etc
根据需要修改每个配置文件。
在 /usr//share/applications 中创建不同的 .desktop 文件(或使用 Alacarte 或 KDE 等菜单管理器??)启动自定义二进制文件+相关配置文件:
firefox-default
firefox-1b58iygj --profile /home/<yourUserID>/.mozilla/firefox/1b58iygj
#etc etc etc
玩得开心。