VMware Fusion provides a nice functionality of sharing folder from host (Mac OSX) to guest (Ubuntu). But then, it seems they are more focused on windows guests, because they screwup on file permissions of shared folders.
"ls -al /mnt/hgfs" will show 501 dialout as user and group, which is sure to cause permission issues on linux guest.
Update: Found a more persistent alternative
1. sudo vim /etc/vmware-tools/services.sh
2. Search for 'vmhgfs_mnt="/mnt/hgfs"'. After this line add: 'vmuser=${VMWARE_MNT_USER:-root}'
3. Then search for 'vmware_exec_selinux "mount -t vmhgfs .host:/ $vmhgfs_mnt"' and replace it with following section:
uid=`id --user $vmuser`
gid=`id --group $vmuser`
vmware_exec_selinux "mount -t vmhgfs .host:/ $vmhgfs_mnt -o uid=$uid,gid=$gid"
4. sudo vim /etc/init/vmware-tools.conf
Before the "pre-start" and "post-stop" lines add:
env VMWARE_MNT_USER=[The guest user you want]
5. sudo reboot
NOTE: This will have to be redone when you update/ reinstall vmware-tools
To fix this:
ssh to your ubuntu.
run command "id". Make note of uid and gid.
"sudo vim /etc/mtab"
look for line ".host:/ /mnt/hgfs vmhgfs rw,ttl=1 0 0"
Duplicate the line and change it to ".host:/ /mnt/hgfs vmhgfs rw,ttl=1,uid=1000,gid=1000 0 0"
"sudo umount /mnt/hgfs"
"sudo mount /mnt/hgfs"
Now do a "ls -al /mnt/hgfs" to verify if correct username and group are shown.
Ideally, vmware fusion should be making this as transparent as possible. But then again, they don't care because they still don't have a real competition. Once, we do some real competitors, maybe then might start worrying about such minor but key items.
Currently, I spend more time trying to get it working than actually working on a VM. I am desperately looking for a better alternative.
This seems like a pretty neat fix. On the sharing screen, VMWare could add a simple textbox for user name and next time vmware tools are installed, use this value while generating the vmware-tools.conf file.
Not sure when VMWare will take note of such minor issues.
"ls -al /mnt/hgfs" will show 501 dialout as user and group, which is sure to cause permission issues on linux guest.
Update: Found a more persistent alternative
1. sudo vim /etc/vmware-tools/services.sh
2. Search for 'vmhgfs_mnt="/mnt/hgfs"'. After this line add: 'vmuser=${VMWARE_MNT_USER:-root}'
3. Then search for 'vmware_exec_selinux "mount -t vmhgfs .host:/ $vmhgfs_mnt"' and replace it with following section:
uid=`id --user $vmuser`
gid=`id --group $vmuser`
vmware_exec_selinux "mount -t vmhgfs .host:/ $vmhgfs_mnt -o uid=$uid,gid=$gid"
4. sudo vim /etc/init/vmware-tools.conf
Before the "pre-start" and "post-stop" lines add:
env VMWARE_MNT_USER=[The guest user you want]
5. sudo reboot
NOTE: This will have to be redone when you update/ reinstall vmware-tools
Now do a "ls -al /mnt/hgfs" to verify if correct username and group are shown.
Ideally, vmware fusion should be making this as transparent as possible. But then again, they don't care because they still don't have a real competition. Once, we do some real competitors, maybe then might start worrying about such minor but key items.
Not sure when VMWare will take note of such minor issues.
6 comments:
Hello Viraj,
I found your post trying to google a solution to my problem. I am trying to mount my VM shares so that they are owned by root. I simplified your script to one line:
vmware_exec_selinux "mount -t vmhgfs .host:/ $vmhgfs_mnt -o uid=0,gid=0"
And just forced the uid and gid to 0 for root. Sure enough when I do a long list of the directory, those mounted folders are now owned by root.
However, if I try running a "chown" command, I still get an "Operation not permitted" error. I read somewhere about "root squash" which may prevent true root ownership. However, I have not been able to find out how to turn that off. Any ideas?
I use my VM as my web development environment. My only user is root and I'm not concerned about security. I just want it to work.
Any help you can give would be appreciated.
Thanks,
Rob
Hi Rob,
I too faced this issue, but since the above works for me, haven't gone into the details yet.
Will update if I find something.
Blows my mind and wasted 4 hours. I am in awe that shared folder functionality is so poor for vmware. guess I have to learn how to use vagrant after all....
what a load of shite. I never even imagined that vmware could'nt interpret file permissions between the two. I dont even see the point of having shared folers. Well this is the stubbed toe i need to head to vagrant.
waste of an evening thanks emc2
the best is when the top four articles while searching are 8 year old posts from vmware forums.
grrrr
Thanks for the great fix! One addition if you are offended by world-writable files, as was the case on my Linux guest:
Add a file mask and directory mask to the -o options, e.g.
fmask=0022,dmask=0022
Note that this is the setting for 755, since VMWare has to be obtuse and thus requires the opposite of the permissions you want.
To avoid modifying VMWare scripts, you can unmount and remount the VMware folder with the proper permissions.
For me on Ubuntu, I added the following single line to /etc/fstab (where I mount as user and group 1000):
.host:/ /mnt/hgfs vmhgfs rw,uid=1000,gid=1000
To unmount and remount the drive, you can issue the following commands:
sudo umount /mnt/hgfs
sudo mount /mnt/hgfs
Thanks and regards,
-alec
Post a Comment