VMware 虚拟机与主机文件共享方法(无需 sudo 权限)
一、共享文件夹(无需 sudo)
适用场景
需频繁传输文件且虚拟机已安装 VMware Tools。
操作步骤
启用 VMware 共享文件夹(主机操作)
VMware 设置 → 选项 → 共享文件夹 → 添加主机目录(如 C:\VM_Shared)。
在虚拟机中挂载到用户目录(无需 sudo)
# 手动挂载到用户目录(假设共享目录名为 VM_Shared)
mkdir -p ~/shared_folder
vmhgfs-fuse .host:/VM_Shared ~/shared_folder -o allow_other -o uid=$(id -u) -o gid=$(id -g)
参数说明:
allow_other:允许其他用户访问。uid/gid:绑定到当前用户权限(通过 id -u 和 id -g 获取)。
验证访问
ls ~/shared_folder # 查看文件
cp ~/file.txt ~/shared_folder/ # 复制文件到共享目录
注意事项
依赖 VMware Tools:需提前安装 VMware Tools(可能需要管理员权限)。重启后失效:手动挂载需每次重启后重新执行命令。权限问题:确保主机共享目录权限开放(Windows 右键目录 → 属性 → 共享)。
二、网络共享(无需 sudo)
适用场景
无法使用共享文件夹或需要跨平台传输。
方法 1:Python HTTP 服务器
在虚拟机启动服务
# 进入需共享的目录
cd ~/my_files
# 启动 HTTP 服务(端口 8000)
python3 -m http.server 8000
主机访问下载文件
浏览器访问 http://虚拟机IP:8000(通过 hostname -I 获取虚拟机 IP)。
在主机启动 HTTP 服务器(Python3)
python3 -m http.server 8000
在虚拟机内下载文件:确保主机和虚拟机在同一网络。
wget http://主机IP:8000/文件名 -O ~/下载的文件名
方法 2:SCP/SFTP(需 SSH 服务)
虚拟机启用 SSH(需已安装)
# 检查 SSH 服务状态(若已安装)
systemctl --user status ssh
从主机传输文件(无需 sudo)
# 示例:从主机复制到虚拟机用户目录
scp -P 22 主机文件路径 用户名@虚拟机IP:~/目标路径/
注意事项
SSH 服务依赖:若未安装 OpenSSH,需管理员权限安装。防火墙限制:确保虚拟机防火墙开放端口(如 8000、22)。IP 变动问题:建议虚拟机使用静态 IP 或通过 hostname -I 查询动态 IP。
三、U 盘共享(无需 sudo)
适用场景
需物理介质传输或网络不可用。
操作步骤
U 盘格式化为 FAT32/exFAT(主机操作)
Windows:右键 U 盘 → 格式化 → 选择 exFAT。Linux:使用图形化工具(如 GParted)格式化(可能需要临时借用管理员权限)。
在虚拟机中挂载 U 盘(自动或手动)
自动挂载:VMware 菜单 → 可移动设备 → U 盘 → 连接,文件默认在 /media/$USER。手动挂载(用户目录):
mkdir ~/usb
vmhgfs-fuse .host:/USB_NAME ~/usb -o allow_other
复制文件
cp ~/file.txt ~/usb/ # 虚拟机 → U 盘
cp ~/usb/file.txt ~/ # U 盘 → 虚拟机
注意事项
文件系统兼容性:避免使用 ext4,Windows 不识别。安全卸载:VMware 菜单 → 可移动设备 → U 盘 → 断开连接,防止文件损坏。权限问题:若手动挂载失败,检查 U 盘名称是否匹配(通过 ls /mnt/hgfs/ 查看)。
四、通用技巧(无需 sudo)
1. 用户空间工具
下载预编译工具:
将工具(如 vmhgfs-fuse 静态版)解压到 ~/bin,通过 export PATH=$PATH:~/bin 加入路径。
2. 临时文件目录
使用 /tmp 或用户目录:
cp /mnt/hgfs/共享文件 /tmp/ # 绕过权限限制
3. 环境变量覆盖
强制程序使用用户目录:
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
五、故障排查
挂载失败:
dmesg | tail # 查看设备识别日志
lsblk # 检查 U 盘设备名(如 /dev/sdb1)
网络不通:
ping 主机IP # 测试连通性
netstat -tuln # 检查端口监听状态
总结
方法优点缺点共享文件夹速度快,无缝集成依赖 VMware ToolsPython HTTP 服务器无需安装,跨平台需开放端口U 盘物理隔离,无需网络需手动插拔,兼容性要求
通过以上方法,可在无 sudo 权限时灵活实现文件共享,优先推荐 Python HTTP 服务器 和 U 盘手动挂载,兼顾效率与安全性。
在实操的过程中,使用U盘共享会损坏文件,后改使用网络共享。(无需 sudo 权限)