我在 /Users/shared_folder 中创建了一个共享文件夹。我有移动虚拟盒文件到该文件夹/Users/shared_folder/.VirtualBox VMs/
我已将整个文件夹设置为所有权限:sudo chmod -R 777 shared_folder
。我已切换到其他用户,并执行了相同的命令。我还尝试使用以下命令我在这里读(顺便说一句,我不知道自己在做什么):find somedir \( -type d -exec chmod u+rwx,g+rwx,o+rx {} \; -o -type f -exec chmod u+rw,g+rw,o+r {} \; \)
两个用户都可以访问同一个虚拟机...直到其中一个用户保存了机器状态。然后,另一个用户由于没有足够的读取权限而无法访问。
我如何与两个用户共享同一台虚拟机?
答案1
实际情况是,当保存机器状态时,创建的文件将根据当前用户获得权限。因此,所有其他用户都将被禁止使用这些新文件。
要修复此问题,您需要确保所有用户都在同一组中,并在文件夹上设置额外的位,这将导致所有子文件夹/文件继承相同的权限。
(1)创建一个群组,供用户共享:
添加一个组,例如:
sudo groupadd vboxsharing
(请注意,VirtualBox 已经安装了一个“vboxusers”组。它有特定用途,但您可以使用这个现有组,而不必添加新组。)
(2)添加用户到组:
需要访问共享虚拟机的用户需要添加到组中:
sudo usermod -a -G vboxsharing <user1>
sudo usermod -a -G vboxsharing <user2>
# ... etc.
注意:您也可以将该组设置为所有这些用户的主要组(sudo usermod -g vboxsharing <userXYZ>
),这意味着您可以跳过下面的步骤 3。但是,这样做存在安全风险,应避免。
(3)组可以访问的新 VirtualBox 文件:
更改文件夹的组所有权:
sudo chgrp -R vboxsharing /Users/shared_folder
并且设置位设置用户标识和设置组ID,以确保为该组创建未来的文件。
因此,对于您的文件夹,请执行以下操作:
sudo chmod -R 6770 /Users/shared_folder
权限位开头的 6 是 setuid 和 setgid 的组合:
- 设置 uid = 4
- 设置GID = 2
从技术上讲,您不需要 setuid。因此,只要有以下配置就足够了:
sudo chmod -R 2770 /Users/shared_folder
..
注意:
并且,您不需要那么长的find
命令,它是一个对文件应用不同的权限集和对文件夹应用不同的权限集的命令。
答案2
以前的解决方案对我来说不起作用。
我最终决定为每个用户创建不同的 VirtualBox 硬盘。
另一种方法是创建一个脚本来检查该文件夹是否属于当前用户。如果不是,请在打开 VirtualBox 之前更改权限。
我在这里写到了这两种方法:https://askubuntu.com/a/820614/279148