问题描述
我在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自动挂载共享文件夹(这将使其显示在/media/sf_directory_name
下),然后将常规Ubuntu用户添加到vboxsf
组(作为根#
)。
# 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
组,将使用该目录访问共享文件夹。如果要在用户的主目录下使用’better’链接,则始终可以创建符号链接。
ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared
您将需要重新引导VM才能使这些更改生效
如果您手动安装共享文件夹,则需要使用mount
命令上的相关选项来设置具有正确所有权的文件夹(即gid,uid和umask选项为mount
)。这是因为主机操作系统不支持与Linux相同的权限系统,因此VirtualBox无法知道谁应该拥有文件。
但是,我强烈建议您仅将共享文件夹配置为auto-mounted(这是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$
次佳回答
我的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:
路易莎
第三种回答
为非root Linux用户启用从Ubuntu来宾对Windows主机上共享文件夹的完全读,写访问权限
此步骤将使您能够从Linux来宾终端访问Windows主机上的特定目录。在此示例中,从OVB角度来看,共享的名称为vshare(这是默认设置),Windows操作系统(主机OS)的完整目录路径为”C:\var\”,从来宾访问该文件的完整文件路径vm为”/vagrant”。最后,启用完全读/写访问的用户名将为”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.在启动时自动挂载共享
通过将以下行添加到/etc /fstab文件的末尾(请注意”vshare” conf和uid = 10001),将共享目录配置为在虚拟机引导时自动挂载:
/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab
4.将自己添加到vboxsf组
# mount
sudo mount -a
sudo usermod -G vboxsf -a you
5.重新启动并验证
重新启动虚拟机并通过ssh登录以验证文件共享。
# ssh to the vm
ssh you@host-name
# check as yourself that you have access
find /vagrant