虚拟盒子(Ubuntu Guest,Windows Host)下共享文件夹的文件权限问题


102

我在Virtual Box上使用Ubuntu,并且有一个在主机(Windows)和VM(Ubuntu)之间共享的文件夹。当我在Ubuntu的共享文件夹中打开任何文件时,由于其所有者设置为root,因此无法更改它。

如何更改我的所有权?

这是输出ls -l

-rwxrwxrwx 1 root root 0 2012-10-05 19:17 BuildNotes.txt

输出df为:

m@m-Linux:~/Desktop/vbox_shared$ df
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/sda1     29640780  10209652  17925440  37% /
none            509032       260    508772   1% /dev
none            513252       168    513084   1% /dev/shm
none            513252        88    513164   1% /var/run
none            513252         0    513252   0% /var/lock
none            513252         0    513252   0% /lib/init/rw
Ubuntu       214153212  31893804 182259408  15% /media/sf_Ubuntu
/dev/sr0         53914     53914         0 100% /media/VBOXADDITIONS_4.2.0_80737
Ubuntu       214153212  31893804 182259408  15% /home/m/Desktop/vbox_shared

VM中的选项是自动挂载的,并且没有检查readoly。

尝试使用/media/sf_Ubuntu,但出现权限错误:

m@m-Linux:/media$ ls -l 
total 10
drwxrwx--- 1 root vboxsf 4096 2012-10-23 15:35 sf_Ubuntu
drwxrwx--- 2 root vboxsf 4096 2012-10-21 23:41 sf_vbox_shared
dr-xr-xr-x 6 m    m      2048 2012-09-13 07:19 VBOXADDITIONS_4.2.0_80737
m@m-Linux:/media$ cd sf_Ubuntu/
bash: cd: sf_Ubuntu/: Permission denied
m@m-Linux:/media$ cd sf_vbox_shared/
bash: cd: sf_vbox_shared/: Permission denied

请注意,我在群组中vboxsf

m@m-Linux:~$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)

您如何挂载共享文件夹?您是让它由VirtualBox来宾utils(即/ media / sf_something)自动挂载还是使用mount命令手动挂载?
AugustBitTony 2012年

另外,您能描述一下如何在Windows的VirtualBox下配置共享吗?共享有三个选项,只读,自动挂载和永久,您已勾选了这些选项。
AugustBitTony 2012年

请发布您问题的更新-而非评论。请包括df用于手动挂载文件系统的输出和命令。
AugustBitTony 2012年

谢谢-您将看到一个/ media / sf_Ubuntu文件系统。那是您的共享文件夹,您无需手动安装它。我建议您卸载/ home / m / Desktop的东西,然后使用/ media / sf_Ubuntu,其工作方式如下。
AugustBitTony 2012年

@Tony:我无法访问此文件夹。请参阅我的原始问题,其中添加了更多信息
user654019 2012年

Answers:


159

现在,访问文件的常规方法是允许VirtualBox自动挂载共享文件夹(这将使其显示在下/media/sf_directory_name),然后将常规Ubuntu用户添加到vboxsf组中(作为root #)。

# usermod -aG vboxsf <youruser>

默认情况下,无需手动操作,挂载看起来像这样,

drwxrwx--- 1 root vboxsf 40960 Oct 23 10:42 sf_<name>

因此该vboxsf群组拥有完全访问权限。通过将用户添加到该组,您可以获得完全访问权限。因此,您不必担心更改其权限(在Windows主机上没有意义),您只需授予自己访问权限即可。

在这种情况下,这是自动挂载的共享文件夹,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

通过将本地用户放入vboxsf组,应该使用该目录访问共享文件夹。如果您想要用户主目录下的“更好”链接,则始终可以创建一个符号链接。

ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared

您需要重新启动VM才能使这些更改生效

如果手动安装共享文件夹,则需要使用mount命令上的相关选项将文件夹设置为正确的所有权(即,将gid,uid和umask选项设置为mount)。这是因为主机操作系统不支持与Linux相同的权限系统,因此VirtualBox无法知道谁应该拥有文件。

但是,我强烈建议您将共享文件夹配置为自动挂载(这是VirtualBox本身中“共享文件夹”配置上的一项设置)。


为避免疑问,我认为如果以常规方式安装该文件系统,则无论如何都无法正常更改权限,

tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ sudo chown tony tst.txt
[sudo] password for tony: 
tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ 

2
尝试此操作时,我收到消息说用户已经在组中,但是当我尝试更改共享文件夹上的文件时,当我要保存它时出现错误。错误为:无法保存文件/home/m/Desktop/vbox_shared/test.tst意外错误:重命名临时文件时出错:文本文件忙。
2012年

那是一个不同的问题,可能不是由于权限。您可以创建新文件还是修改其他文件?挂在-/ home / m / Desktop / vbox_shared?您是否手动安装了共享文件夹?这不是默认路径。
AugustBitTony 2012年

在检查系统时,我发现我仅具有创建或删除文件的权限,而没有读写权限。我该如何给自己呢?
user654019 2012年

9
似乎需要重新启动才能生效。
Eric Wang

3
您应为此啤酒而喝!!!在碰到这个问题之前,我根本无法使用它。真不敢相信这还不存在。我希望我可以不止一次投票!
Tensigh

3

我的Win-Ubuntu共享文件夹遇到了同样的问题,而解决该问题的方法是将用户添加到vboxsf组中,编辑/ etc / group文件。希望这对您有用。在这里,您可以找到有关如何编辑文件的简短方案

(edit /etc/group)
...
...
...
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
openquake:x:1000:
sambashare:x:124:openquake,luisa
vboxsf:x:999:openquake,luisa   ##This is the line I add my user
postgres:x:125:
rabbitmq:x:126:
celery:x:500:
luisa:x:1001:

路易莎


2
您永远不要直接编辑/ etc / group,而要为此工作使用适当的工具(在这种情况下为usermod -aG <group> <user>)。
raimue 2015年

推荐这样做的主要原因(如果不仅如此)是因为,如果您不小心在手动更新/ etc / group之类的文件时犯了一个错误,它可能会使DB无效并使您实际上处于锁定状态。
斯宾塞·威廉姆斯

2

我遇到了同样的问题,解决了安装最新版本的VirtualBox Guest Additions的问题。就我而言,是从4.3.8升级到4.3.10。

安装完成后,/ media / sf_name文件夹不再具有“ root”作为组所有者,而是“ vboxsf”正确。


1

你尝试过须藤吗?

$sudo chown username filename

我认为这不适用于VirtualBox共享文件夹。
AugustBitTony 2012年

sudo随处可见!:P 链接
Extn3389 2012年

12
我不确定你是否认真,但我会逗你的。挂载的共享文件夹是vboxfs类型文件系统,它不支持chown
AugustBitTony 2012年

对不起,我只是认为这可能有效。
Extn3389 2012年

1
是的,但是并没有改变所有者。在终端中运行tis命令获取文件,然后查看文件所有者后,该文件仍然属于root。
2012年

1

如果您可以控制mount命令的选项(例如,手动安装或使用/etc/fstab),则可以将-o uid=771选项用于安装命令。

中的条目/etc/fstab看起来像

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

为非root Linux用户启用从Ubuntu来宾对Windows主机上共享文件夹的完全读,写访问权限

此步骤将使您能够从Linux来宾终端访问Windows主机上的特定目录。在此示例中,从OVB角度来看,共享的名称为vshare(这是默认设置),Windows操作系统(主机OS)的完整目录路径为“ C:\ var \”,而完整文件路径为从来宾vm访问它的名称将为“ / vagrant”,最后启用完全rea / write访问权限的用户名称将为“ you”。

 # how-to add a shared folder on the host
 VBoxManage sharedfolder add "host-name" -name "vshare" -hostpath "C:\var" -automount

1.安装来宾附加系统先决条件

通过发出以下命令来安装Guest Additions先决条件:

 sudo apt-get install -y build-essential make gcc  linux-headers-$(uname -r) 
 linux-headers-generic make linux-source  linux-generic linux-signed-generic

2.安装来宾添加

不要使用.iso文件下载文件,也不要从那里下载安装程序-它根本无法工作!

sudo apt-get install virtualbox-guest-dkms 

3.更改要在虚拟机启动时自动挂载的共享目录

通过将以下行添加到fstab文件的末尾(请注意“ vshare” conf和uid = 10001),更改要在vm boot上自动挂载的share dir:

/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab 

4.将自己添加到vboxsf组

您需要将自己添加到vboxsf组中,以便能够以非root用户身份从vm编辑主机计算机上的文件。#mount sudo mount -a

sudo usermod -G vboxsf -a you 

5.重新启动并验证

重新启动虚拟机并通过ssh登录以验证文件共享。#ssh到vm ssh you @ host-name

# check as yourself that you have 
find /vagrant

0

升级客户机系统后,必须再次安装虚拟盒。我认为问题是,当您升级ubuntu中的某些组件时,某些组件已更改,在安装vb-additions之后,将可以访问sf_forlder_name。我的问题就这样解决了。Pisu的解决方案有效。


根据我的经验,只有在升级主机VirtualBox系统时,才需要升级Virtual Box Guest。客户端上的任何软件更改时,都不会。您在客户端上升级了哪些软件以使其成为必需?
Anthon 2014年

1
不,尼基是对的。如果更新来宾OS内核,则必须重新安装来宾Additions。
Spencer Williams

-2
  • 取消挂载为 root
  • 使用chown和进行所需的更改chmod
  • 重新启动并签出共享具有正确的权限
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.