Centos部署Samba企业文件共享服务linux
声明:本文参考了网上部分资料加做者实验总结ios
目录:web
一、Samba服务概述:数据库
1.一、Samba的原理vim
1.二、NETBIOS协议windows
二、Samba 应用环境安全
三、samba服务bash
3.一、samba的安装包:服务器
3.二、samba的进程文件:网络
3.三、samba的文件:
四、主要配置文件smb.conf
4.一、samba配置简介
4.二、Global Settings
4.2.1)设置工做组或域名称
4.2.2)服务器描述
4.2.3)设置samba服务器安全模式
4.三、Share Definitions共享服务的定义
4.3.1)设置共享名
4.3.2)共享资源描述
4.3.3)共享路径
4.3.4)设置匿名访问
4.3.5)设置访问用户
4.3.6)设置目录只读
4.3.7)设置目录可写
五、配置一个共享资源
六、samba的命令与客户端访问
6.一、testparm:测试有效的exports内的属性
6.二、pdbedit:管理smb的用户数据库
6.三、smbpasswd:改变samba帐户的密码
6.四、smbclient:unix客户端访问工具
6.五、挂载访问
七、samba搭建实例
7.一、smb服务端搭建
八、修改配置文件,实战举例
8.一、例1:匿名共享
8.二、例2:经过用户名和密码共享文件。把/sales 共享出去,只有知道用户名和密码的同事能够看这个共享
九、扩展参数
9.一、客户端访问控制
9.二、设置Samba 的权限,容许sales组能够写
十、使用GUI工具SWAT管理samba
一、Samba服务概述:
samba是基于smb(Server Message Block)协议的一种实现方式。Samba 最早在Linux
和Windows 两个平台之间架起了一座桥梁,正是因为Samba 的出现,咱们能够在Linux
系统和Windows 系统之间互相通讯,好比拷贝文件、实现不一样操做系统之间的资源共享等
等,咱们能够将其架设成一个功能很是强大的文件服务器,也能够将其架设成打印服务器提
供本地和远程联机打印。
1.一、Samba的原理
1.SMB是基于NetBIOS的一个网络文件共享协议,容许cilent从服务器端访问文件资源。 2.NetBIOS协议是一个用来让局域网内的主机互相链接的通信协议,被普遍用于windows平台间的通讯。 3.samba就是基于smb开发的,让unix主机可以经过mbr协议与windows平台进行文件共享。
1.二、NETBIOS协议
NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协
议。协议,通常指用于局域网通讯的一套API,是由IBM公司开发。主要做用:经过
NETBIOS协议得到计算机名称,而后把计算机名解析为对应IP地址。
模式: C/S 模式
二、Samba 应用环境
文件和打印机共享:文件和打印机共享是Samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户能够访问哈。 身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,经过加密方式能够保护共享的文件和打印机。 名称解析:Samba经过nmbd服务能够搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。 浏览服务:局域网中,Samba服务器能够成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
三、samba服务
3.一、samba的安装包:
samba samba服务器端程序。 libsmbclient samba客户端库文件。 samba-client samba客户端程序。 samba-common samba客户端以及服务端都会用到的文件,如samba.conf等。 samba-winbind samba对于windows域的支持的服务端的库。 samba-winbind-clients samba windwos域的客户端。
3.二、samba的进程文件:
nmbd:负责管理工做组,NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。工做在UDP的137,138端口上。 smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管,工做在TCP的139或445端口上。
3.三、samba的文件:
/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服务中,linux与windows的帐号的映射,格式为linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用户帐号密码存放的数据 库。
四、主要配置文件smb.conf
4.一、samba配置简介
smb.conf文件的开头部分为samba配置简介,告诉咱们smb.conf文件的做用及相关信息。
smb.conf中以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考,不用修改它哈。
smb.conf中还有以“;”开头滴,这些都是samba配置的格式范例,默认是不生效滴,能够经过去掉前面的“;”并加以修改来设置想使用的功能。
4.二、Global Settings
Global Settings设置为全局变量区域。那什么是全局变量哈?全局变量就是说咱们只要在global时进行设置,那么该设置项目就是针对全部共享资源生效滴。这与之后咱们学习的不少服务器配置文件类似哈。
该部分以[global]开始:
smb.conf配置通用格式,对相应功能进行设置:字段=设定值
下面咱们说下[global]经常使用字段及设置方法:
[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. #设置能够访问的网段 [login] 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)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.三、Share Definitions共享服务的定义
Share Definitions设置对象为共享目录和打印机,若是咱们想发布共享资源,须要对Share Definitions部分进行配置。Share Definitions字段很是丰富,设置灵活。
咱们先来说下几个最经常使用的字段哈~
1)设置共享名
共享资源发布后,必须为每一个共享目录或打印机设置不一样的共享名,给网络用户访问时使用,而且共享名能够与原目录名不一样。
共享名设置很是简单:[共享名]
咱们来看个例子,Samba服务器中有个目录为/share,须要发布该目录成为共享目录,定义共享名为public
2)共享资源描述
网络中存在各类共享资源,为了方便用户识别,能够为其添加备注信息,以方便用户查看时知道共享资源的内容是什么哈。
格式:comment = 备注信息
举个例子哈,samba服务器上有个/sales目录存放公司销售部的数据,为了对公司部门员工进行区分,能够添加备注信息。
3)共享路径
共享资源的原始完整路径,可使用path字段进行发布,务必正确指定。
格式:path = 绝对地址路径
samba服务器上/share/tools目录存放经常使用工具软件,须要发布该目录为共享,咱们能够这样作。
4)设置匿名访问
共享资源若是对匿名访问进行设置,能够更改public字段。
格式:
public = yes #容许匿名访问 public = no #禁止匿名访问
samba服务器/share共享目录容许匿名用户访问,能够这样设置。
5)设置访问用户
若是共享资源存在重要数据的话,须要对访问用户审核,咱们可使用valid users字段进行设置哈~
格式:
valid users = 用户名 valid users = @组名
咱们来看下面一个例子哈,samba服务器/share/tech目录存放了公司技术部数据,只容许技术部员工和经理访问,技术部组为tech,经理账号为gm
6)设置目录只读
共享目录若是限制用户的读写操做,咱们能够经过readonly实现哈~
格式:
readonly = yes #只读 readonly = no #读写
samba服务器公共目录/public存放大量共享数据,为保证目录安全咱们只容许读取,禁止写入哈~
7)设置目录可写
若是共享目录容许用户写操做,可使用writable或write list两个字段进行设置哈~
writable格式: writable = yes #读写 writable = no #只读 write list格式: write list = 用户名 write list = @组名
注意:
[homes]为特殊共享目录,表示用户主目录。
[printers]表示共享打印机。
五、配置一个共享资源
[share] #设置共享名 comment = Home Directories #描述 browseable = yes #是否容许查看此共享内容 。若是是否,后期经过绝对路径,能够查看到。 path = /share #共享路径,写绝对路径 public = yes #容许匿名查看 readonly = yes
六、samba的命令与客户端访问
6.一、testparm:测试有效的exports内的属性
6.二、pdbedit:管理smb的用户数据库。
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.三、smbpasswd:改变samba帐户的密码。
smbpasswd -a [user] 新增用户以及密码。 smbpasswd -r [user] 修改用户密码。 smbpasswd -x [user] 删除用户。 smbpasswd -d [user] 禁止登录。 smbpasswd -e [user] 启用用户。
6.四、smbclient:unix客户端访问工具。
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.五、挂载访问。
mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp
七、samba搭建实例
7.一、smb服务端搭建:
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/samba writable = yes guest ok = yes write 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.一、例1:匿名共享:
公司如今用一个工做组Software, 须要添加samba 服务器做为文件服务器,并发布共享目
录/share,共享名为public,这个共享目录容许全部公司员工访问。
[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)从新加载配置
[root@host1 ~]#
8.二、例2:经过用户名和密码共享文件。把/sales 共享出去,只有知道用户名和密码的同事能够看这个共享。
咱们须要将全局配置中security 设置为user 安全级别,而后在共享目录设置权限
注意:必定要先指定存放密码的文件位置:
2)修改samba 主配置文件smb.conf
改:
passdb backend = tdbsam 为: passdb backend = smbpasswd smb passwd file = /etc/samba/smbpasswd
1)添加销售部用户和组并添加相应samba 账号
使用groupadd 命令添加sales 组,而后执行useradd 命令和passwd 命令添加销售部员工的
账号及密码。
[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 账号
[root@host1 ~]# smbpasswd -a sale1
[root@host1 ~]# ls /etc/samba/smbpasswd /etc/samba/smbpasswd [root@host1 ~]# cat !$
[root@host1 ~]# smbpasswd -a sale2 New SMB password: Retype new SMB password: Added user sale2.
2)修改samba 主配置文件smb.conf
(1).设置user 安全级别模式
security = user
设置目录:
[root@host1 ~]# vim smb.conf
建立共享目录:
建立共享目录:
[root@host1 ~]# mkdir /sales [root@host1 ~]# cp /etc/passwd !$ cp /etc/passwd /sales
3)从新加载配置
[root@host1 ~]# service smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ] 测试: 输入: 用户 :sale2 密码:123456
输入销售部的账号及密码进行登陆
这样销售部成员就能够进行访问sales 共享目录下的数据了
九、扩展参数
9.一、客户端访问控制
hosts allow 和 hosts deny 的使用方法
1)hosts allow 和 hosts deny 字段的使用
hosts allow 字段定义容许访问的客户端 hosts deny 字段定义禁止访问的客户端
这里咱们添加hosts deny 和hosts allow 字段
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.二、设置Samba 的权限,容许sales组能够写
设置系统权限
[root@host1 ~]# chmod 777 /sales [root@host1 ~]# ll -d !$ ll -d /sales drwxrwxrwx 2 root root 4096 Mar 7 21:50 /sales
设置服务器权限:
[root@host1 ~]# vim /etc/samba/smb.conf
boss用户和sale组均可以读写
write list = boss,@sales 就表示只有boss 账号和sales组,能够对/sales 有写入权限
十、使用GUI工具SWAT管理samba
swat是samba的图形化管理工具,咱们能够在配置后经过http来经过网页配置,而且内嵌
帮助文档,可以很是直观的配置samba服务,swat是基于xinetd超级守护进程。
[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端口: