Vagrant Up 和烦人的 NFS 密码询问

Tim*_*nov 20 nfs command-line sudo virtualbox vagrant

抱歉我犯的语言错误。我试图防止 vagrant 在通过 NFS 挂载共享文件夹时询问密码:

 [server] Exporting NFS shared folders...
 Preparing to edit /etc/exports. Administrator privileges will be required...
 [sudo] password for timur: #!!!
Run Code Online (Sandbox Code Playgroud)

我已经红色了很多在线资源,如 github 和其他作者的帖子,但对我来说没有任何作用......

我试过这里的说明。我没有深厚的 cli 工作知识。那么有人可以为我的问题提供正确的解决方案吗?

小智 35

官方 Vagrant 文档现在涵盖了这一点:https : //www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

您需要向/etc/sudoers文件中添加条目,编辑方式是在终端输入:sudo visudo

输入您的密码,然后您正在编辑该文件。您需要在下面粘贴这些行(取决于您是在 OS X 还是 Linux 上运行 Vagrant。

如果您不熟悉它打开的vim这个页面有帮助。基本上,复制下面适当的文本块。然后,在 visudo 中,转到要将文本粘贴到文件中的位置(文件末尾很好),然后按“i”进入插入模式。CMD+V 粘贴文本。然后,按 ESC,然后键入:w以保存更改,然后:q退出。

从 1.7.3 版本开始,OS X 中的 sudoers 文件应该包含以下条目:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
Run Code Online (Sandbox Code Playgroud)

Linux 应该有这些条目:

Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY
Run Code Online (Sandbox Code Playgroud)

请注意,这些从一个版本的 Vagrant 更改为另一个版本,因此上述内容可能已经过时。重要的是文档现在涵盖了它。

  • 我建议不要编辑主 sudoers 文件,而是将其添加为“/etc/sudoers.d”中的新文件,以避免将来更新操作系统时发生冲突。在 Ubuntu 上:`sudo visudo -f /etc/sudoers.d/vagrant-nfs` 或 OSX:`sudo visudo -f /private/etc/sudoers.d/vagrant-nfs` (3认同)