linux下samba和cifs两者的关系/区别

1.基本概念

  • Samba

    • 一个 开源软件套件,运行在 Linux/Unix 系统上,实现了 SMB/CIFS 协议。
    • 主要功能是让 Linux/Unix 系统和 Windows 之间进行 文件共享、打印共享、域控制 等。
    • 服务端:smbd(文件/打印服务)、nmbd(NetBIOS 名称解析)。
  • CIFS (Common Internet File System)

    • 一种 网络文件系统协议,是 SMB (Server Message Block) 的扩展版本。
    • 用于 Windows/Linux/Mac 等操作系统之间的 文件共享访问
    • Windows 默认文件共享就是基于 SMB/CIFS 协议。

换句话说:

  • CIFS 是协议
  • Samba 是协议的开源实现

2. 协议演进

  • SMB 1.0 → CIFS (90年代 Windows NT/2000 时代流行)
  • SMB 2.x → Windows Vista/7 开始引入,性能大幅提升
  • SMB 3.x → Windows 8/Server 2012 之后增强安全性和加密

现在 CIFS(SMB1.0)已经过时,因为:

  • 性能差
  • 不支持加密
  • 存在严重安全漏洞(如 WannaCry 勒索病毒利用 SMBv1 漏洞传播)

所以 现代 Samba 默认使用 SMB2/SMB3,只在兼容性需要时启用 CIFS(SMB1)。


3. 应用场景

  • Linux 作为 Samba 服务端

    • Windows 客户端 → \\server\share
    • Linux 客户端 → mount -t cifs //server/share /mnt/share -o username=user,password=pass
  • Linux 作为 Samba 客户端

    • 使用 mount -t cifs 挂载 Windows 共享目录
    • 使用 smbclient 命令行工具访问共享

4. 配置示例

Samba 服务端配置(/etc/samba/smb.conf)

1
2
3
4
5
6
7
8
9
10
11
12
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
map to guest = bad user

[share]
path = /data/share
browsable = yes
writable = yes
guest ok = yes
read only = no

客户端挂载 CIFS

1
2
3
4
5
6
# 安装工具
yum install cifs-utils # CentOS/RHEL
apt install cifs-utils # Debian/Ubuntu

# 挂载命令
mount -t cifs //192.168.1.10/share /mnt/share -o username=user,password=123456,vers=3.0

vers=3.0 指定 SMB 版本,避免旧版本兼容问题。


5. 对比总结

项目 Samba CIFS/SMB 协议
类型 开源软件实现 协议规范
作用 提供文件/打印/域共享服务 定义共享访问方式
使用场景 Linux/Unix ↔ Windows 共享 Windows 原生文件共享
版本支持 SMB1 (CIFS)、SMB2、SMB3 最初是 SMB1 (CIFS)

一句话总结:
CIFS 是 SMB1 协议的别称,Samba 是 SMB/CIFS 协议的开源实现;现在推荐使用 SMB2/3 取代过时的 CIFS。