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

相关推荐
怣疯knight2 小时前
搜狗输入法在vecode中打出的是繁体,在其他软件打出的都是简体的解决办法
windows
Empty_7773 小时前
Ansible之Playbook简单应用
网络·ansible
Orlando cron3 小时前
CPU Load(系统平均负载)
运维·服务器·网络
Nimsolax4 小时前
Linux网络数据链路层
linux·网络
小武~4 小时前
嵌入式网络编程实战:从Socket基础到高并发优化
linux·网络
简鹿办公5 小时前
重大更新!Ubuntu Pro 现提供长达 15 年的安全支持
linux·安全·ubuntu
jenchoi4135 小时前
【2025-11-13】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全·npm
z10_145 小时前
动态住宅IP和静态住宅IP哪个更好
网络·tcp/ip·web安全
清静诗意6 小时前
Ubuntu 下 PostgreSQL 安装与配置完整指南
linux·ubuntu·postgresql