在 Ubuntu 上部署 SMB 文件共享并在 Windows 10 访问

在局域网环境中,使用 SMB(Samba) 可以方便地在 Ubuntu 和 Windows 之间共享文件。本教程介绍如何在 Ubuntu 上配置 SMB 共享 /mnt/vdb/mnt/vdc/mnt/vdd,并在 Windows 10 访问它们。


1. 安装 Samba

Ubuntu 默认未安装 Samba,需要手动安装:

1
2
sudo apt update
sudo apt install samba -y

安装完成后,可以检查 Samba 版本以确认安装成功:

1
smbd --version

2. 配置 Samba 共享

2.1 创建共享目录(可选)

如果 /mnt/vdb/mnt/vdc/mnt/vdd 目录不存在,可以创建并设置权限:

1
2
sudo mkdir -p /mnt/vdb /mnt/vdc /mnt/vdd
sudo chmod 777 /mnt/vdb /mnt/vdc /mnt/vdd # 赋予所有用户读写权限(可根据需求调整)

如果这些目录已挂载,需要确保它们具有合适的权限,否则共享可能无法访问。

2.2 编辑 Samba 配置

Samba 的配置文件位于 /etc/samba/smb.conf,使用 Vim 或 Nano 编辑:

1
sudo vim /etc/samba/smb.conf

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[vdb]
path = /mnt/vdb
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
directory mask = 0777

[vdc]
path = /mnt/vdc
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
directory mask = 0777

[vdd]
path = /mnt/vdd
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
directory mask = 0777

其中 guest ok = yes 允许匿名访问,如果需要基于用户身份进行访问控制,可以在后面配置 Samba 账户。

保存并退出编辑器。

2.3 创建 Samba 用户(可选)

如果不想开放匿名访问,而是要求用户登录,可以创建一个 Samba 账户,例如 smbuser

1
2
sudo adduser smbuser
sudo smbpasswd -a smbuser

然后修改共享配置,将 guest ok = no,并添加 valid users = smbuser

1
2
3
4
5
6
7
8
[vdb]
path = /mnt/vdb
browseable = yes
writable = yes
guest ok = no
valid users = smbuser
create mask = 0777
directory mask = 0777

3. 重启 Samba 并验证配置

修改配置后,重新启动 Samba 使其生效:

1
2
sudo systemctl restart smbd
sudo systemctl restart nmbd # 用于网络发现(可选)

检查 Samba 是否正常运行:

1
sudo systemctl status smbd

还可以测试 Samba 配置是否正确:

1
testparm

如果没有错误,则表示配置生效。


4. 在 Windows 10 访问共享文件

4.1 通过文件资源管理器访问

在 Windows 10 上打开文件资源管理器,在地址栏输入:

1
\\<Ubuntu_IP>

例如,Ubuntu 服务器 IP 为 192.168.1.100,则输入:

1
\\192.168.1.100

Enter 后,如果使用匿名访问,则会直接看到 vdbvdcvdd 三个共享文件夹;如果需要登录,Windows 会弹出身份验证窗口,输入 smbuser 及其密码即可。

4.2 映射为网络驱动器

如果希望 Windows 直接挂载这些共享目录,可以右键 “此电脑”“映射网络驱动器”,输入共享路径,例如 \\192.168.1.100\vdb,并选择 “重新连接时还原”,这样 Windows 每次开机都会自动挂载共享目录。


5. 技术细节与注意事项

5.1 防火墙配置

如果 Ubuntu 服务器启用了 UFW 防火墙,需要允许 Samba 访问:

1
2
sudo ufw allow samba
sudo ufw reload

5.2 SELinux 或 AppArmor 限制(如果适用)

部分系统启用了 SELinux 或 AppArmor 可能会阻止 Samba 访问 /mnt 目录,可以通过以下命令检查日志并排除问题:

1
sudo dmesg | grep DENIED

如果使用 SELinux,可以运行以下命令修复:

1
sudo setsebool -P samba_enable_home_dirs on

对于 AppArmor,可以创建 samba 相关的权限规则或禁用相关限制。

5.3 挂载 NTFS 或其他外部磁盘

如果 /mnt/vdb/mnt/vdc/mnt/vdd 是外部磁盘,并且使用 NTFS 文件系统,需要确保正确挂载,否则可能导致 Samba 无法写入。建议在 /etc/fstab 配置正确的挂载方式,例如:

1
UUID=xxxx-xxxx /mnt/vdb ntfs defaults,uid=1000,gid=1000,dmask=000,fmask=111 0 0

6. 结论

本教程介绍了如何在 Ubuntu 上配置 Samba 共享 /mnt/vdb/mnt/vdc/mnt/vdd 并在 Windows 10 访问。Samba 使得不同操作系统之间的文件共享变得简单高效,同时也提供了丰富的用户权限管理选项。

如果希望进一步优化,例如 使用 SMB3 加密传输限制特定 IP 访问,可以参考 Samba 官方文档或结合实际需求进行高级配置。