当前位置:首页 > 系统教程 > 正文

Linux Samba共享配置教程 (手把手教你搭建SMB文件服务器)

1. 什么是Samba?

Samba是一个开源软件,它实现了SMB/CIFS协议,使得Linux系统可以扮演文件服务器角色,与Windows、macOS等系统无缝共享文件和打印机。简单说,通过搭建Samba服务器,你的Linux电脑就能变成一台强大的网络文件共享中心,其他设备可以像访问本地磁盘一样访问Linux上的文件夹。

2. 安装Samba

Debian/Ubuntu系统:

sudo apt updatesudo apt install samba -y

RHEL/CentOS系统:

sudo yum install samba samba-client -y

安装完成后,可以检查版本:samba --version

3. 创建共享目录

假设我们要共享一个名为 myshare 的文件夹,放在 /srv 下:

sudo mkdir -p /srv/mysharesudo chmod 777 /srv/myshare   # 简单演示,正式环境请按需设置权限

注意:生产环境建议使用更严格的权限(如755),并控制所有者。

4. 配置Samba主文件 smb.conf

编辑配置文件:

sudo nano /etc/samba/smb.conf

在文件末尾添加共享定义:

[myshare]   comment = My Shared Folder   path = /srv/myshare   browseable = yes   read only = no   guest ok = no   # 禁止匿名访问,需要用户认证   valid users = smbuser   # 指定可访问的用户

保存退出。常用参数说明:path 指定共享路径;browseable 是否在网络上可见;read only 是否只读;guest ok 是否允许访客;valid users 允许的用户列表。

5. 添加Samba用户

Samba使用独立的用户数据库,需要将系统用户添加到Samba中并设置密码:

sudo useradd smbuser   # 如果该用户不存在则创建sudo smbpasswd -a smbuser   # 设置Samba密码,会提示输入两次

启用该用户:sudo smbpasswd -e smbuser

6. 启动与启用Samba服务

sudo systemctl start smbd      # 启动Samba服务sudo systemctl enable smbd     # 设置开机自启sudo systemctl status smbd     # 查看服务状态

在较新版本中可能还有 nmbd 服务(用于NetBIOS名称解析),可按需启动:sudo systemctl start nmbd

7. 防火墙放行Samba

如果系统防火墙开启,需要允许Samba服务:

# firewalld (CentOS/RHEL)sudo firewall-cmd --add-service=samba --permanentsudo firewall-cmd --reload# ufw (Ubuntu)sudo ufw allow samba

或者直接开放端口:TCP 139,445 和 UDP 137,138。

8. 客户端访问测试

Windows: 在文件资源管理器地址栏输入 \Linux服务器IP\myshare,然后输入刚才设置的smbuser和密码即可。

Linux: 安装smbclient:sudo apt install smbclient,列出共享:smbclient -L //服务器IP -U smbuser;挂载共享:sudo mount -t cifs //服务器IP/myshare /mnt -o username=smbuser

如果遇到权限问题,检查SELinux:sudo setsebool -P samba_export_all_rw on 或临时关闭SELinux测试。

9. 常见问题

  • 无法连接: 检查防火墙、Samba服务状态、smb.conf语法(testparm命令测试)。
  • 权限拒绝: 确保共享目录的Linux权限允许smbuser读写,并且smb.conf中read only设置正确。
  • 访问慢: 可以禁用DNS解析,在smb.conf的[global]段添加 name resolve order = hosts lmhosts wins bcast

通过以上步骤,你已经成功搭建了一个SMB共享服务器,实现了Linux共享给多平台设备。记得在生产环境中精细调整权限和安全性。