Centos部署Samba企业文件共享服务
声明:本文参考了网上部分资料加作者实验总结
目录:
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.3、smbpasswd:改变samba账户的密码
6.4、smbclient:unix客户端访问工具
6.5、挂载访问
7、samba搭建实例
7.1、smb服务端搭建
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
|
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服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
|
3、samba服务
3.1、samba的安装包:
1
2
3
4
5
@H_404_248@
6
|
sambasamba服务器端程序。
libsmbclientsamba客户端库文件。
samba-clientsamba客户端程序。
samba-commonsamba客户端以及服务端都会用到的文件,如samba.conf等。
samba-winbindsamba对于windows域的支持的服务端的库。
samba-winbind-clientssambawindwos域的客户端。
|
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
.confsamba的主要配置文件。
/etc/samba/smbusers
共享服务中,linux与windows的账号的映射,格式为linuxuser=windowsuser1,windowsuser2
/var/lib/samba/private/passdb
.tdb/secrets.tdbsamba用户账号密码存放的数据
库。
|
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
@H_404_248@
6
7
8
9
10
11
12
13
14
15
16
17
|
[global]
[network]
serverstring=SambaServerVersion%
v
#samba服务器描述
;netbiosname=MYSERVER
;interfaces=loeth0192.168.12.2
/24
192.168.13.2
/24
#设置监听
的网卡
;hostsallow=127.192.168.12.192.168.13.
#设置可以访问的网段
[login]
maxlogsize=50
#一个日志文件最大多少Kb进行轮替。
[独立服务器设定StandaloneServer]
security=user|share|domain
#安全认证方式
share:
#共享模式
user:
#使用samba服务器的密码库
domain:
#使用外部域服务器的密码。
passdbbackend=tdbsam
#密码库格式。
|
1)设置工作组或域名称
工作组是网络中地位平等的一组计算机,可以通过设置workgroup字段来对samba服务器所在工作组或域名进行设置。
我们设置samba服务器的工作组为CentOS
2)服务器描述
服务器描述实际上类似于备注信息哈,在一个工作组中,可能存在多台服务器,为了方便用户浏览,我们可以在server string配置相应描述信息,这样用户就可以通过描述信息知道自己要登录哪台服务器了啊~
我们设置samba描述信息为“CentOSFile Server”。
3)设置samba服务器安全模式
samba服务器有share、user、server、domain和ads 五种安全模式,用来适应不同的企业服务器需求。
1
2
3
4
5
@H_404_248@
6
7
8
9
10
|
(1)share安全级别模式
(2)user安全级别模式
客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
(3)server安全级别模式
客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。
(4)domain安全级别模式
如果samba服务器加入windows域环境中,验证工作服将由windows域控制器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows域滴。
(5)ads安全级别模式
|
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
=@组名
|
我们来看下面一个例子哈,samba服务器/share/tech目录存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为tech,经理帐号为gm
6)设置目录只读
共享目录如果限制用户的读写操作,我们可以通过readonly实现哈~
格式:
1
2
|
readonly
=
yes
#只读
readonly
=no
#读写
|
samba服务器公共目录/public存放大量共享数据,为保证目录安全我们只允许读取,禁止写入哈~
7)设置目录可写
如果共享目录允许用户写操作,可以使用writable或write list两个字段进行设置哈~
1
2
3
4
5
@H_404_248@
6
|
writable格式:
writable=
yes
#读写
writable=no
#只读
writelist格式:
writelist=用户名
writelist=@组名
|
注意:
[homes]为特殊共享目录,表示用户主目录。
[printers]表示共享打印机。
5、配置一个共享资源
1
2
3
4
5
@H_404_248@
6
|
[share]
#设置共享名
comment=HomeDirectories
#描述
public=
yes
#允许匿名查看
readonly
=
yes
|
6、samba的命令与客户端访问
6.1、testparm:测试有效的exports内的属性
1
2
3
4
5
|
pdbedit-a-m-u[machineaccount计算机账号]添加一个计算机账号,域相关。
|
6.3、smbpasswd:改变samba账户的密码。
1
2
3
4
5
|
smbpasswd-a[user]新增用户以及密码。
smbpasswd-d[user]禁止登陆。
smbpasswd-e[user]启用用户。
|
6.4、smbclient:unix客户端访问工具。
1
2
3
4
5
@H_404_248@
6
7
8
9
|
[root@host2~]
#smbclient//192.168.25.132/test-Uzhanghe命令行形式访问。
Enterzhanghe'spassword:
Domain=[MYGROUP]OS=[Unix]Server=[Samba3.6.23-30.el6_7]
smb:\\>help
?allinfoaltnamearchiveblo
cksize
cancelcase_sensitive
cd
chmod
chown
....
|
6.5、挂载访问。
1
|
mount
-tcifs-ousername=zhanghe,password=123456-l
//192
.168.25.132
/test
/tmp
|
7、samba搭建实例
7.1、smb服务端搭建:
1
2
3
4
5
@H_404_248@
6
7
8
9
10
11
12
13
14
15
16
17
|
host1(192.168.1.1):
[root@host1~]
#yuminstallsamba
[root@host1~]
#vim/etc/samba/smb.conf
[
test
]
comment=
test
on192.168.25.132server!
path=
/tmp/samba
writable=
yes
guestok=
yes
writelist=zhanghe
[root@host1~]
#testparm
[root@host1~]
#useraddzhanghe
[root@host1~]
#pdbedit-a-uzhanghe
[root@host1~]
#pdbedit-L
[root@host1~]
#mkdir-pv/tmp/samba
[root@host1~]
#setfacl-mu:zhanghe:rwx/tmp/samba
[root@host1~]
#servicenmbstart
[root@host1~]
#servicesmbstart
|
ps.配置iptables并设置selinux
8.1、例1:匿名共享:
公司现在用一个工作组Software, 需要添加samba 服务器作为文件服务器,并发布共享目
录/share,共享名为public,这个共享目录允许所有公司员工访问。
1
2
3
4
5
@H_404_248@
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
#工作组
serverstring=SoftwareSambaServer
#samba服务器描述
security=share
#允许匿名访问
============================ShareDefinitions====
[share]
#设置共享名
comment=HomeDirectories
#描述
public=
yes
#允许匿名查看
|
2)重新加载配置
1
|
[root@host1~]
#
|
8.2、例2:通过用户名和密码共享文件。把/sales 共享出去,只有知道用户名和密码的同事可以看这个共享。
我们需要将全局配置中security 设置为user 安全级别,然后在共享目录设置权限
注意:一定要先指定存放密码的文件位置:
改:
1
2
3
4
|
passdbbackend=tdbsam
为:
passdbbackend=smbpasswd
smb
passwd
file
=
/etc/samba/smbpasswd
|
使用groupadd 命令添加sales 组,然后执行useradd 命令和passwd 命令添加销售部员工的
帐号及密码。
1
2
3
4
5
|
[root@host1~]
#groupaddsales
[root@host1~]
#useradd-gsalessale1
[root@host1~]
#useradd-gsalessale2
[root@host1~]
#idsale2
|
接下来为销售部成员添加相应samba 帐号
1
|
[root@host1~]
#smbpasswd-asale1
|
1
2
3
|
[root@host1~]
#ls/etc/samba/smbpasswd
/etc/samba/smbpasswd
[root@host1~]
#cat!$
|
1
2
3
4
|
[root@host1~]
#smbpasswd-asale2
NewSMBpassword:
RetypenewSMBpassword:
Addedusersale2.
|
(1).设置user 安全级别模式
1
|
security=user
|
设置目录:
1
|
[root@host1~]
#vimsmb.conf
|
创建共享目录:
创建共享目录:
1
2
3
|
[root@host1~]
#mkdir/sales
[root@host1~]
#cp/etc/passwd!$
cp
/etc/passwd
/sales
|
3)重新加载配置
1
2
3
4
5
@H_404_248@
6
|
[root@host1~]
#servicesmbrestart
ShuttingdownSMBservices:[OK]
StartingSMBservices:[OK]
测试:
输入:
用户:sale2密码:123456
|
输入销售部的帐号及密码进行登录
这样销售部成员就可以进行访问sales 共享目录下的数据了
9、扩展参数
9.1、客户端访问控制
hosts allow 和 hosts deny 的使用方法
1)hosts allow 和 hosts deny 字段的使用
1
2
|
hostsallow字段定义允许访问的客户端
hostsdeny字段定义禁止访问的客户端
|
这里我们添加hosts deny 和hosts allow 字段
1
2
|
hostsallow=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~]
#chmod777/sales
[root@host1~]
#ll-d!$
ll-d
/sales
drwxrwxrwx2rootroot4096Mar721: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
@H_404_248@
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@host1tmp]
#yuminstallxinetd-y安装xinetd超级守护进程
[root@host1tmp]
#yuminstallsamba-swat-y安装swat程序,主机安装包名为samba-swat,如果直接输入swat是找不到包的!!
[root@host1tmp]
#vim/etc/xinetd.d/swat编辑swat的配置文件。
#default:off
#description:SWATistheSambaWebAdminTool.Useswat\\
#toconfigureyourSambaserver.TouseSWAT,\\
#connecttoport901withyourfavoritewebbrows
er.
serviceswat
{
port=901<---监听的端口默认为901。
socket_type=stream<---socket类型为stream,面向连接的稳定数据传输,即为TCP协议。
wait=no
only_from=192.168.25.0<---只监听指定范围内的主机,即限制登陆主机,设置为0.0.0.0则默认为监听所有主机。
server=
/usr/sbin/swat
<---指定主程序路径。
log_on_failure+=USERID
}
[root@host1tmp]
#servicexinetdstart开启xinetd服务即可,因为swat是由xinetd来管理的。
[root@host1tmp]
#ss-tunl|grep901查看901端口号,的确为设置的tcp的901
|
访问服务器的901端口: