如何在Ubuntu虚拟机中设置Samba共享,并在Windows宿主机中挂载为网络驱动器

第1步:安装Samba

bash 复制代码
# 更新软件包列表
sudo apt update

# 安装Samba
sudo apt install samba samba-common-bin

# 检查安装是否成功
samba --version

第2步:创建共享目录

bash 复制代码
# 创建一个共享目录(你可以选择任何位置)
sudo mkdir -p /home/samba-share

# 查看创建的目录
ls -la /home/samba-share

第3步:设置目录权限

bash 复制代码
# 给目录设置宽松的权限(便于测试)
sudo chmod 777 /home/samba-share

# 或者更安全的设置(推荐)
sudo chown nobody:nogroup /home/samba-share
sudo chmod 755 /home/samba-share

第4步:备份原始配置文件

bash 复制代码
# 备份原始配置文件(重要!)
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

# 确认备份文件存在
ls -la /etc/samba/smb.conf*

第5步:编辑Samba配置文件

bash 复制代码
# 使用nano编辑器打开配置文件
sudo nano /etc/samba/smb.conf

在文件末尾添加以下内容:

选项A:简单共享(匿名访问,无需密码)

ini 复制代码
[MyShare]
   comment = My Shared Folder
   path = /home/samba-share
   browseable = yes
   read only = no
   guest ok = yes
   create mask = 0777
   directory mask = 0777

选项B:安全共享(需要用户名密码)

ini 复制代码
[MySecureShare]
   comment = My Secure Shared Folder
   path = /home/samba-share
   browseable = yes
   read only = no
   valid users = sambauser
   create mask = 0775
   directory mask = 0775

Ctrl + X,然后按 Y,最后按 Enter 保存文件。

第6步:创建Samba用户(如果选择了安全共享)

bash 复制代码
# 创建系统用户(如果不存在)
sudo useradd -m sambauser

# 设置系统用户密码
sudo passwd sambauser

# 设置Samba用户密码(可以与系统密码不同)
sudo smbpasswd -a sambauser

系统会提示你输入并确认Samba密码。

第7步:测试配置文件

bash 复制代码
# 测试配置文件语法是否正确
sudo testparm

如果看到类似下面的输出,说明配置正确:

复制代码
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[MyShare]"
Loaded services file OK.

第8步:重启Samba服务

bash 复制代码
# 重启Samba服务使配置生效
sudo systemctl restart smbd
sudo systemctl restart nmbd

# 检查服务状态
sudo systemctl status smbd

如果服务正常运行,你会看到 active (running) 的状态。

第9步:配置防火墙

bash 复制代码
# 允许Samba通过防火墙
sudo ufw allow samba

# 或者手动开放Samba端口
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp

# 检查防火墙状态
sudo ufw status

第10步:获取虚拟机IP地址

bash 复制代码
# 查看虚拟机的IP地址
ip addr show

# 或者使用
hostname -I

记下IP地址,例如:192.168.1.100

第11步:在Windows宿主机中测试连接

方法1:通过文件资源管理器映射

  1. 打开"文件资源管理器"
  2. 右键点击"此电脑" → 选择"映射网络驱动器"
  3. 在"文件夹"栏输入:\\你的虚拟机IP\MyShare
    • 例如:\\192.168.1.100\MyShare
  4. 如果设置了密码认证:
    • 勾选"使用其他凭据连接"
    • 点击"完成"
    • 输入用户名:sambauser
    • 输入Samba密码
  5. 点击"完成"

方法2:通过运行对话框

  1. Win + R
  2. 输入:\\你的虚拟机IP
    • 例如:\\192.168.1.100
  3. 点击"确定"
  4. 双击共享文件夹"MyShare"

第12步:测试文件传输

在映射的网络驱动器中:

  • 创建一个新文件夹
  • 复制一个文件到共享目录
  • 从共享目录复制文件到本地

然后在虚拟机中检查文件:

bash 复制代码
# 查看共享目录中的文件
ls -la /home/samba-share

第13步:故障排除

如果连接失败,尝试以下诊断步骤:

检查网络连通性:

bash 复制代码
# 在宿主机ping虚拟机
ping 192.168.1.100

检查Samba服务:

bash 复制代码
# 查看Samba服务状态
sudo systemctl status smbd

# 查看Samba日志
sudo tail -f /var/log/samba/log.smbd

测试本地Samba连接:

bash 复制代码
# 在虚拟机本地测试Samba共享
smbclient -L localhost

检查端口监听:

bash 复制代码
# 检查Samba是否在监听端口
sudo netstat -tlnp | grep smb

第14步:创建测试文件

bash 复制代码
# 在共享目录创建测试文件
sudo touch /home/samba-share/test-file.txt
sudo echo "This is a test file from Samba share" > /home/samba-share/test-file.txt

# 设置文件权限
sudo chmod 666 /home/samba-share/test-file.txt

现在你应该能在Windows中看到这个测试文件了!

相关推荐
三言老师5 小时前
K8s集群运行时自动化运维全覆盖落地实操(下)
linux·运维·服务器·网络
80s7776 小时前
住宅代理解析:动态住宅IP与静态住宅IP如何选型?
网络·网络协议·tcp/ip
吴声子夜歌7 小时前
网络安全——网络渗透测试(网络扫描)
网络·web安全·php
fish-man7 小时前
ceshi ceshi yixia
网络·安全·web安全
anxiao_m7 小时前
2026制造业云桌面选型攻略,不同生产场景适配方案汇总
大数据·网络·数据库
Mr.亮先生8 小时前
# 把 DeepSeek 官方 Agent 工作台,直接装进 Windows 启动器里
windows·deepseek·harness
吹什么轩9 小时前
linux网络:TCP套接字基础
linux·网络·tcp/ip
志栋智能9 小时前
安全超自动化:构建全方位安全可观测性的基础
网络·安全·自动化
时空无限10 小时前
ubuntu dpkg -l 输出第一列解释
linux·运维·ubuntu
mqiqe10 小时前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
java·开发语言·网络