流浪汉和烦人的NFS密码询问


18

对不起,我犯了语言错误。我试图防止在NFS挂载共享文件夹时流浪汉询问密码:

 [server] Exporting NFS shared folders...
 Preparing to edit /etc/exports. Administrator privileges will be required...
 [sudo] password for timur: #!!!

我已经重涂了许多在线资源,例如github和其他作者的帖子,但对我来说却无济于事...

我试图在这里找到说明。我没有丰富的CLI工作知识。那么有人可以为我的问题提供正确的解决方案吗?


现在Vagrant文​​档中已经涵盖了这个问题,请问我是否可以接受这个答案?
Taytay,2016年

首先,您需要检查计算机上是否nfs-server已安装服务。
Gambit

Answers:


32

现在,正式的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

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

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


奇怪的是,这对我来说不起作用,即使 /var/log/auth.log其中仅包含列出的命令,我也可以手动验证sudo权限是否正常。
Tgr

1
建议不要将其编辑为主sudoers文件,而是将其添加为新文件,/etc/sudoers.d以免将来在更新OS时发生冲突。在Ubuntu sudo visudo -f /etc/sudoers.d/vagrant-nfs或OSX上:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
EmilVikström17年

1
这有所帮助,谢谢!请快速评论一下您的建议,以避开vim编辑器:只需使用sudo EDITOR=nano visudo命令打开visudo,即可完全绕过vim
Petr Cibulka '12

2

确切的命令可以在Vagrant版本之间更改,因此不可能列出始终有效的命令。

无论如何,这个要旨中的sudoers规则应该仍然非常接近。检出/var/log/auth.log是否显示您的Vagrant版本的实际命令并相应地调整规则。


谢谢,但是很久以前我尝试过此解决方案-它对我不起作用。
Timur Fayzrakhmanov 2014年

2

对于为OSX进行此操作的任何人(我使用的是MacOS Sierra版本10.12.6),即使添加了这些行,我也很难拥有权限。这篇文章确实有帮助:

https://github.com/cogitatio/vagrant-hostsupdater/issues/50

基本上,您自己没有为该文件夹设置权限的事实。因此,您需要运行:

sudo chmod +a "$USER allow write,append" /etc/hosts

1

, nfs_export: falseconfig.vm.synced_folderVagrantfile的-lines 末尾添加,为我解决了。

如果您已经有了一个可以正常工作的nfs-config,并且不需要在每次启动时都让Vagrant覆盖它,那么您只需禁用对导出文件的写入即可。

如果您有一个以上的Vagrant试图访问同一文件夹,那么这也解决了冲突问题,例如,您有2个几乎完全相同的Vagrant,一个运行php 5.6,一个运行php 7.2。


0

TL&DR:添加以下override.vm.synced_folder“。”,“ / vagrant”,禁用:true

合理:默认情况下,Vagrant尝试检测任何NFS / SMB文件夹。虽然我可以理解为什么开发人员添加了此功能,但是对于我的用例来说,这很烦人。解决方案是仅禁用NFS文件夹同步。

这可以通过覆盖VM同步文件夹选项来完成。我已为数字海洋附上了以下配置供您考虑,因此您可以看到整个配置。

 config.vm.define "droplet1" do |config|
 config.vm.provider :digital_ocean do |provider, override|
    override.vm.synced_folder ".", "/vagrant", disabled: true
        override.ssh.private_key_path = '~/.ssh/id_rsa'
        override.vm.box = 'digital_ocean'=
        override.vm.box_url = "https://github.com/devopsgroup-io/vagrant- 
 digitalocean/raw/master/box/digital_ocean.box"
    override.nfs.functional = false
            provider.image = 'ubuntu-14-04-x64'
            provider.region = 'nyc1'
            provider.size = '512mb'
       end
      end
    end

要爱“ TL&DR”的人!干杯。
Luis Milanese

1
谢谢!别忘了投票;)
FlyingV

由于您的“ TL&DR”,您应得到所有可以得到的支持,但事实是您的回答没有帮助我。不是因为它不好,而是我遇到的问题与最初提出的问题略有不同。不过,谢谢您的良好态度。:)
Luis Milanese
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.