Ubuntu 20.04中解决Snap应用无法访问虚拟机共享文件夹的方法
遇到这种AppArmor阻止Snap应用访问VirtualBox共享文件夹的问题,我之前也碰到过,结合实际操作经验,给你几个可行的解决办法:
方法一:给Figma Snap添加可移动媒体访问权限
这个方法最简单,很多时候能直接解决问题——虽然虚拟机共享文件夹不属于传统的可移动媒体,但Snap的removable-media权限规则包含了对非标准文件系统的访问许可,刚好适配vboxsf类型的共享文件夹。
执行以下命令:
sudo snap connect figma-linux:removable-media
执行完后重启Figma应用,试试能不能访问/home/me/VMShared文件夹。如果这个方法无效,再尝试下面的自定义AppArmor规则方法。
方法二:手动修改AppArmor配置文件
如果方法一没效果,我们需要直接修改Figma对应的AppArmor安全策略,明确允许它访问你的共享文件夹:
找到Figma的AppArmor配置文件,路径如下:
/var/lib/snapd/apparmor/profiles/snap.figma-linux.figma-linux用文本编辑器(比如nano)打开这个文件:
sudo nano /var/lib/snapd/apparmor/profiles/snap.figma-linux.figma-linux在文件中找到类似其他目录权限的位置(比如在
/home/me/** rw,这类规则附近),添加两行针对共享文件夹的权限规则:/home/me/VMShared/** rw, owner /home/me/VMShared/** rw,这两行规则分别允许应用访问共享文件夹下的所有文件和子目录,以及确保拥有者权限的访问许可。
保存并退出编辑器后,重新加载AppArmor规则:
sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.figma-linux.figma-linux最后重启Figma应用,现在应该就能正常访问共享文件夹了。
临时 workaround:挂载到Snap允许访问的目录
如果上面两种方法都不想尝试,还可以用一个临时的变通方案——把共享文件夹重新挂载到Snap应用默认允许访问的目录下,比如~/Documents:
mkdir -p ~/Documents/VMShared sudo mount -t vboxsf VMShared ~/Documents/VMShared
(这里的VMShared是你在VirtualBox里设置的共享文件夹名称)
这样Figma就能直接访问~/Documents/VMShared了,不过每次重启虚拟机后都需要重新挂载,适合临时使用。
备注:内容来源于stack exchange,提问作者xaxa

