![更新后,Thunderbird 无法在 Linux 下打开附件](https://linux22.com/image/1548351/%E6%9B%B4%E6%96%B0%E5%90%8E%EF%BC%8CThunderbird%20%E6%97%A0%E6%B3%95%E5%9C%A8%20Linux%20%E4%B8%8B%E6%89%93%E5%BC%80%E9%99%84%E4%BB%B6.png)
我使用 Debian 不稳定版。更新系统后,Thunderbird 突然无法再打开附件 - 什么都没发生,但文件存储在 中/tmp/mozilla...
。通常,evince
(或firefox-bin
,又名 Firefox quantum)会在我的计算机上正常打开。
通过命令行打开 Thunderbird 时,打印了以下错误消息:
(thunderbird:25364): Gtk-WARNING **: Attempting to read the recently used resources file at '/home/jenserat/.local/share/recently-used.xbel', but the parser failed: Datei »/home/jenserat/.local/share/recently-used.xbel« konnte nicht geöffnet werden: Keine Berechtigung.
(thunderbird:25364): GVFS-WARNING **: can't init metadata tree /home/jenserat/.local/share/gvfs-metadata/root: open: Keine Berechtigung
(thunderbird:25364): GVFS-WARNING **: can't init metadata tree /home/jenserat/.local/share/gvfs-metadata/root: open: Keine Berechtigung
(thunderbird:25364): Gtk-WARNING **: Attempting to read the recently used resources file at '/home/jenserat/.local/share/recently-used.xbel', but the parser failed: Datei »/home/jenserat/.local/share/recently-used.xbel« konnte nicht geöffnet werden: Keine Berechtigung.
(“Keine Berechtigung” 在德语中意为“拒绝许可”)
答案1
此问题是由最近支持 App Armor 的 Debian 内核和系统附带的 App Armor 规则过于严格并拒绝evince
访问最近使用的文件(使用 打开附件时会更新evince
)引起的。此问题还在Debian 错误报告 #882782并且也可能影响其他Linux发行版。
解决方案是安装 App Armor 工具包(sudo apt install apparmor-utils
然后使用 调整 App Armor 配置文件sudo aa-logprof
)。该工具将显示以下观察结果(可能会打印更多结果,这些结果将表明其他问题,在我的情况下是第一个):
$ sudo aa-logprof
Reading log entries from /var/log/audit/audit.log.
Updating AppArmor profiles in /etc/apparmor.d.
Profile: thunderbird
Execute: /usr/bin/evince
Severity: unknown
(I)nherit / (C)hild / (P)rofile / (N)amed / (U)nconfined / (X) ix On / (D)eny / Abo(r)t / (F)inish
输出意味着当thunderbird
配置文件处于活动状态时,/usr/bin/evince
即将执行但失败了。
您现在可以决定是否:
(我) 继承 Thunderbird 的配置文件(这意味着 Thunderbird 的限制也将适用于
evince
,这将无法正确匹配),或(C)hild 将应用的
evince
配置文件(如果可用)<-这就是我们所寻找的。...
最后,选择(F)finish 完成编辑。
如果您使用其他工具读取日志,提示可能会略有不同。
未来的 Thunderbird 更新应该会带来更好的 App Armor 配置文件,但这只是目前的一个合适的解决方法(并且在安装更好的配置文件后不会在未来造成危害)。
值得注意的是,手册页aa-logprof
仅提到此菜单:
(A)允许,(D)拒绝,(I)忽略,(N)新,(G)最后一块,(Q)退出
但它似乎不适用于这种情况。也许手册页会在某个时候更新,以更好地解释这一点。
答案2
对于 Ubuntu,原因可能是您打开了 Thunderbird 或其他应用程序的 snapd 版本附件。
在这种情况下,根据那线:
/tmp 不再是“全球通用的可访问位置”
作为解决方案,您必须覆盖 TMP
Thunderbird 进程的环境变量。例如,创建一个名为的文件~/bin/thunderbird
:
#!/usr/bin/env bash
TMP=$HOME/Downloads /usr/bin/thunderbird "$@"
使其可执行:
chmod +x ~/bin/thunderbird
现在您应该能够双击附件并使用其他 snapd 应用程序(如 Chromium 或 OpenOffice)打开它们。