Ubuntu 22环境下Test Kitchen执行kitchen converge时调用VBoxManage出现E_ACCESSDENIED错误
看起来你遇到了VirtualBox权限相关的问题,这在Ubuntu环境下挺常见的,我来给你几个排查和解决的思路:
检查当前用户是否属于vboxusers用户组
VirtualBox要求用户加入vboxusers组才能管理网络接口这类系统资源。先看看你当前用户在不在这个组里:groups如果输出里没有
vboxusers,就把自己加进去:sudo usermod -aG vboxusers $USER注意:添加完成后需要注销并重新登录才能让组权限生效。
手动测试VBoxManage命令的权限
直接运行报错里的那条命令,看看是不是确实是权限问题:VBoxManage hostonlyif ipconfig vboxnet14 --ip 172.28.128.1 --netmask 255.255.255.0如果还是报权限错误,试试用sudo运行:
sudo VBoxManage hostonlyif ipconfig vboxnet14 --ip 172.28.128.1 --netmask 255.255.255.0如果sudo能成功,说明是当前用户权限不足。你可以考虑用sudo运行
kitchen converge(不推荐长期这么做),或者配置sudoers让VBoxManage无需密码执行(需要谨慎操作)。重建异常的host-only网卡
有时候vboxnet14网卡本身状态异常也会导致权限报错。先删掉这个网卡:sudo VBoxManage hostonlyif remove vboxnet14然后重新运行
kitchen converge,Test Kitchen会自动重新创建需要的host-only网卡。检查VirtualBox与Vagrant的版本兼容性
版本不匹配也可能引发奇怪的权限问题。你可以先查看当前的版本:vagrant -v vboxmanage -v比如Test Kitchen v3.1.0搭配Vagrant 2.3.x + VirtualBox 7.x的组合比较稳定,如果你的版本太旧,建议升级到兼容的版本试试。
排查AppArmor安全规则限制
Ubuntu默认的AppArmor可能会阻止VirtualBox修改网络接口。你可以临时关闭AppArmor测试:sudo systemctl stop apparmor然后重新运行
kitchen converge,如果问题解决了,就需要调整AppArmor的规则,允许VirtualBox的相关操作。
备注:内容来源于stack exchange,提问作者Andres Cabrera

