如何在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中看到这个测试文件了!

相关推荐
斯南1 小时前
wireshark的基本使用,过滤请求,过滤数据,追踪数据
网络·测试工具·wireshark
yenggd2 小时前
首次eve-ng锐捷设备园区网案例实现
网络·智能路由器
Deng8723473482 小时前
代码语法检查工具
linux·服务器·windows
Halo_tjn3 小时前
虚拟机相关实验概述
java·开发语言·windows·计算机
面向星辰5 小时前
桌面运维岗 day02 计算机硬件_内存条
网络
Cher ~5 小时前
OSI 七层模型
网络·智能路由器
programer_335 小时前
本地手动创建一个MCP(windows环境)
windows·python·ai·mcp·cherry studio
漫漫求5 小时前
ubuntu22.04 安装报错:grub-install/dev/sda 解决方案
ubuntu
曹牧5 小时前
Java:List<Map<String, String>>转换为字符串
java·开发语言·windows
克喵的水银蛇5 小时前
Flutter 网络请求实战:Dio 封装 + 拦截器 + 数据解析
网络·flutter