Evince 无法保存文件,提示“权限被拒绝”

Evince 无法保存文件,提示“权限被拒绝”

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

Could not create directory /home/[username]/Documents/foo: Permission denied

Evince 也拒绝保存文件,并显示同样的消息。

我正在运行 Ubuntu 12.04 和 evince 3.4.0。我还应该提到,这/home是一个符号链接(文件系统分布在固态驱动器和 HDD 上;有点像实验)。这不会影响任何其他应用程序。根据,/media/hdd/homeEvince 以我的身份运行,并且应该对 具有写入权限。/media/hdd/home/username/Documentsls -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

答案1

我遇到了同样的问题并解决了:

$ sudo apt-get install apparmor-utils
$ sudo aa-complain /usr/bin/evince

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

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

答案2

在我的情况下,我的主目录是指向网络共享的符号链接,但该共享未安装在 中/home。这导致 Apparmor 拒绝创建目录。我通过将我的真实主目录路径添加到 Apparmor 配置中的主目录路径集来解决这个问题:

echo '@{HOMEDIRS}+=/myrealhomedir/' > /etc/apparmor.d/tunables/home.d/somename
sudo dpkg-reconfigure apparmor

答案3

当我改变挂载 Samba 共享的方式时,我遇到了同样的问题。如果你使用“标准” Nautilus 方式访问网络共享上的文件,Nautilus 会将共享挂载在

/run/user/

或者

~/.local/share/gvfs-metadata/

Apparmor 设置为接受这些目录。但是如果您自己在另一个目录中安装共享,它将不起作用。因此我们必须将整个网络共享添加到授权目录列表中。

这很好解释在 Ubuntu 帮助页面。 虽然user1225999 的回答作品,第一行是不需要的,因为目的

sudo dpkg-reconfigure apparmor

允许您键入共享路径以将其添加到主目录路径。该命令将添加路径到

/etc/apparmor.d/tunables/home.d/ubuntu

文件(该文件已经存在)。

相关内容