AppArmor:每个应用程序(Firefox、Thunderbird)是否可以有多个配置文件?句法?

AppArmor:每个应用程序(Firefox、Thunderbird)是否可以有多个配置文件?句法?

当单个 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

可以用本地档案,或者与独立的个人资料,或者与命名空间

本地配置文件定义为

profile /usr/bin/firefox//some-name {
}

未附加的配置文件定义为

profile Some.name {
}

命名空间配置文件定义为

profile :some-namespace:/usr/bin/firefox {
}

将非标准配置文件归因于进程可以通过进程本身change_profile(如已经回答的那样)或者借助 systemd(AppArmorProfile=要在服务单元中定义的属性)来实现。

答案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

玩得开心。

相关内容