共计 10418 个字符,预计需要花费 27 分钟才能阅读完成。
目录:
1、Samba 服务概述:
1.1、Samba 的原理
1.2、NETBIOS 协议
2、Samba 应用环境
3、samba 服务
3.1、samba 的安装包:
3.2、samba 的进程文件:
3.3、samba 的文件:
4、主要配置文件 smb.conf
4.1、samba 配置简介
4.2、Global Settings
4.2.1)设置工作组或域名称
4.2.2)服务器描述
4.2.3)设置 samba 服务器安全模式
4.3、Share Definitions 共享服务的定义
4.3.1)设置共享名
4.3.2)共享资源描述
4.3.3)共享路径
4.3.4)设置匿名访问
4.3.5)设置访问用户
4.3.6)设置目录只读
4.3.7)设置目录可写
5、配置一个共享资源
6、samba 的命令与客户端访问
6.1、testparm:测试有效的 exports 内的属性
6.2、pdbedit:管理 smb 的用户数据库
6.3、smbpasswd:改变 samba 账户的密码
6.4、smbclient:unix 客户端访问工具
6.5、挂载访问
7、samba 搭建实例
7.1、smb 服务端搭建
8、修改配置文件,实战举例
8.1、例 1:匿名共享
8.2、例 2:通过用户名和密码共享文件。把 /sales 共享出去,只有知道用户名和密码的同事可以看这个共享
9、扩展参数
9.1、客户端访问控制
9.2、设置 Samba 的权限,允许 sales 组可以写
10、使用 GUI 工具 SWAT 管理 samba
1、Samba 服务概述:
samba 是基于 smb(Server Message Block)协议的一种实现方式。Samba 最先在 Linux
和 Windows 两个平台之间架起了一座桥梁,正是由于 Samba 的出现,我们可以在 Linux
系统和 Windows 系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等
等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提
供本地和远程联机打印。
1.1、Samba 的原理

1 2 3 | 1.SMB 是基于 NetBIOS 的一个网络文件共享协议,允许 cilent 从服务器端访问文件资源。2.NetBIOS 协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于 windows 平台间的通信。3.samba 就是基于 smb 开发的,让 unix 主机能够通过 mbr 协议与 windows 平台进行文件共享。 |
1.2、NETBIOS 协议
NetBIOS 是 Network Basic Input/Output System 的简称,网络基本输入 / 输出系统协
议。协议,一般指用于局域网通信的一套 API,是由 IBM 公司开发。主要作用:通过
NETBIOS 协议获得计算机名称,然后把计算机名解析为对应 IP 地址。
模式:C/S 模式
2、Samba 应用环境
1 2 3 4 | 文件和打印机共享:文件和打印机共享是 Samba 的主要功能,SMB 进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问哈。身份验证和权限设置:smbd 服务支持 user mode 和 domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。名称解析:Samba 通过 nmbd 服务可以搭建 NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的 NetBIOS 名解析为 IP 地址。浏览服务:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问 Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。 |
3、samba 服务
3.1、samba 的安装包:
1 2 3 4 5 6 | samba samba 服务器端程序。libsmbclient samba 客户端库文件。samba-client samba 客户端程序。samba-common samba 客户端以及服务端都会用到的文件,如 samba.conf 等。samba-winbind samba 对于 windows 域的支持的服务端的库。samba-winbind-clients samba windwos 域的客户端。 |
3.2、samba 的进程文件:
1 2 | nmbd:负责管理工作组,NetBIOS 名解析,并提供浏览服务显示网络上的共享资源列表。工作在 UDP 的 137,138 端口上。smbd:其主要功能就是用来管理 Samba 服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管,工作在 TCP 的 139 或 445 端口上。 |
3.3、samba 的文件:
1 2 3 4 | /etc/samba/smb.conf samba 的主要配置文件。/etc/samba/smbusers 共享服务中,linux 与 windows 的账号的映射,格式为 linuxuser = windowSUSEr1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba 用户账号密码存放的数据 库。 |
4、主要配置文件 smb.conf
4.1、samba 配置简介
smb.conf 文件的开头部分为 samba 配置简介,告诉我们 smb.conf 文件的作用及相关信息。
smb.conf 中以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考,不用修改它哈。
smb.conf 中还有以“;”开头滴,这些都是 samba 配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能。
4.2、Global Settings
Global Settings 设置为全局变量区域。那什么是全局变量哈?全局变量就是说我们只要在 global 时进行设置,那么该设置项目就是针对所有共享资源生效滴。这与以后我们学习的很多服务器配置文件相似哈。
该部分以 [global] 开始:
smb.conf 配置通用格式,对相应功能进行设置:字段 = 设定值
下面我们说下 [global] 常用字段及设置方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [global] [network] workgroup = MYGROUP # 工作组名称,要与 windows 的工作组名称一致。server string = Samba Server Version %v #samba 服务器描述 ; netbios name = MYSERVER ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 设置监听 的网卡 ; hosts allow = 127. 192.168.12. 192.168.13. # 设置可以访问的网段 log file = /var/log/samba/log.%m # 日志文件路径。max log size = 50 # 一个日志文件最大多少 Kb 进行轮替。[独立服务器设定 Standalone Server] security = user|share|domain # 安全认证方式 share:# 共享模式 user:# 使用 samba 服务器的密码库 domain:# 使用外部域服务器的密码。 passdb backend = tdbsam # 密码库格式。 |
1)设置工作组或域名称
工作组是网络中地位平等的一组计算机,可以通过设置 workgroup 字段来对 samba 服务器所在工作组或域名进行设置。
我们设置 samba 服务器的工作组为 CentOS
2)服务器描述
服务器描述实际上类似于备注信息哈,在一个工作组中,可能存在多台服务器,为了方便用户浏览,我们可以在 server string 配置相应描述信息,这样用户就可以通过描述信息知道自己要登录哪台服务器了啊~
我们设置 samba 描述信息为“CentOS File Server”。
3)设置 samba 服务器安全模式
samba 服务器有 share、user、server、domain 和 ads 五种安全模式,用来适应不同的企业服务器需求。
1 2 3 4 5 6 7 8 9 10 | (1)share 安全级别模式 客户端登录 samba 服务器,不需要输入用户名和密码就可以浏览 samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证 samba 服务器的安全性。(2)user 安全级别模式 客户端登录 samba 服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。(3)server 安全级别模式 客户端需要将用户名和密码,提交到指定的一台 samba 服务器上进行验证,如果验证出现错误,客户端会用 user 级别访问。(4)domain 安全级别模式 如果 samba 服务器加入 windows 域环境中,验证工作服将由 windows 域控制器负责,domain 级别的 samba 服务器只是成为域的成员客户端,并不具备服务器的特性,samba 早期的版本就是使用此级别登录 windows 域滴。(5)ads 安全级别模式 当 samba 服务器使用 ads 安全级别加入到 windows 域环境中,其就具备了 domain 安全级别模式中所有的功能并可以具备域控制器的功能。 |
4.3、Share Definitions 共享服务的定义
Share Definitions 设置对象为共享目录和打印机,如果我们想发布共享资源,需要对 Share Definitions 部分进行配置。Share Definitions 字段非常丰富,设置灵活。
我们先来讲下几个最常用的字段哈~
1)设置共享名
共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且共享名可以与原目录名不同。
共享名设置非常简单:[共享名]
我们来看个例子,Samba 服务器中有个目录为 /share,需要发布该目录成为共享目录,定义共享名为 public
2)共享资源描述
网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时知道共享资源的内容是什么哈。
格式:comment = 备注信息
举个例子哈,samba 服务器上有个 /sales 目录存放公司销售部的数据,为了对公司部门员工进行区分,可以添加备注信息。
3)共享路径
共享资源的原始完整路径,可以使用 path 字段进行发布,务必正确指定。
格式:path = 绝对地址路径
samba 服务器上 /share/tools 目录存放常用工具软件,需要发布该目录为共享,我们可以这样做。
4)设置匿名访问
共享资源如果对匿名访问进行设置,可以更改 public 字段。
格式:
1 2 | public = yes # 允许匿名访问 public = no # 禁止匿名访问 |
samba 服务器 /share 共享目录允许匿名用户访问,可以这样设置。
5)设置访问用户
如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用 valid users 字段进行设置哈~
格式:
1 2 | valid users = 用户名 valid users = @组名 |
我们来看下面一个例子哈,samba 服务器 /share/tech 目录存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为 tech, 经理帐号为 gm
6)设置目录只读
共享目录如果限制用户的读写操作,我们可以通过 readonly 实现哈~
格式:
1 2 | readonly = yes # 只读 readonly = no # 读写 |
samba 服务器公共目录 /public 存放大量共享数据,为保证目录安全我们只允许读取,禁止写入哈~
7)设置目录可写
如果共享目录允许用户写操作,可以使用 writable 或 write list 两个字段进行设置哈~
1 2 3 4 5 6 | writable 格式:writable = yes # 读写 writable = no # 只读 write list 格式:write list = 用户名 write list = @组名 |
注意:
[homes]为特殊共享目录,表示用户主目录。
[printers]表示共享打印机。
5、配置一个共享资源
1 2 3 4 5 6 | [share] # 设置共享名 comment = Home Directories # 描述 browseable = yes # 是否允许查看此共享内容。如果是否,后期通过绝对路径,可以查看到。path = /share # 共享路径,写绝对路径 public = yes # 允许匿名查看 readonly = yes |
6、samba 的命令与客户端访问
6.1、testparm:测试有效的 exports 内的属性
6.2、pdbedit:管理 smb 的用户数据库。
1 2 3 4 5 | pdbedit -L [-vm] 列出数据库中的用户等信息,-v详细信息,- w 使用 smbpasswd 格式。pdbedit -a -u [user] 新增一个用户,但必须存在实体用户。pdbedit -r -u [user] 修改一个用户的信息,需搭配其他参数,可参考 man 文档。pdbedit -x -u [user] 删除一个用户。pdbedit -a -m -u [machine account 计算机账号] 添加一个计算机账号,域相关。 |
6.3、smbpasswd:改变 samba 账户的密码。
1 2 3 4 5 | smbpasswd -a [user] 新增用户以及密码。smbpasswd -r [user] 修改用户密码。smbpasswd -x [user] 删除用户。smbpasswd -d [user] 禁止登陆。smbpasswd -e [user] 启用用户。 |
6.4、smbclient:unix 客户端访问工具。
1 2 3 4 5 6 7 8 9 | smbclient -L //IPADDR [-U smbuser] 测试查看目标服务器所开放的共享文件夹 smbclient //IPADDR/dir -U smbuser 连接共享服务器文件夹。[root@host2 ~]# smbclient //192.168.25.132/test -U zhanghe 命令行形式访问。Enter zhanghe's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \\> help ? allinfo altname archive blo cksize cancel case_sensitive cd chmod chown.... |
6.5、挂载访问。
1 | mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp |
7、samba 搭建实例
7.1、smb 服务端搭建:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | host1(192.168.1.1): [root@host1 ~]# yum install samba [root@host1 ~]# vim /etc/samba/smb.conf [test] comment = test on 192.168.25.132 server! path = /tmp/sambawritable = yesguest ok = yeswrite list = zhanghe [root@host1 ~]# testparm [root@host1 ~]# useradd zhanghe [root@host1 ~]# pdbedit -a -u zhanghe [root@host1 ~]# pdbedit -L [root@host1 ~]# mkdir -pv /tmp/samba [root@host1 ~]# setfacl -m u:zhanghe:rwx /tmp/samba [root@host1 ~]# service nmb start [root@host1 ~]# service smb start |
ps. 配置 iptables 并设置 selinux
8、修改配置文件,实战举例
8.1、例 1:匿名共享:
公司现在用一个工作组 Software,需要添加 samba 服务器作为文件服务器,并发布共享目
录 /share,共享名为 public, 这个共享目录允许所有公司员工访问。
1 2 3 4 5 6 7 8 9 10 11 12 | [root@host1 ~]# mkdir /share [root@host1 ~]# cp /etc/passwd !$ #复制一个测试文件 cp /etc/passwd /share [root@host1 ~]# vim /etc/samba/smb.conf [global] workgroup = Software # 工作组 server string = Software Samba Server #samba 服务器描述 security = share # 允许匿名访问 ============================ Share Definitions ==== [share] # 设置共享名 comment = Home Directories # 描述 path = /share # 共享路径,写绝对路径 public = yes # 允许匿名查看 |
2)重新加载配置
1 | [root@host1 ~]# |
8.2、例 2:通过用户名和密码共享文件。把 /sales 共享出去,只有知道用户名和密码的同事可以看这个共享。
我们需要将全局配置中 security 设置为 user 安全级别,然后在共享目录设置权限
注意:一定要先指定存放密码的文件位置:
2)修改 samba 主配置文件 smb.conf
改:
1 2 3 4 | passdb backend = tdbsam 为:passdb backend = smbpasswd smb passwd file = /etc/samba/smbpasswd |

1)添加销售部用户和组并添加相应 samba 帐号
使用 groupadd 命令添加 sales 组,然后执行 useradd 命令和 passwd 命令添加销售部员工的
帐号及密码。
1 2 3 4 5 | [root@host1 ~]# groupadd sales [root@host1 ~]# useradd -g sales sale1 [root@host1 ~]# useradd -g sales sale2 [root@host1 ~]# id sale2 uid=502(sale2) gid=501(sales) groups=501(sales) |

接下来为销售部成员添加相应 samba 帐号
1 | [root@host1 ~]# smbpasswd -a sale1 |

1 2 3 | [root@host1 ~]# ls /etc/samba/smbpasswd /etc/samba/smbpasswd[root@host1 ~]# cat !$ |

1 2 3 4 | [root@host1 ~]# smbpasswd -a sale2 New SMB password: Retype new SMB password: Added user sale2. |
2)修改 samba 主配置文件 smb.conf
(1). 设置 user 安全级别模式
1 | security = user |
设置目录:
1 | [root@host1 ~]# vim smb.conf |

创建共享目录:
创建共享目录:
1 2 3 | [root@host1 ~]# mkdir /sales [root@host1 ~]# cp /etc/passwd !$ cp /etc/passwd /sales |
3)重新加载配置
1 2 3 4 5 6 | [root@host1 ~]# service smb restart Shutting down SMB services: [OK] Starting SMB services: [OK] 测试:输入:用户:sale2 密码:123456 |
输入销售部的帐号及密码进行登录
这样销售部成员就可以进行访问 sales 共享目录下的数据了
9、扩展参数
9.1、客户端访问控制
hosts allow 和 hosts deny 的使用方法
1)hosts allow 和 hosts deny 字段的使用
1 2 | hosts allow 字段定义允许访问的客户端 hosts deny 字段定义禁止访问的客户端 |
这里我们添加 hosts deny 和 hosts allow 字段
1 2 | hosts deny = 192.168.0. 表示禁止所有来自 192.168.0.0/24 网段的 IP 地址访问 hosts allow = 192.168.0.24 表示允许 192.168.0.24 这个 IP 地址访问 |
当 host deny 和 hosts allow 字段同时出现并定义滴内容相互冲突时,hosts allow 优先。
9.2、设置 Samba 的权限,允许 sales 组可以写
设置系统权限
1 2 3 4 | [root@host1 ~]# chmod 777 /sales [root@host1 ~]# ll -d !$ ll -d /salesdrwxrwxrwx 2 root root 4096 Mar 7 21:50 /sales |
设置服务器权限:
1 | [root@host1 ~]# vim /etc/samba/smb.conf |
boss 用户和 sale 组都可以读写
write list = boss,@sales 就表示只有 boss 帐号和 sales 组,可以对 /sales 有写入权限
10、使用 GUI 工具 SWAT 管理 samba
swat 是 samba 的图形化管理工具,我们可以在配置后通过 http 来通过网页配置,并且内嵌
帮助文档,能够非常直观的配置 samba 服务,swat 是基于 xinetd 超级守护进程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@host1 tmp]# yum install xinetd -y 安装 xinetd 超级守护进程 [root@host1 tmp]# yum install samba-swat -y 安装 swat 程序,主机安装包名为 samba-swat,如果直接输入 swat 是找不到包的!![root@host1 tmp]#vim /etc/xinetd.d/swat 编辑 swat 的配置文件。# default: off # description: SWAT is the Samba Web Admin Tool. Use swat \\ # to configure your Samba server. To use SWAT, \\ # connect to port 901 with your favorite web brows er. service swat {port = 901 <--- 监听的端口默认为 901。socket_type = stream <--- socket 类型为 stream,面向连接的稳定数据传输,即为 TCP 协议。wait = no only_from = 192.168.25.0 <--- 只监听指定范围内的主机,即限制登陆主机,设置为 0.0.0.0 则默认为监听所有主机。user = root <--- 只允许使用指定用户登录。server = /usr/sbin/swat <--- 指定主程序路径。log_on_failure += USERID disable = no <--- 开启 swat 工具,yes为关闭。} [root@host1 tmp]# service xinetd start 开启 xinetd 服务即可,因为 swat 是由 xinetd 来管理的。[root@host1 tmp]# ss -tunl | grep 901 查看 901 端口号,的确为设置的 tcp 的 901 |

访问服务器的 901 端口:


———————————— 分割线 ————————————
如何在 Ubuntu 14.04 中使用 Samba 共享文件 http://www.linuxidc.com/Linux/2014-07/104894.htm
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 http://www.linuxidc.com/Linux/2013-06/85445.htm
Samba 文件共享服务器加入 Windows Server 2003 域 http://www.linuxidc.com/Linux/2013-06/86391.htm
Samba 安装配置 http://www.linuxidc.com/Linux/2013-06/86101.htm
CentOS 6.2 下 Samba 服务的配置 http://www.linuxidc.com/Linux/2013-01/78390.htm
Samba 服务器安装和配置 http://www.linuxidc.com/Linux/2014-12/110459.htm
Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm
———————————— 分割线 ————————————
Samba 的详细介绍:请点这里
Samba 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132609.htm






