【VMware】Ubuntu 22.04 与 Windows 跨系统文件共享的完整方案

1. 引言

这应该也是个比较常见的需求,最近刚好就用到了,特在此记录一下。

先说一下我的需求,看到的朋友可以根据自己的需求而定:
Windows 上某个程序需要 Ubuntu 上的某个工程的路径。

这篇随笔目的是:

  1. 将 Windows 的文件共享到 Ubuntu 中
    aim:方便将 Windows 本地文件工程转移到 Ubuntu
  2. 将 Ubuntu 的文件共享到 Windows 中
    aim:方便 Windows 某些程序方便定位某些位于 Ubuntu 上目标文件夹的路径

2. 参考文章

【详细步骤】Ubuntu安装Samba服务及配置共享文件夹
Ubuntu共享文件夹的创建和使用
Ubuntu22.04设置共享文件夹

3. Windows 文件共享到 Ubuntu

3.1 步骤一:设置 Windows 下的共享文件

我使用的是 VMware 这款虚拟机平台(其他的应该也差不多),操作如下:

  1. 右键虚拟机 -> 设置
  2. 选项 -> 共享文件夹 -> 添加 -> 选择 Windows 下的一个文件夹

image

3.2 步骤二:将共享文件夹挂载在 Ubuntu 下

  1. 安装/更新工具包
// 以管理员权限更新系统软件包索引
sudo apt update

// 安装 VMware Tools 的开源替代版 open-vm-tools(实现虚拟机与主机的基础交互 / 共享功能)
sudo apt install open-vm-tools

// 更新 FUSE 版本
sudo apt-get install fuse
  1. 共享文件的文件夹位置在/mnt/hgfs/目录下,假如没有这个目录,就创建一个
sudo mkdir -p /mnt/hgfs/
  1. 敲指令进入此目录,并进行挂载
// 进入 /mnt/hgfs/ 目录
cd /mnt/hgfs/

// 通过 VMware 的 hgfs 工具将主机所有共享文件夹挂载到虚拟机的/mnt/hgfs目录
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000,gid=1000,umask=022

// allow_other:允许普通用户访问挂载目录
// uid=1000:将挂载目录的文件所有者设为 UID=1000 的普通用户(避免仅 root 可访问,可通过`id`命令查看)
// gid=1000:将挂载目录的文件所属组设为 GID=1000 的用户组
// umask=022:设置挂载目录的默认权限(让普通用户可读可写,其他用户只读)
  1. 设置开机自动挂载
// 打开开机配置文件夹,编辑开机自动执行的命令
sudo nano /etc/rc.local

// 在配置文件夹中输入,即可完成开机自动挂载共享文件夹:
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000,gid=1000,umask=022

可以看到,已经挂载成功:

image

4. Ubuntu 文件共享到 Windows

4.1 步骤一:安装 samba 工具,设置共享目录的读写权限

// 以管理员权限更新系统软件包索引
sudo apt update

// Samba 服务的主程序(实现 Linux 与 Windows 的文件共享)
// Samba 的通用配置文件和工具(提供共享配置的基础依赖)
// Samba 的客户端工具(用于在 Linux 终端测试 / 访问远程共享目录)
sudo apt-get install samba samba-common smbclient

// 将home设置为共享
sudo chmod 777 /home

4.2 步骤二:samba 配置

  1. 添加 samba 用户,并设置密码

    // 输入两次密码
    sudo smbpasswd -a 用户名
    
  2. 使用 nano 修改 samba 配置文件

    // 个人习惯用 nano
    sudo nano /etc/samba/smb.conf
    
    添加:
    [share]
    # 共享描述
    comment = share folder
    # 允许网络中可见该共享
    browseable = yes
    # 共享文件夹的实际路径
    path = /home
    # 新建文件的默认权限(仅文件所有者可读/写/执行)
    create mask = 0700
    # 新建文件夹的默认权限(仅文件夹所有者可读/写/执行)
    directory mask = 0700
    # 仅允许xxx用户访问该共享
    valid users = shf       
    # 强制将共享内文件的所有者设为xxx(避免权限混乱)
    force user = shf        
    # 强制将共享内文件的所属组设为xxx
    force group = shf       
    # 允许匿名访问(注:与valid users冲突,实际仅shf可访问)
    public = yes            
    # 启用该共享(设为no则禁用)
    available = yes         
    # 允许对共享目录进行写入/修改/删除操作
    writable = yes          
    

    如图,将其添加到此文件最后的位置:

    image

  3. 重启samba服务器

    sudo service smbd restart
    
  4. 查看主机静态 IP 并测试是否能 Ping 通
    由于之前已经配置好了简单的三网段,可以参考这篇文章:

    【Ubuntu】Ubuntu 虚拟机配置三网段(桥接-WIFI、仅主机、桥接-开发板)

    查看 IP 地址:

    	ifconfig
    返回如下图,其中`192.168.184.184`则是我给仅主机设置的静态 IP 地址,待会要用到。
    

    image

    // 输入:
    ping -c 3 192.168.184.1
    返回:
    PING 192.168.184.1 (192.168.184.1) 56(84) bytes of data.
    64 bytes from 192.168.184.1: icmp_seq=1 ttl=128 time=0.378 ms
    64 bytes from 192.168.184.1: icmp_seq=2 ttl=128 time=0.423 ms
    64 bytes from 192.168.184.1: icmp_seq=3 ttl=128 time=0.438 ms
    
    --- 192.168.184.1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2050ms
    rtt min/avg/max/mdev = 0.378/0.413/0.438/0.025 ms
    
  5. 测试 Samba 共享是否正常

    输入:
    smbclient -L //localhost/home -U 用户名
    输入密码后即可返回:
    		Sharename       Type      Comment
    		---------       ----      -------
    		home            Disk      home guest share
    		print$          Disk      Printer Drivers
    		IPC$            IPC       IPC Service (ubuntu-skyrim server (Samba, Ubuntu))
    SMB1 disabled -- no workgroup available
    
  6. Windows 操作挂载共享文件夹
    右键此电脑,选择映射网络驱动。

    image

    选择一个驱动器,这里我选择了 H盘(由于我已经配置过了,所以后面会显示我的静态 IP 地址和共享文件夹),文件夹那里根据示例来填写即可:

    \\192.168.184.184\share
    注意这里 IP 地址后面好像只能填 share,我这里填写 home 不行。
    填写完后输入你的 Ubuntu 用户名和密码即可。
    

    image

  7. 打开此电脑,查看共享文件夹
    看到在网络位置多了一个盘,就说明挂载成功了。

    image

博客导航

博客导航

posted @ 2025-12-22 20:37  膝盖中箭卫兵  阅读(5055)  评论(4)    收藏  举报
ORCID iD icon https://orcid.org/0000-0001-5102-772X