凌峰创科服务平台

Linux SMB服务器如何配置与使用?

Linux 系统中搭建 SMB 服务器是实现跨平台文件共享的常见需求,SMB(Server Message Block)协议允许 Windows、Linux 和 macOS 等操作系统通过网络共享文件和打印机,本文将详细介绍在 Linux 环境下配置 SMB 服务器的完整流程,包括安装、配置、权限管理及常见问题解决,帮助用户快速搭建稳定高效的文件共享服务。

Linux SMB服务器如何配置与使用?-图1
(图片来源网络,侵删)

SMB 服务器的核心优势与适用场景

SMB 协议因其简单高效的特点,被广泛应用于企业内部文件共享、家庭局域网数据同步等场景,与 FTP 协议相比,SMB 支持实时文件锁定、用户权限精细控制,并能直接集成到操作系统的文件管理器中(如在 Windows 中通过 \\IP地址 访问),对于 Linux 服务器而言,通过 SMB 共享存储数据,可方便 Windows 用户与 Linux 系统进行文件交互,尤其适合混合操作环境的企业团队协作。

安装 SMB 服务器软件

在 Linux 中,最常用的 SMB 服务器软件是 Samba,它实现了 SMB/CIFS 协议,并提供了丰富的配置选项,以下以 Ubuntu/Debian 和 CentOS/RHEL 系统为例,介绍安装步骤。

Ubuntu/Debian 系统

sudo apt update  
sudo apt install samba -y  

CentOS/RHEL 系统

sudo yum install samba samba-client samba-common -y  

安装完成后,检查 Samba 服务状态:

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

配置共享目录与用户权限

Samba 的核心配置文件为 /etc/samba/smb.conf,用户可通过修改该文件定义共享目录、访问权限、用户认证等信息,以下是详细配置步骤:

Linux SMB服务器如何配置与使用?-图2
(图片来源网络,侵删)

备份原始配置文件

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak  

编辑配置文件

使用 vimnano 打开 /etc/samba/smb.conf,清空默认内容(或保留 [global] 全局配置段),添加自定义共享配置,以下为示例配置:

[global]  
   workgroup = WORKGROUP  # 设置工作组,需与Windows工作组一致  
   server string = Linux Samba Server  # 服务器描述信息  
   netbios name = LINUX-SAMBA  # NetBIOS名称,用于Windows识别  
   security = user  # 安全级别,"user"表示需用户认证  
   encrypt passwords = yes  # 启用密码加密  
   map to guest = bad user  # 拒绝匿名用户时映射为guest用户(可选)  
[shared]  # 共享名称,Windows访问时显示  
   comment = Public Shared Folder  # 共享描述  
   path = /home/samba/shared  # 共享目录路径  
   browseable = yes  # 是否在共享列表中可见  
   writable = yes  # 是否允许写入  
   guest ok = no  # 是否允许匿名访问  
   valid users = @samba_users  # 允许访问的用户组(需提前创建)  
   create mask = 0664  # 新建文件权限  
   directory mask = 0775  # 新建目录权限  

创建共享目录并设置权限

sudo mkdir -p /home/samba/shared  # 创建共享目录  
sudo chmod -R 775 /home/samba/shared  # 设置目录权限  
sudo chown -R root:samba_users /home/samba/shared  # 设置所有者与所属组  

添加 Samba 用户

Samba 用户需为系统已存在的用户,并通过 smbpasswd 命令设置密码:

sudo useradd -M -s /sbin/nologin samba_user1  # 创建系统用户(不允许登录)  
sudo smbpasswd -a samba_user1  # 设置Samba密码  
sudo groupadd samba_users  # 创建用户组  
sudo usermod -aG samba_users samba_user1  # 将用户加入用户组  

启动服务与防火墙配置

启动 Samba 服务

sudo systemctl restart smbd  # 重启SMB服务  
sudo systemctl restart nmbd  # 重启NetBIOS名称服务(用于局域网发现)  

配置防火墙

允许 Samba 服务通过防火墙(以 Ubuntu 为例):

sudo ufw allow samba  # 允许Samba相关端口(139, 445)  

对于 CentOS/RHEL 系统:

Linux SMB服务器如何配置与使用?-图3
(图片来源网络,侵删)
sudo firewall-cmd --permanent --add-service=samba  
sudo firewall-cmd --reload  

客户端访问测试

Windows 客户端

在文件资源管理器地址栏输入 \\Linux服务器IP\shared(如 \\192.168.1.100\shared),输入 Samba 用户名和密码即可访问共享目录。

Linux 客户端

安装 smbclient 工具进行命令行访问:

sudo apt install smbclient  # Ubuntu/Debian  
sudo yum install samba-client  # CentOS/RHEL  

列出共享资源:

smbclient -L //Linux服务器IP -U samba_user1  

挂载共享目录到本地:

sudo mkdir /mnt/samba_share  
sudo mount -t cifs //Linux服务器IP/shared /mnt/samba_share -o username=samba_user1,password=密码  

高级配置与优化

多共享目录配置

smb.conf 中添加多个 [共享名称] 段即可,

[project]  
   path = /home/samba/project  
   writable = yes  
   valid users = @samba_users  

用户权限精细控制

  • 只读用户:在 valid users 中指定用户,并设置 writable = no
  • 读写用户:确保用户对目录有写入权限,并通过 create maskdirectory mask 控制文件权限。

日志配置

[global] 段添加以下参数开启日志:

log file = /var/log/samba/log.%m  # 按机器名生成日志  
max log size = 50  # 日志文件最大50MB,超过则轮转  

常见问题排查

  1. 无法访问共享目录:检查防火墙设置、共享目录权限、Samba 用户密码是否正确。
  2. 权限错误:确保 valid users 中的用户对目录有操作权限,并检查 selinux 状态(可通过 setenforce 0 临时关闭测试)。

相关问答 FAQs

问题1:如何修改 Samba 共享目录的访问权限,仅允许特定用户读写?
解答:在 smb.conf 的共享配置段中,通过 valid users 指定用户,并关闭匿名访问。

[private]  
   path = /home/samba/private  
   writable = yes  
   guest ok = no  
   valid users = user1,user2  # 仅允许user1和user2访问  

修改后重启 smbd 服务,并将用户加入系统用户组并设置 Samba 密码。

问题2:Linux 客户端挂载 Samba 共享时报错“mount error(13): Permission denied”如何解决?
解答:通常由权限或 SELinux 导致,可尝试以下方法:

  1. 检查共享目录权限:chmod -R 775 目录 && chown -R 用户:组 目录
  2. 临时关闭 SELinux:sudo setenforce 0,若问题解决则需配置 SELinux 策略(semanage fcontext -a -t samba_share_t "目录路径" && restorecon -Rv 目录路径)。
  3. 确认 Samba 用户密码正确,且客户端挂载时使用的用户名与 Samba 用户一致。
分享:
扫描分享到社交APP
上一篇
下一篇