如何在 Fedora 中以普通用户身份运行 Vagrant?

如何在 Fedora 中以普通用户身份运行 Vagrant?

我正在尝试在 Fedora 23 中使用libvirt.它启动后一切看起来都很好,直到我被要求输入“sudo 密码:准备编辑 /etc/exports。需要管理员权限”。

我以普通用户身份运行 Vagrant,不想以 root 身份运行它,也不想将自己添加到 sudoers 文件中。只是为了测试,我已经vagrant up以 root 身份运行并且一切正常,但我对这样运行 Vagrant 感到不舒服。

我在谷歌搜索修复时发现了一些东西,那就是更改文件的权限/etc/exports。这有效并让我vagrant up以普通用户身份运行,但对我来说这感觉像是一个肮脏的修复。更改 /etc/exports 文件的权限有什么缺点?我真的很想让 Vagrant 作为普通用户运行,而不必影响安全性。

由于内核更新,Virtualbox 不是替代方案。我不想冒任何破坏的风险,也不想等待 Oracle 或 rpmfusion 更新 Virtualbox 的内核模块。

我已按照 Fedora 开发者门户的以下说明进行操作:

$ sudo dnf install vagrant-libvirt
$ sudo systemctl enable libvirtd
$ lsmod | grep kvm

lsmod | grep kvm 不返回任何内容,因此我编辑了 Vagrantfile 以使用 qemu 驱动程序:

Vagrant.configure("2") do |config|
...
  config.vm.provider :libvirt do |libvirt|
    libvirt.driver = "qemu"
  end
...
end

在没有密码提示的情况下使用 Vagrant 中的 libvirt

$ sudo gpasswd -a ${USER} libvirt
$ newgrp libvirt
Synced folders with NFS

$ sudo dnf install nfs-utils && sudo systemctl enable nfs-server

然后为firewalld启用nfs、rpc-bind和mountd服务:

$ sudo firewall-cmd --permanent --add-service=nfs &&
  sudo firewall-cmd --permanent --add-service=rpc-bind &&
  sudo firewall-cmd --permanent --add-service=mountd &&
  sudo firewall-cmd --reload

在没有密码提示的情况下使用 Vagrant 的 NFS 共享

$ sudo visudo

添加这个:

# Allow Vagrant to manage /etc/exports
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /usr/bin/systemctl status nfs-server.service
Cmnd_Alias VAGRANT_NFSD_START = /usr/bin/systemctl start nfs-server.service
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /bin/sed -r -e * d -ibak /etc/exports
%vagrant ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY, VAGRANT_EXPORTS_REMOVE

然后,如果您尚未加入 vagrant 组,请运行以下命令:

$ sudo getent group vagrant >/dev/null || sudo groupadd -r vagrant
$ sudo gpasswd -a ${USER} vagrant
$ newgrp vagrant

让 Vagrant 启动并运行:

$ vagrant init rboyer/ubuntu-trusty64-libvirt 
$ vagrant up

我尝试了 Vagrant 盒子网站上的两个不同的 libvirt 盒子: 这里这里

非常感谢有关此事的帮助。谢谢。

相关内容