Evince 不会保存文件,说“权限被拒绝”

Mat*_*att 5 permissions evince symbolic-link

如果我进入 evince 的保存对话框,转到/home/username/Documents我主目录中的 ,并尝试创建一个新目录(例如foo),操作将失败。埃文斯 说:

Could not create directory /home/[username]/Documents/foo: Permission denied
Run Code Online (Sandbox Code Playgroud)

Evince 也拒绝使用相同类型的消息保存文件。

我正在运行 Ubuntu 12.04 和 evince 3.4.0。我还应该提到这/home是一个符号链接/media/hdd/home(文件系统在固态驱动器和 HDD 上分开;有点实验)。这不会打扰任何其他应用程序。了Evince运行的我,应该有写权限/media/hdd/home/username/Documents,根据ls -l

dmesg 显示 evince 尝试创建目录,但被拒绝:

[10991.212472] type=1400 audit(1355983426.653:614): apparmor="DENIED"
operation="mkdir" parent=1 profile="/usr/bin/evince" name="/media/hdd/home
/username/Documents/foo/" pid=2940 comm="evince" requested_mask="c" denied_mask="c"
fsuid=1001 ouid=1001
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 8

我遇到了同样的问题并用以下方法解决了它:

$ sudo apt-get install apparmor-utils
$ sudo aa-complain /usr/bin/evince
Run Code Online (Sandbox Code Playgroud)

这会将 apparmor 配置文件更改为投诉模式。这意味着apparmor将在系统日志中抱怨应该被拒绝的每一个证据动作(根据配置文件)......但它仍然允许它。

当然,这不是最好的解决方案,因为整个配置文件都被“关闭”了。但由于我不知道如何说服 apparmor 允许 evince 对 ~ 之外的符号链接目标执行 mkdir (这就是拒绝的原因),这对我来说效果很好。