Permissions 无法在Vagrant中装入文件 错误描述

Permissions 无法在Vagrant中装入文件 错误描述,permissions,vagrant,mount,privileges,Permissions,Vagrant,Mount,Privileges,我无法在Vagrant或Docker中装载文件,因此这似乎是由某种权限错误引起的问题。 我的操作系统是ubuntu18.04lts(仿生海狸),据我所知,我没有运行任何访问控制模块,如SELinux 与Docker相关的错误讨论可在另一个问题中找到: 流浪汉故障排除 因此,我无法将文件装载到“漫游”框中(即使我有vboxsf): 我已经在Vagrantfile中指定了这些语句,它可以在我同事的本地版本中工作,但在我的版本中,这些文件不会装入或复制到框中: host.vm.synced_fold

我无法在Vagrant或Docker中装载文件,因此这似乎是由某种权限错误引起的问题。
我的操作系统是
ubuntu18.04lts(仿生海狸)
,据我所知,我没有运行任何访问控制模块,如
SELinux

与Docker相关的错误讨论可在另一个问题中找到:

流浪汉故障排除 因此,我无法将文件装载到“漫游”框中(即使我有vboxsf):

我已经在Vagrantfile中指定了这些语句,它可以在我同事的本地版本中工作,但在我的版本中,这些文件不会装入或复制到框中:

host.vm.synced_folder "salt/", "/srv/salt"
host.vm.synced_folder "pillar/", "/srv/pillar"
结论 在复制文件时,我的本地计算机上似乎出现了一些非常混乱的情况,可能与我的用户如何配置以及如何将文件装载到虚拟机和容器中有关。
如果有人能解释一下,我会很感激的

更新 1) 正如user@BMitch建议的那样,我完成了“Virtualbox来宾添加”安装。
每当我更新我的软件包时,我都会将其记录到日志文件中,这是大约两个月前从
update-20180405_153850.txt
中找到的

Preparing to unpack .../virtualbox-guest-additions-iso_5.1.34-0ubuntu1.16.04.2_all.deb ...
Unpacking virtualbox-guest-additions-iso (5.1.34-0ubuntu1.16.04.2) over (5.0.40-0ubuntu1.16.04.1) ...
但这对我来说毫无意义。。我的引导脚本(在盒子上游荡)在我第一次运行时失败:

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 srv_salt /srv/salt

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

Traceback (most recent call last):
  File "launch-vagrant.py", line 166, in <module>
    main()
  File "launch-vagrant.py", line 120, in main
    vagrant()
  File "launch-vagrant.py", line 95, in vagrant
    main()
  File "launch-vagrant.py", line 67, in main
    start()
  File "launch-vagrant.py", line 83, in start
    _exec('vagrant', 'up')
  File "launch-vagrant.py", line 129, in _exec
    subprocess.check_call(list(args))
  File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['vagrant', 'up']' returned non-zero exit status 1.
显然,这是安装在实际机箱中的VBox来宾添加,而不是安装在我的本地计算机上

但是,我确实更改了
/usr/share/virtualbox/vboxguestaditions.iso的文件模式,因此这可能会解决问题:

petrus@DD-XPS-15-9550:/usr/share/virtualbox$ ll
total 56656
drwxr-xr-x   3 root root     4096 maj 14 00:28 ./
drwxr-xr-x 384 root root    16384 maj 16 12:58 ../
drwxr-xr-x   2 root root    12288 maj 13 23:06 nls/
-rw-r--r--   1 root root 57970688 apr 20 15:50 VBoxGuestAdditions.iso
-rwxr-xr-x   1 root root     2600 nov 29  2016 VBox.sh*
-rwxr-xr-x   1 root root     4163 apr 13 18:37 VBoxSysInfo.sh*
petrus@DD-XPS-15-9550:/usr/share/virtualbox$ sudo chmod ugo+w VBoxGuestAdditions.iso 
[sudo] password for petrus: 
petrus@DD-XPS-15-9550:/usr/share/virtualbox$ ll
total 56656
drwxr-xr-x   3 root root     4096 maj 14 00:28 ./
drwxr-xr-x 384 root root    16384 maj 16 12:58 ../
drwxr-xr-x   2 root root    12288 maj 13 23:06 nls/
-rw-rw-rw-   1 root root 57970688 apr 20 15:50 VBoxGuestAdditions.iso
-rwxr-xr-x   1 root root     2600 nov 29  2016 VBox.sh*
-rwxr-xr-x   1 root root     4163 apr 13 18:37 VBoxSysInfo.sh*
关于流浪问题: 默认情况下,Vagrant将主机Vagrant文件的文件夹装载到“/Vagrant”。如果基本文件系统装载工作正常,测试“ls-l/vagrant”的输出

“ls”命令应至少在“/vagrant”中显示您的vagrant文件

如果vagrant文件在虚拟机中可见,则装载基本上与vagrant一起工作

host.vm.synced_folder "salt/", "/srv/salt"
host.vm.synced_folder "pillar/", "/srv/pillar"
您似乎装载了相对于您的文件的附加文件夹。在这种情况下,您可以在内部修改VM,将它们链接到所需的dest文件夹

例如,您可以在VM的供应状态下执行此操作

# Vagrantfile snippet
config.vm.provision "shell", inline: <<-SHELL
ln -s /vagrant/salt /srv/salt
ln -s /vagrant/pillar /srv/pillar  
SHELL
#文件片段
config.vm.provision“shell”,内联:到流浪汉问题:
默认情况下,Vagrant将主机Vagrant文件的文件夹装载到“/Vagrant”。如果基本文件系统装载工作正常,测试“ls-l/vagrant”的输出

“ls”命令应至少在“/vagrant”中显示您的vagrant文件

如果vagrant文件在虚拟机中可见,则装载基本上与vagrant一起工作

host.vm.synced_folder "salt/", "/srv/salt"
host.vm.synced_folder "pillar/", "/srv/pillar"
您似乎装载了相对于您的文件的附加文件夹。在这种情况下,您可以在内部修改VM,将它们链接到所需的dest文件夹

例如,您可以在VM的供应状态下执行此操作

# Vagrantfile snippet
config.vm.provision "shell", inline: <<-SHELL
ln -s /vagrant/salt /srv/salt
ln -s /vagrant/pillar /srv/pillar  
SHELL
#文件片段

config.vm.provision“shell”,inline:告诉我您是否需要更多信息来解决此问题,或者我是否可以添加或改进已提供的某些信息。为什么对此问题投反对票?如何改进它?“此文件系统通过VirtualBox来宾添加和内核模块提供。请验证这些来宾添加是否正确安装在来宾中。”您是否遵循了这些步骤?如果是,请显示结果。如果您的/vagrant文件夹不为空,则挂载基本有效。我将问题的Docker部分移至另一个问题:告诉我您是否需要更多信息来解决此问题,或者我是否可以添加或改进已提供的某些信息。为什么此问题投反对票?如何改进它?“此文件系统通过VirtualBox来宾添加和内核模块提供。请验证这些来宾添加是否正确安装在来宾中。”您是否遵循了这些步骤?如果是这样,请显示结果。如果你的/vagrant文件夹不是空的,那么挂载基本上是有效的。我将问题的Docker部分移到了另一个问题:确实,我能够将本地文件夹挂载到
/vagrant
:我以奖金奖励你的答案,当我尝试它时,我遇到了其他错误,但检查了我项目的前一个分支,拆除了虚拟机并运行了
vagrant box update
,然后重建似乎已经解决了这个特定问题,现在我设法再次复制错误,然后恢复更改以减轻错误。。所以看起来SaltStack抛出了这个错误:当它无法匹配topfile时,这会在语法错误期间发生,而不仅仅是当它丢失时。。当然,我检查了SaltStack日志,以获得有关这方面的任何线索,但在我看来,没有任何迹象表明存在语法错误。当应用程序失败但却不告诉你原因时,这很烦人。。我以前在SaltStack上也遇到过类似的问题,可能是因为我对它没有经验,但也因为它不清楚。事实上,我能够将本地文件夹装载到
/vagrant
:我用赏金奖励了你的答案,我在尝试它时遇到了其他错误,但检查了我项目的前一个分支,拆除虚拟机并运行
vagrant box update
,然后进行重建,目前似乎已经解决了这个问题。我设法再次重现错误,然后恢复更改以减轻错误。。所以看起来SaltStack抛出了这个错误:当它无法匹配topfile时,这会在语法错误期间发生,而不仅仅是当它丢失时。。当然,我检查了SaltStack日志,以获得有关这方面的任何线索,但在我看来,没有任何迹象表明存在语法错误。当应用程序失败但却不告诉你原因时,这很烦人。。我以前在SaltStack上也遇到过类似的问题,可能是因为我对它没有经验,但也因为它不清楚。