记录一下今天的坑: snap hostfs

86 天前
 julyclyde
今天帮人看故障,现象是 firefox 无法把/opt/data/ (一个单独 mount 的 RAID 卷)作为下载目录
错误信息是刚访问到/opt/层就已经 permission denied 了

首先 777 ,没修复
然后看日志,发现是 apparmor
修改了 snap.firefox.firefox 的 apparmor profile ,加 rw ,加 audit ,能捕捉到 firefox 访问/opt/的痕迹,并且授权,但浏览器看不到里面现有的文件

想了好久,终于去看了一下/proc/XXX/mounts
发现这个 RAID 卷居然 mount 在了/var/lib/snapd/hostfs/opt/data/目录上了
1253 次点击
所在节点    Ubuntu
7 条回复
codehz
86 天前
这玩意应该用了命名空间一类的吧,snap 的问题不应该看 snap 的帮助的吗,
用 snap connect firefox:removable-media 应该就可以访问了
julyclyde
86 天前
@codehz 谢谢
主要是……我是服务器运维啊,对于桌面界的发展已经跟不上了
pagxir
86 天前
snap 就一垃圾设计,Ubuntu 还一直无脑的推
julyclyde
85 天前
@pagxir Ubuntu 推的好多东西最后都废弃了。唉
Eucalyptus
MaaS
juju
upstart
……
julyclyde
85 天前
@codehz 不过我那个 RAID 卷是 linux mdadm 那种 RAID 啊,按说不算 removable 的?
codehz
85 天前
@julyclyde 仔细想实际上是按路径来的 https://github.com/canonical/snapd/blob/96fc2c65715a91853c899c41c29c53ad7aad5cf8/cmd/snap-confine/mount-support.c#L965-L993
写死了只有特定路径可以访问(其中一部分受到 removable-media 权限管控(只有/media 和/mnt ,/opt 都不算
你看到的 hostfs 这个,实际上应该是在命名空间里使用了 pivot_root 切换主目录出来的,虽然挂载被继承了,但不代表能访问到,命名空间里整个/opt 根本不是实际的 opt
建议改挂载点到/mnt 或者/media 里的子目录
也有一个替代方法,定制一个 https://snapcraft.io/docs/system-files-interface 的规则,然后允许 ff 使用
julyclyde
85 天前
@codehz 哦那我用不上。我这里是/opt/data/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1086841

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX