文件共享服务之Samba

本秂侑毒 提交于 2020-02-19 17:24:15

一、Samba服务概述

在Windows网络环境中、机之间进行文件打印和共享是通过微软自己的SMB/CIFS协议来实现的、SMB(服务消息块)和CIFS(通用互联网文件系统)这两个都是微软的私有协议

而Samba它在Linux中实现了微软的SMB/CIFS网络协议、从而使得跨平台的文件共享变得更加容易、SMB也是基于C/S架构的、所以它既可以充当文件共享服务器、也可以充当客户端

1)Samba软件包组成

在CentOS7中可以找到几个关于Samba的软件包、默认已经安装了客户端 samba-client和服务端samba

[root@node1 ~]# rpm -qa | grep samba
samba-client-libs-4.7.1-6.el7.x86_64		#客户端软件		
samba-common-libs-4.7.1-6.el7.x86_64		#所需要的库
samba-common-4.7.1-6.el7.noarch				#提供服务端与客户端程序的公共组件

2)Samba程序组件

Samba服务提供smbd、nmbd两个服务程序、它们分别完成不同的功能

smbd:负责为客户端提供服务器中共享资源的访问
nmbd:负责提供基于NetBIOS协议的主机名称解析

安装好samba软件之后、系统会自动添加名为smb和nmb的标准系统服务、使用netstat 可查看监听端口

smbd负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议)、nmbd负责监听UDP协议的137-138端口(NetBIOS)

二、Samba部署及配置文件说明

1)Samba部署

提示:安装Samba时我们可以使用yum的方式来安装、同时也可以去官网下载最新的源码包来进行安装

[root@node1 ~]# yum -y install samba*
[root@node1 ~]# systemctl enable smb
[root@node1 ~]# systemctl enable nmb
[root@node1 ~]# systemctl start smb
[root@node1 ~]# systemctl start nmb
tcp        0      0 0.0.0.0:445             0.0.0.0:*                  1861/smbd           
tcp        0      0 0.0.0.0:139             0.0.0.0:*                  1861/smbd                   
udp        0      0 0.0.0.0:137             0.0.0.0:*                  1873/nmbd                    
udp        0      0 0.0.0.0:138             0.0.0.0:*                  1873/nmbd 

2)Samba配置文件说明

Samba的主配置文件位于:/etc/samba/smb.conf

其中以#号打头的为注释、以;号打头的为配置样例、Samba的配置文件主要分为三个部分、如下所示:  

[global]全局设置:		#此配置项对整个Samba服务器都有效
[homes]宿主共享设置:	  #设置用户的默认共享 对应用户宿主目录
[printers]打印机共享:   #如果我们需要共享打印机设备、可在此项设置

 3)Samba的常见配置项说明

workgroup:				#设置工作组名称
server string:			#设置服务器介绍信息
comment:				#设置共享目录说明信息
path:					 #设置共享目录的位置
browseable:				 #设置网上邻居是否课件
guest ok:				#是否所有人可以访问共享目录 与public作用相同
writable:				 #是否所有人可以写入、与 read only 配置项作用相反
max log size = 60:		#定义日志的最大容量为60KB
passwd backend:		    #共享账户文件类型、默认使用tdbsam
log file = path/log.%m: #设置日志文件的位置 %.m 表示客户端的IP
security:				#设置Samba的安全验证方式 可设置为:user、share、server、domain
              share:	可匿名访问
		                  user:	由本地服务器验证用户名及密码
              domain:由域控制器来验证用户名和密码
		              server:指定另一台服务器来验证用户名及密码

三、构建文件共享服务器

1)部署可匿名访问的共享

提示:设置匿名共享文件夹需要在主配置文件调整两个地方:

其一:添加一段共享目录

其二:到全局配置项中添加 map to guest = Bad user 以允许匿名访问

1、创建共享目录并定义配置文件

如下所示、我们设置共享目录的路径为:/var/share 然后允许匿名访问

[root@node1 ~]# mkdir /var/share
[root@node1 ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = Bad user
[test]
        comment = test file			#说明
        path = /var/share			#路径		
        public = yes				#允许所有访问
        read only = yes				#设置为只读

提示:配置好之后我们可以使用 testparm工具来检查配置文件是否有错误、如果有则会给出相应的提示  

 提示:最后只需重启服务即可:systemctl restart smb nmb

2、验证可匿名访问的共享

如下所示访问成功

 

接下来我们可以看到、不能上传文件至服务器、只能下载文件

匿名用户我们一般也不会给写入权限、如果要写入权限、则设置UGO权限然后再添加 writable = yes 即可

 

 2)部署需用户验证的共享

1、建立Samba用户数据库

提示:创建账号的时候必须有与它同名的系统用户、以便主机对共享访问的读写权限进行控制、但是密码不需要

常用的命令如下所示:

pdbedit -a 用户:		#添加用户
pdbedit -x -u 用户:	#删除用户
pdbedit -L:			#列出所有用户
pdbedit -vL 用户:		#列出单个用户并输出详细信息

如下所示我将创建两个用户分别为:test01和test02

[root@node1 ~]# useradd test01
[root@node1 ~]# useradd test02
[root@node1 ~]# pdbedit -a test01		#根据提示设置对应的密码
[root@node1 ~]# pdbedit -a test02
[root@node1 ~]# pdbedit -L
test01:1001:
test02:1002:

2、设置用户访问授权

共享目录的用户授权主要由:valid user、write list 配置项指定、前者为谁可以访问、后者为谁可以写

当我们需要授权多个用户的时候可以使用逗号或者空格分隔、如果要授权一个用户组则使用 @组名的形式来设置

如下所示:我将允许 test01和02可以访问 但只允许test01写

[test]
        comment = test file
        path = /var/share
        public = no
        valid users = test01,test02
        write list =  test01

注意:用户最终是否拥有读写权限、除了设置用户授权以外、还需设置本地文件夹的权限、即UGO 如下所示:

[root@node1 ~]# ll -lh /var/ | grep share				#查看权限
drwxr-xr-x   2 root root  145 4月  28 11:18 share				
[root@node1 ~]# chmod 757 /var/share/					#设置权限
[root@node1 ~]# ll -lh /var/ | grep share		
drwxr-xrw-   2 root root  145 4月  28 11:18 share		#确认权限

另外当用户上传文件的时候、对于用户所上传的文件以及子目录的默认授权、可分别使用如下配置项指定

directory mask = 0755		#表示上传目录的权限为0755
create mask = 0644			#表示上传文件的权限为0644

3、验证需用户访问的共享

(1)验证test01用户、查看是否能读取和写入

 通过下图我们可以看到、test01可以上传文件至服务器

 

(2)验证test02用户、查看是否能读取和写入

 登录进来之后、通过下图我们可以看到、test02的权限 为读不能写

 

 

 

 

  

  

  

  

  

 

  

 

 

 

 

 

 

【只是为了打发时间】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!