Multipass遭AppArmor权限拦截问题求解(无需迁移文件)
解决Multipass被AppArmor拦截的权限问题
1. 处理/proc/[PID]/maps读取被拒问题
Multipass需要读取进程内存映射文件时,需赋予其进程监控和系统观察权限,通过snap接口实现:
- 连接
process-control接口:sudo snap connect multipass:process-control - 连接
system-observe接口:sudo snap connect multipass:system-observe
2. 允许Multipass读取自定义路径下的debian-cloud-init.yaml
Snap默认限制文件系统访问,需通过AppArmor本地规则扩展权限,确保自定义路径不被迁移:
步骤1:创建AppArmor本地规则文件
针对两个被拦截的profile分别添加规则:
编辑
snap.multipass.multipass的本地规则:sudo tee /var/snap/multipass/common/etc/apparmor.d/local/snap.multipass.multipass <<EOF # 允许访问自定义cloud-init配置文件 /{你的自定义目录路径}/debian-cloud-init.yaml r, /{你的自定义目录路径}/** r, EOF替换
{你的自定义目录路径}为实际路径(如/opt/my-cloud-configs)。编辑
snap-update-ns.multipass的本地规则:sudo tee /var/snap/multipass/common/etc/apparmor.d/local/snap-update-ns.multipass <<EOF # 允许访问自定义cloud-init配置文件 /{你的自定义目录路径}/debian-cloud-init.yaml r, /{你的自定义目录路径}/** r, EOF
步骤2:重新加载AppArmor规则
sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.multipass.multipass sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap-update-ns.multipass
特殊场景优化
如果配置文件在用户Home目录,确保home接口已连接:
sudo snap connect multipass:home
如果在外部存储设备,连接removable-media接口:
sudo snap connect multipass:removable-media
3. 验证修复
- 重启Multipass服务:
sudo systemctl restart snap.multipass.service - 重新执行启动脚本,检查系统日志确认无AppArmor拒绝信息:
journalctl -xe | grep apparmor
内容的提问来源于stack exchange,提问作者David Essien
相关产品推荐
相关产品推荐

