如何为在 snap 下运行的 Firefox 的 AppArmor 添加额外的下载目录?

如何为在 snap 下运行的 Firefox 的 AppArmor 添加额外的下载目录?

我最近更新到了 Ubuntu 22.04.1,并访问了一个我偶尔会从中下载东西的网站。我通常将此网站上的文件保存到与我家庭网络上的另一个系统共享的 sshfs 挂载中,该挂载位于路径之外~/Download,但作为我的子目录挂载$HOME

我第一次尝试下载时 Firefox 冻结了,我最终意识到它被 AppArmor 阻止了。当第二次发生这种情况时,我停止了 AppArmor 服务,Firefox 解冻了,但它仍然收到权限被拒绝错误。

以下是dmesg初始故障的一些示例审计消息:

[Mon Dec 12 09:56:59 2022] audit: type=1400 audit(1670596598.697:172985): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/etc/fstab" pid=1048673 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Mon Dec 12 09:57:00 2022] audit: type=1107 audit(1670596598.829:172986): pid=1076 uid=102 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/hostname1" interface="org.freedesktop.DBus.Properties" member="GetAll" mask="send" name=":1.32040" pid=1048673 label="snap.firefox.firefox" peer_pid=1366885 peer_label="unconfined"
[Mon Dec 12 09:57:00 2022] audit: type=1107 audit(1670596598.829:172988): pid=1076 uid=102 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/hostname1" interface="org.freedesktop.DBus.Properties" member="GetAll" mask="send" name=":1.32040" pid=1048673 label="snap.firefox.firefox" peer_pid=1366885 peer_label="unconfined"
[Mon Dec 12 09:57:08 2022] audit: type=1400 audit(1670596606.925:172990): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/home/mike/sshfs/filename.txt" pid=1048673 comm="firefox" requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1006
[Mon Dec 12 09:57:08 2022] audit: type=1400 audit(1670596606.925:172990): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/home/mike/sshfs/filename-1.txt" pid=1048673 comm="firefox" requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1006
[Mon Dec 12 09:57:08 2022] audit: type=1400 audit(1670596606.925:172990): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/home/mike/sshfs/filename-2.txt" pid=1048673 comm="firefox" requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1006
[...previous message repeats many times with an incrementing number on the filename...]

(令人恼火的是,这次失败最终创建了数万个零长度文件)

执行完之后systemctl stop apparmor,消息发生了一些变化,不再无休止地重复,但我得到了一个非常直接的否认:

[Mon Dec 12 10:02:58 2022] audit: type=1400 audit(1670596957.682:187529): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/home/mike/sshfs/" pid=1366974 comm="pool-firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1006
[...snip some dbus-related messages...]
[Mon Dec 12 10:03:10 2022] audit: type=1400 audit(1670596969.158:187537): apparmor="DENIED" operation="open" profile="snap.firefox.firefox" name="/home/mike/sshfs/filename.txt.part" pid=1366974 comm=4261636B67726F7E506F6F6C202332 requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1006
[Mon Dec 12 10:03:10 2022] audit: type=1400 audit(1670596969.166:187538): apparmor="DENIED" operation="unlink" profile="snap.firefox.firefox" name="/home/mike/sshfs/filename.txt.part" pid=1366974 comm="firefox" requested_mask="d" denied_mask="d" fsuid=1000 ouid=1006

如何为 Firefox 添加额外目录以使其具有写入权限?与本地文件系统上的某些内容相比,sshfs 路径是否需要进行任何特殊操作?

答案1

我在这里看到了另一个关于使用 AppArmor 授予额外文件/文件夹权限的答案,所以我相信这也适用于你(但我不是 AppArmor 规则专家)。

请尝试以下操作:

  • 添加本地覆盖/etc/apparamor.d/local/usr.bin.firefox

    sudo nano /etc/apparmor.d/local/usr.sbin.firefox
    
  • 为您要访问的目录添加此行:

    /home/mike/sshfs/ rw,
    

    (如果您想要更多目录,可以添加几行。)

  • 保存并退出 nano Ctrl+ XY然后Enter

  • 为 Firefox 重新加载 AppArmor 条目:

    sudo apparmor_parser -r /etc/apparamor.d/local/usr.bin.firefox
    
  • 最后重新启动 Firefox。

希望这将允许访问该文件夹。

相关内容