非root用户起qemu虚拟机:规避权限问题
2020-08-20qemu权限root用户libvirt
背景
在多人使用虚拟机的场景中,每人对应一个非root用户。当某一个非root用户想要使用virsh命令起qemu虚拟机的时候,等待他的可能是一段小坑不断的试错之路。
非root用户起虚拟机最常遇到的是权限问题,比如运行virsh start
的时候,出现下列报错:
error: Failed to start domain jzy-lts
error: internal error: qemu unexpectedly closed the monitor: 2020-07-14T13:29:11.323694Z qemu-kvm: -drive file=/home/jzy/kvm/openEuler-20.03-LTS.aarch64.qcow2,format=qcow2,if=none,id=drive-scsi0-0-0-0,cache=none,aio=native: Could not open '/home/jzy/kvm/openEuler-20.03-LTS.aarch64.qcow2': Permission denied
有些朋友遇到类似问题会怀疑是qemu本身有bug,其实不然,很有可能操作不当才是原因。 下面是本人总结的非root用户起qemu虚拟机的步骤,规避可能出现的权限问题。
步骤
从创建用户到起虚拟机:
- 创建一个用户并添加进kvm组
[root] useradd -m jzy
[root] gpasswd -a jzy kvm
- 配置
/etc/libvirt/qemu.conf
# user = "root"
后面加
user = "jzy"
# group = "root"
后面加
group = "jzy"
- 重启libvirtd
[root] service libvirtd restart
或者
[root] systemctl restart libvirtd.service
- 允许jzy使用sudo
[root] vim /etc/sudoers
增加 jzy ALL=(ALL) ALL
然后 wq!
- 切用户,到/home/jzy 准备好相关的文件 保证文件和目录都是755的权限, 比如
[jzy@localhost ~]$ pwd
/home/jzy
[jzy@localhost ~]$ ll
total 4.0K
drwxr-xr-x 2 jzy jzy 4.0K Jul 23 11:29 kvm
[jzy@localhost ~]$ ll kvm
total 7.2G
-rwxr-xr-x 1 jzy jzy 1.6K Jul 23 11:29 openE_jzy.xml
-rwxr-xr-x 1 jzy jzy 4.4G Jul 23 11:25 openEuler-20.03-LTS-aarch64-dvd.iso
-rwxr-xr-x 1 root root 2.9G Jul 23 11:32 openEuler-image.qcow2
- 就可以起虚拟机了
[jzy@localhost ~]$ sudo virsh create kvm/openE_jzy.xml
Domain openEulerVM created from kvm/openE_jzy.xml
特别注意: 文件的owner 和 group 不要搞错!
【版权声明】Copyright © 2024 openEuler Community。本文由openEuler社区首发,欢迎遵照 CC-BY-SA 4.0 协议规定转载。转载时敬请在正文注明并保留原文链接和作者信息。
【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。