运行 snap 应用程序时,我收到权限被拒绝错误,其中我的主目录安装在不允许 root 写入的 nfs 挂载点上。这不是一个不寻常的配置,所以我认为这是一个错误。
错误信息:
cannot create user data directory: /home/tcumming/snap/vlc/4: Permission denied
ubuntu 16 也遇到了同样的问题。
根据要求提供更多信息:
使用 ubuntu,“Ubuntu 软件”,我安装了一个 snap 应用程序(例如,vlc)。当我尝试运行它(从命令行)时,我收到上面的“权限被拒绝”消息。
我刚刚在机器上重新安装了 Ubuntu,因此操作系统没有出现任何问题。我保留了我的 uid:gid,这样我就可以挂载我之前的 nfs 共享。
这是不是挂载点或 nfs 存在问题。出于安全原因,我们的挂载点不是 root 可写的。
我想问题是,我应该提交错误报告吗?我的下一步是什么?
答案1
我遇到这个问题是因为我的主目录是符号链接/home/$USER
到另一个挂载点的。我按照以下建议修复了这个问题当 /home 位于其他地方时,快照不起作用。
简而言之,您需要将非标准主目录添加到 apparmor 的HOMEDIRS
变量中:
$ sudo dpkg-reconfigure apparmor
或者:/etc/apparmor.d/tunables/home.d/
创建一个指向你的主目录的挂载点的文件:
@{HOMEDIRS}+=/mnt/hdd/.home/
然后,为了保险起见,您应该删除 apparmor 的缓存并重新启动:
$ sudo rm -f /etc/apparmor.d/cache/* /var/cache/apparmor/snap.*
$ sudo reboot
答案2
Ubuntu 18.04 中也发生了同样的情况。
如果用户主目录不在/home
(或/
) 挂载下,则无法使用snap
。我的 HOMEDIR 位于另一个本地 SSD 磁盘上,但由于它未挂载在 下/home
,因此通过 snap 安装的每个包都会失败。
由于 Canonical 正在转向支持 snap,你将不得不放弃这些好东西,比如其他文件系统上的 HOMEDIR、通过 NFS 挂载的等等。
也许 snap 将来会更加灵活,但这不是优先事项: https://forum.snapcraft.io/t/how-can-i-use-snap-when-i-dont-use-home-user/3352/6
现在的解决方法是从包中删除snap
和安装东西。*.tar.gz
*.deb
答案3
您可以从软件商店设置 Snap 应用程序的权限。
以下步骤在 Ubuntu 20.04 LTS 上测试:
- 开放软件
- 选择“已安装”选项卡。将会出现已安装软件的列表。
- 选择需要提升权限的 snap 包。
- 在详细视图中,单击“权限”按钮。
- 点击‘读取/写入可移动存储设备上的文件’旁边的切换按钮。
此方法适用于已安装的硬盘。
参考:
答案4
我们使用域和领域,所以我们的首页路径不是 /home,而是 /home/MYDOMAINCOMPANY/。我通过编辑 /etc/apparmor.d/tunables/home.d/ubuntu 并添加以下行来修复此问题:@{HOMEDIRS}+=/home/MYDOMAINCOMPANY/
保存后,只需重新启动一些服务:systemctl restart apparmor.service snapd.apparmor.service snapd.service snapd.socket