《Linux网络操作系统》课件-项目十 配置与管理Samba服务器_第1页
《Linux网络操作系统》课件-项目十 配置与管理Samba服务器_第2页
《Linux网络操作系统》课件-项目十 配置与管理Samba服务器_第3页
《Linux网络操作系统》课件-项目十 配置与管理Samba服务器_第4页
《Linux网络操作系统》课件-项目十 配置与管理Samba服务器_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目十配置与管理Samba服务器

1项目导入了解Samba环境及协议。掌握Samba的工作原理。掌握主配置文件Samba.conf的配置方法。掌握Samba服务密码文件的配置方法。掌握Samba文件和打印共享的设置方法。掌握Linux和Windows客户端共享Samba服务器资源的方法。职业能力目标和要求

是谁最先搭起Windows和Linux沟通的桥梁,并且提供不同系统间的共享服务,还能拥有强大的打印服务功能?答案就是Samba。这些使得它的应用环境非常广泛。当然Samba的魅力还远远不止这些。2任务1认识Samba10.1.1子任务1了解Samba应用环境1.文件和打印机共享:文件和打印机共享是Samba的主要功能,通过SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。身份验证和权限设置:smbd服务支持usermode和domainmode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。名称解析:Samba通过nmbd服务可以搭建NBNS(NetBIOSNameService)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。浏览服务:局域网中,Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。

SMB(ServerMessageBlock)通信协议可以看作是局域网上共享文件和打印机的一种协议。它是Microsoft和Intel在1987年制定的协议,主要是作为Microsoft网络的通信协议,而Samba则是将SMB协议搬到UNIX系统上来使用。通过“NetBIOSoverTCP/IP”,使用Samba不但能与局域网络主机共享资源,也能与全世界的计算机共享资源。因为互联网上千千万万的主机所使用的通信协议就是TCP/IP。SMB是在会话层和表示层以及小部分的应用层的协议,SMB使用了NetBIOS的应用程序接口API。另外,它是一个开放性的协议,允许协议扩展,这使得它变得庞大而复杂,大约有65个最上层的作业,而每个作业都超过120个函数。10.1.2子任务2了解SMB协议310.1.3子任务3掌握Samba的工作原理图1-2GNU的标志角马4Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOSoverTCP/IP)上,使用UDP的137、138及TCP的139端口,后期SMB经过开发,可以直接运行于TCP/IP上,没有额外的NBT层,使用TCP的445端口。1.Samba的工作流程当客户端访问服务器时,信息通过SMB协议进行传输,其工作过程可以分成4个步骤。(1)协议协商。客户端在访问Samba服务器时,发送negprot指令数据包,告诉目标计算机其支持的SMB类型。Samba服务器根据客户端的情况,选择最优的SMB类型并做出回应,如图10-1所示。(2)建立连接。当SMB类型确认后,客户端会发送sessionsetup指令数据包,提交账号和密码,请求与Samba服务器建立连接。如果客户端通过身份验证,Samba服务器会对sessionsetup报文做出回应,并为用户分配唯一的UID,在客户端与其通信时使用,如图10-2所示。

2.Linux的版权问题5

图10-2建立连接图10-1协议协商(3)访问共享资源。客户端访问Samba共享资源时,发送treeconnect指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源,如图10-3所示。(4)断开连接。共享使用完毕,客户端向服务器发送treedisconnect报文关闭共享,与服务器断开连接,如图10-4所示。62.Samba相关进程Samba服务是由两个进程组成,分别是nmbd和smbd。(1)nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。(2)smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。图10-3访问共享资源

图10-4断开连接任务2配置Samba服务

10.2.1子任务1安装并启动Samba服务。建议在安装samba服务之前,使用rpm-qa|grepsamba命令检测系统是否安装了samba相关性软件包:[root@RHEL7-1~]#rpm-qa|grepsamba如果系统还没有安装samba软件包,我们可以使用yum命令安装所需软件包。(1)挂载ISO安装镜像。[root@RHEL7-1~]#mkdir/iso[root@RHEL7-1~]#mount/dev/cdrom/isomount:/dev/sr0iswrite-protected,mountingread-only7

(2)制作用于安装的yum源文件(见项目3和项目9相关内容)。dvd.repo文件的内容如下:#/etc/yum.repos.d/dvd.repo#orforONLYthemediarepo,dothis:#yum--disablerepo=\*--enablerepo=c6-media[command][dvd]name=dvdbaseurl=file:///iso//特别注意本地源文件的表示,3个“/”gpgcheck=0enabled=18

(3)使用yum命令查看samba软件包的信息。[root@RHEL7-1~]#yuminfosamba(4)使用yum命令安装samba服务。[root@RHEL7-1~]#yumcleanall //安装前先清除缓存[root@RHEL7-1~]#yuminstallsamba-y(5)所有软件包安装完毕,可以使用rpm命令再一次进行查询:rpm-qa|grepsamba。[root@RHEL7-1~]#rpm-qa|grepsambasamba-common-tools-4.6.2-8.el7.x86_64samba-common-4.6.2-8.el7.noarchsamba-common-libs-4.6.2-8.el7.x86_64910samba-client-libs-4.6.2-8.el7.x86_64samba-libs-4.6.2-8.el7.x86_64samba-4.6.2-8.el7.x86_64(6)启动与停止samba服务,设置开机启动。[root@RHEL7-1~]#systemctlstartsmb[root@RHEL7-1~]#systemctlenablesmbCreatedsymlinkfrom/etc/systemd/system/multi-user.target.wants/smb.serviceto/usr/lib/systemd/system/smb.service.[root@RHEL7-1~]#systemctlrestartsmb[root@RHEL7-1~]#systemctlstopsmb[root@RHEL7-1~]#systemctlstartsmb注意:在Linux的服务中,我们更改了配置文件后,一定要记得重启服务,让服务重新加载配置文件,这样新的配置才可以生效。(start/restart/reload)1110.2.3子任务3了解Samba服务器配置的工作流程在Samba服务安装完毕之后,并不是直接可以使用Windows或Linux的客户端访问Samba服务器,我们还必须对服务器进行设置:告诉Samba服务器将哪些目录共享出来给客户端进行访问,并根据需要设置其他选项,比如添加对共享目录内容的简单描述信息和访问权限等具体设置。基本的Samba服务器的搭建流程主要分为4个步骤。(1)编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。(2)在smb.conf文件中指定日志文件名称和存放路径。(3)设置共享目录的本地系统权限。(4)重新加载配置文件或重新启动SMB服务,使配置生效。(5)关闭防火墙,同时设置SELinux为允许。12Samba的工作流程如图10-5所示。(1)客户端请求访问Samba服务器上的Share共享目录。(2)Samba服务器接收到请求后,会查询主配置文件smb.conf,看是否共享了Share目录,如果共享了这个目录则查看客户端是否有权限访问。(3)Samba服务器会将本次访问信息记录在日志文件之中,日志文件的名称和路径都需要我们设置。(4)如果客户端满足访问权限设置,则允许客户端进行访问。1310.2.4子任务4主要配置文件smb.confsamba的配置文件一般就放在/etc/samba目录中,主配置文件名为smb.conf。1.Samba服务程序中的参数以及作用使用ll命令查看smb.conf文件属性,并使用命令vim/etc/samba/smb.conf查看文件的详细内容,如图10-6所示。

图10-6查看smb.conf配置文件RHEL7的smb.conf配置文件已经简化,只有36行左右。为了更清楚地了解配置文件建议研读smb.smf.example。samba开发组按照功能不同,对smb.conf文件进行了分段划分,条理非常清楚。14表10-1Samba服务程序中的参数及其作用[global]参数作用

workgroup=MYGROUP工作组名称,比如:workgroup=SmileGroup。

serverstring=SambaServerVersion%v服务器描述,参数%v为显示SMB版本号

logfile=/var/log/samba/log.%m定义日志文件的存放位置与名称,参数%m为来访的主机名

maxlogsize=50定义日志文件的最大容量为50KB

security=user安全验证的方式,总共有4种,比如:security=user

Share来访主机无需验证口令;比较方便,但安全性很差

User需验证来访主机提供的口令后才可以访问;提升了安全性,系统默认方式

Server使用独立的远程主机验证来访主机提供的口令(集中管理账户)

Domain使用域控制器进行身份验证

passdbbackend=tdbsam定义用户后台的类型,共有3种

Smbpasswd使用smbpasswd命令为系统用户设置Samba服务程序的密码

tdbsam创建数据库文件并使用pdbedit命令建立Samba服务程序的用户

ldapsam基于LDAP服务进行账户验证

loadprinters=yes设置在Samba服务启动时是否共享打印机设备

cupsoptions=raw打印机的选项[homes]

共享参数

comment=HomeDirectories描述信息

browseable=no指定共享信息是否在“网上邻居”中可见

writable=yes定义是否可以执行写入操作,与“readonly”相反[printers]

打印机共享参数15技巧:为了方便配置,建议先备份smb.conf,一旦发现错误可以随时从备份文件中恢复主配置文件。操作如下。[root@RHEL7-1~]#cd/etc/samba[root@RHEL7-1samba]#ls[root@RHEL7-1samba]#cpsmb.confsmb.conf.bak2.ShareDefinitions共享服务的定义ShareDefinitions设置对象为共享目录和打印机,如果我们想发布共享资源,需要对ShareDefinitions部分进行配置。ShareDefinitions字段非常丰富,设置灵活。我们先来看几个最常用的字段。(1)设置共享名。共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,供网络用户访问时使用,并且共享名可以与原目录名不同。共享名的设置非常简单,格式为:[共享名](2)共享资源描述。网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时知道共享资源的内容是什么。格式:comment=备注信息16(3)共享路径。共享资源的原始完整路径,可以使用path字段进行发布,务必正确指定。格式:path=绝对地址路径(4)设置匿名访问。设置是否允许对共享资源进行匿名访问,可以更改public字段。格式:public=yes#允许匿名访问public=no#禁止匿名访问【例10-1】samba服务器中有个目录为/share,需要发布该目录成为共享目录,定义共享名为public,要求:允许浏览、允许只读、允许匿名访问。设置如下所示。[public] comment=public path=/share browseable=yes readonly=yes public=yes3(5)设置访问用户。如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用validusers字段进行设置。格式:validusers=用户名validusers=@组名【例10-2】samba服务器/share/tech目录存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为tech,经理账号为manger。[tech]comment=tecchpath=/share/techvalidusers=@tech,manger(6)设置目录只读。共享目录如果限制用户的读写操作,我们可以通过readonly实现。格式:readonly=yes#只读readonly=no#读写18(7)设置过滤主机。注意网络地址的写法!

相关示例如下。hostsallow=192.168.10.上述程序表示允许来自或的访问者访问samba服务器资源。hostsdeny=192.168.2.上述程序表示不允许来自网络的主机的访问者访问当前samba服务器资源。【例10-3】samba服务器公共目录/public存放大量共享数据,为保证目录安全,仅允许网络的主机访问,并且只允许读取,禁止写入。[public]comment=publicpath=/publicpublic=yesreadonly=yeshostsallow=192.168.10.19(8)设置目录可写。如果共享目录允许用户写操作,可以使用writable或writelist两个字段进行设置。writable格式:writable=yes#读写writable=no#只读writelist格式:writelist=用户名writelist=@组名注意:[homes]为特殊共享目录,表示用户主目录。[printers]表示共享打印机。10.2.5子任务5samba服务的日志文件和密码文件1.samba服务日志文件日志文件对于samba非常重要,它存储着客户端访问samba服务器的信息,以及samba服务的错误提示信息等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题。在/etc/samba/smb.conf文件中,logfile为设置samba日志的字段。如下所示:logfile=/var/log/samba/log.%msamba服务的日志文件默认存放在/var/log/samba/中,其中samba会为每个连接到samba服务器的计算机分别建立日志文件。使用ls-a/var/log/samba命令查看日志的所有文件。当客户端通过网络访问samba服务器后,会自动添加客户端的相关日志。所以,Linux管理员可以根据这些文件来查看用户的访问情况和服务器的运行情况。另外当samba服务器工作异常时,也可以通过/var/log/samba/下的日志进行分析。2042.samba服务密码文件samba服务器发布共享资源后,客户端访问samba服务器,需要提交用户名和密码进行身份验证,验证合格后才可以登录。samba服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd中,在客户端访问时,将用户提交的资料与smbpasswd存放的信息进行比对,如果相同,并且samba服务器其他安全设置允许,客户端与samba服务器连接才能建立成功。那如何建立samba账号呢?首先,samba账号并不能直接建立,需要先建立Linux同名的系统账号。例如,如果要建立一个名为yy的samba账号,那Linux系统中必须提前存在一个同名的yy系统账号。samba中添加账号的命令为smbpasswd,格式为:【例10-4】在samba服务器中添加samba账号reading。(1)建立Linux系统账号reading。[root@RHEL7-1~]#useraddreading[root@RHEL7-1~]#passwdreading(2)添加reading用户的samba账户。[root@RHEL7-1~]#smbpasswd-areadingsamba账号添加完毕。如果在添加samba账号时输入完两次密码后出现错误信息Failedtomodifypasswordentryforuseramy,则是因为Linux本地用户里没有reading这个用户,在Linux系统里面添加一下就可以了。提示:务必要注意在建立samba账号之前,一定要先建立一个与samba账号同名的系统账号。经过上面的设置,再次访问samba共享文件时就可以使用reading账号访问了。4任务3user服务器实例解析在RHEL7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。【例10-5】如果公司有多个部门,因工作需要,就必须分门别类地建立相应部门的目录。要求将销售部的资料存放在Samba服务器的/companydata/sales/目录下集中管理,以便销售人员浏览,并且该目录只允许销售部员工访问。需求分析:在/companydata/sales/目录中存放有销售部的重要数据,为了保证其他部门无法查看其内容,我们需要将全局配置中security设置为user安全级别。这样就启用了Samba服务器的身份验证机制。然后在共享目录/companydata/sales下设置validusers字段,配置只允许销售部员工能够访问这个共享目录。5(1)建立共享目录,并在其下建立测试文件。[root@RHEL7-1~]#mkdir/companydata[root@RHEL7-1~]#mkdir/companydata/sales[root@RHEL7-1~]#touch/companydata/sales/test_share.tar(2)添加销售部用户和组并添加相应的Samba账号。①使用groupadd命令添加sales组,然后执行useradd命令和passwd命令,以添加销售部员工的账号及密码。此处单独增加一个test_user1账号,不属于sales组,供测试用。[root@RHEL7-1~]#groupaddsales #建立销售组sales[root@RHEL7-1~]#useradd-gsalessale1 #建立用户sale1,添加到sales组[root@RHEL7-1~]#useradd-gsalessale2 #建立用户sale2,添加到sales组[root@RHEL7-1~]#useraddtest_user1 #供测试用[root@RHEL7-1~]#passwdsale1 #设置用户sale1密码[root@RHEL7-1~]#passwdsale2 #设置用户sale2密码[root@RHEL7-1~]#passwdtest_user1 #设置用户test_user1密码②为销售部成员添加相应Samba账号。[root@RHEL7-1~]#smbpasswd–asale1[root@RHEL7-1~]#smbpasswd–asale26(3)修改Samba主配置文件smb.conf。[global]workgroup=Workgroupserverstring=FileServersecurity=user #设置user安全级别模式,默认值passdbbackend=tdbsamprinting=cupsprintcapname=cupsloadprinters=yescupsoptions=raw[sales] #设置共享目录的共享名为salescomment=salespath=/companydata/sales #设置共享目录的绝对路径

writable=yesbrowseable=yesvalidusers=@sales #设置可以访问的用户为sales组25(4)设置共享目录的本地系统权限。[root@RHEL7-1~]#chmod777/companydata/sales–R[root@RHEL7-1~]#chownsale1:sales/companydata/sales-R[root@RHEL7-1~]#chownsale2:sales/companydata/sales-R-R参数是递归用的,一定要加上。请读者再次复习前面学习的权限相关内容,特别是chown、chmod等命令。(5)更改共享目录的context值,或者禁掉SELinux。[root@RHEL7-1~]#chcon-tsamba_share_t/companydata/sales-R或者:[root@RHEL7-1~]#getenforceEnforcing[root@RHEL7-1~]#setenforcePermissive26(6)让防火墙放行,这一步很重要。[root@RHEL7-1~]#firewall-cmd--permanent--add-service=sambasuccess[root@RHEL7-1~]#firewall-cmd–reload //重新加载防火墙success[root@RHEL7-1~]#firewall-cmd--list-allpublic(active)target:defaulticmp-block-inversion:nointerfaces:ens33sources:services:sshdhcpv6-clientsamba //已经加入到防火墙的允许服务ports:protocols:masquerade:noforward-ports:source-ports:icmp-blocks:richrules:27(7)重新加载samba服务。[root@RHEL7-1~]#systemctlrestartsmb//或者[root@RHEL7-1~]#systemctlreloadsmb(8)测试。一是在windows7中利用资源管理器进行测试,二是利用Linux客户端。特别提示:Samba服务器在将本地文件系统共享给Samba客户端时,涉及本地文件系统权限和Samba共享权限。当客户端访问共享资源时,最终的权限取这两种权限中最严格的。后面的实例中,不再单独设置本地权限。如果对权限不是很熟悉,请参考前面项目四的相关内容。任务4配置Samba客户端1.Windows客户端访问samba共享无论Samba共享服务是部署在Windows系统上,还是部署在Linux系统上,通过Windows系统进行访问时,其步骤和方法都是一样的。下面假设Samba共享服务部署在Linux系统上,并通过Windows系统来访问Samba服务。Samba共享服务器和Windows客户端的IP地址可以根据表10-2来设置。28表10-2Samba服务器和Windows客户端使用的操作系统以及IP地址主机名称操作系统IP地址Samba共享服务器:RHEL7-1RHEL

7Windows客户端:Win7-1Windows7192.168.10.30(1)依次选择“开始”→“运行”命令,使用UNC路径直接进行访问,例如\\192.168.10.1。打开“Windows安全”对话框,如图10-7所示。输入sale1或sale2及其密码,登录后可以正常访问。29图10-7“Windows安全”对话框试一试:注销Windows7客户端,使用test_user用户和密码登录会出现什么情况?(2)映射网络驱动器访问samba服务器共享目录。双击打开“我的电脑”,再依次选择“工具”→“映射网络驱动器”命令,在“映射网络驱动器”对话框中选择Z驱动器,并输入tech共享目录的地址,如\\0\sales。单击“完成”按钮,在接下来的对话框中输入可以访问sales共享目录的samba账号和密码。(3)再次打开“计算机”,驱动器Z就是共享目录sales,可以很方便地访问了。302.Linux客户端访问Samba共享Samba服务程序当然还可以实现Linux系统之间的文件共享。请各位读者按照表10-3来设置Samba服务程序所在主机(即Samba共享服务器)和Linux客户端使用的IP地址,然后在客户端安装samba服务和支持文件共享服务的软件包(cifs-utils)。表10-3Samba共享服务器和Linux客户端各自使用的操作系统以及IP地址主机名称操作系统IP地址Samba共享服务器:RHEL7-1RHEL7操作系统192.168.10.1Linux客户端:RHEL7-2RHEL7操作系统0(1)在RHEL7-2上安装samba-client和cifs-utils。[root@rhel7-2~]#mkdir/iso[root@rhel7-2~]#mount/dev/cdrom/isomount:/dev/sr0iswrite-protected,mountingread-only[root@rhel7-2~]#vim/etc/yum.repos.d/dvd.repo[root@rhel7-2~]#yuminstallsamba-client-y[root@rhel7-2~]#yuminstallcifs-utils-y3132(2)Linux客户端使用smbclient命令访问服务器。①smbclient可以列出目标主机共享目录列表。Smbclient的命令格式为:smbclient-L目标IP地址或主机名-U登录用户名%密码当查看RHEL7-1(192.168.10.1)主机的共享目录列表时,提示输入密码,这时候可以不输入密码,而直接按“Enter”键,这样表示匿名登录,然后就会显示匿名用户可以看到的共享目录列表。[root@RHEL7-2~]#smbclient-L若想使用samba账号查看samba服务器端共享的目录,可以加上-U参数,后面跟上用户名%密码。下面的命令显示只有sale2账号(其密码为123456)才有权限浏览和访问的sales共享目录:[root@RHEL7-2~]#smbclient-L-Usale2%12345678注意:不同用户使用smbclient浏览的结果可能是不一样的,这要根据服务器设置的访问控制权限而定。7②

还可以使用smbclient命令行共享访问模式浏览共享的资料。smbclient命令行共享

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论