第十四章 SAMBA文件共享服务.docx
- 文档编号:11878010
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:25
- 大小:569.05KB
第十四章 SAMBA文件共享服务.docx
《第十四章 SAMBA文件共享服务.docx》由会员分享,可在线阅读,更多相关《第十四章 SAMBA文件共享服务.docx(25页珍藏版)》请在冰豆网上搜索。
第十四章SAMBA文件共享服务
第十四章
SAMBA文件共享服务
使用NFS服务,可以实现Linux系统之间甚至Linux和Windows系统之间的文件共享;使用FTP服务,可以实现在局域网和广域网中的文件传输。
本章我们来看下局域网中最为常用的服务-Samba服务。
Samba服务器实现了Windows系统中的SMB/CIFS文件共享协议的服务器功能。
运行Samba服务器的Linux主机可以提供Windows文件共享服务,可作为Windows主机的文件服务器使用。
Samba客户机软件实现了SMB/CIFS文件共享协议的客户端功能。
在Linux主机中使用Samba客户机软件可以访问Windows主机中提供的共享文件。
通过Linux系统中使用Samba服务器和Samba客户机软件可以实现Linux主机与Windows主机高效的共享文件互访。
14.1Windows文件共享与Samba服务器
在Linux(UNIX)主机之间可以使用NFS服务实现文件共享,而且实现起来也十分方便。
在Windows主机之间使用Windows文件共享同样可以实现包括网络文件在内的系统资源的共享。
如果想在Linux和Windows主机之间进行文件的共享,使用Samba服务器是比较理想的方案。
14.1.1Windows网络文件共享
在Windows主机之间进行网络文件共享是通过使用微软公司自己的CIFS服务实现的,CIFS是CommonInternetFileSystem的缩写,可以从一台Windows主机直接访问(读取或写入)网络中其他主机的共享文件夹。
CIFS最典型的应用是Windows用户能够从“网上邻居”中找到网络中的其他主机并访问其中的共享文件。
14.1.2Samba服务器
一直以来Windows主机之间都使用SMB/CIFS网络协议实现文件和打印资源的共享。
由于SMB/CIFS是微软的私有协议,所以无法直接与UNIX系统进行通信,直到Samba项目的出现。
Samba是著名的开源软件项目,在Linux(UNIX)系统中实现了SMB/CIFS网络的协议,可以将Linux系统中的目录和文件提供给Windows主机访问,很好的实现了Linux和Windows系统之间的文件互通。
Samba项目中除了包括Samba服务器软件之外还包括了Samba客户端软件。
Samba客户机软件可用于访问Samba服务器中的文件共享,当然也可以作为客户端访问Windows主机中的共享。
通过Samba服务器和Samba客户机软件,完全可以实现Linux主机与Windows主机之间的双向文件互访,为混合系统的使用提供了极大的便利。
14.1.3Linux主机与Windows主机之间进行文件共享的方式
在构建Linux和Windows主机的混合应用系统中,Linux主机通过使用Samba服务器和客户机程序与Windows主机实现共享文件相互访问,主要有几种应用方式:
ØLinux主机运行Samba服务器,Windows主机作为客户端。
这是Samba服务器应用的主流方式。
ØLinux主机运行Samba服务器,在Linux主机中使用Samba客户程序对Samba服务器对Samba服务器测试,并访问服务器中的共享文件。
此种方式不是典型的应用方式,通常只用于测试。
ØWindows主机提供文件共享服务,Linux主机中使用Samba客户程序访问Windows共享文件。
此方式也不常用,但是在Linux主机临时需要访问Windows主机的共享文件时可以使用。
通过以上3种文件共享的使用方式可以看出,Linux主机与Windows主机之间进行文件共享的互访主要涉及到Samba服务器、Samba客户机和Windows服务器3个角色,其中Windows服务器既可以提供共享文件服务也可以作为客户机访问其他服务器中的共享文件。
14.1.4Samba相关进程
Samba服务是由两个进程组成,分别是nmbd和smbd,两者需要同时运行,缺一不可。
nmbd:
其主要功能是进行NetBIOS名的解析,并提供浏览服务显示网络上的共享资源列表。
smbd:
其主要功能是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。
当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。
14.1.5Samba服务应用环境
Ø文件和打印机共享:
文件和打印机共享是Samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络中,以供用户访问。
Ø身份验证和权限设置:
smbd服务支持usermode和domainmode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。
Ø名称解析:
Samba通过nmbd服务可以搭建NBNS(NetBIOSNameService)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。
Ø浏览服务:
局域网中,Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当客户端访问Windows网上邻居时会提供浏览列表,显示共享目录、打印机等资源。
14.1.6Samba服务的工作原理
Samba服务功能强大,这与其通信基于SMB协议有关。
SMB不仅提供目录和打印机共享,还支持认证、权限设置。
在早期,SMB运行于NBT协议(NetBIOSoverTCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,后期SMB经过开发,可以直接运行在TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
14.2Samba服务器与Samba客户机
14.2.1搭建Samba服务器所需的软件
在RHEL5版本中,默认没有安装Samba服务的服务器程序软件包,但已经安装了Samba服务器和客户机都必须使用的公用文件
samba-3.0.33-3.14.el5.i386.rpm
该包为Samba服务的主程序包。
服务器必须安装该软件包,后面的数字为版本号。
samba-client-3.0.33-3.14.el5.i386.rpm
该包为Samba的客户端工具,是连接服务器和连接网上邻居的客户端工具并包含其测试工具。
samba-common-3.0.33-3.14.el5.i386.rpm
该包存放的是通用的工具和库文件,无论是服务器还是客户端都需要安装该软件包。
samba-swat-3.0.33-3.14.el5.i386.rpm
当安装了这个包以后,就可以通过浏览器(如IE)来对Samba服务器进行图形化管理。
14.2.2Samba服务器的安装
Linux系统中安装了以上几个软件包后,就可以使用Samba服务器实现完整的文件共享服务了。
14.2.3Samba服务器的常规配置
在Samba服务安装完毕后,并不是直接可以使用Windows或Linux的客户端访问Samba服务器,我么还必须对服务器进行设置,下面需要做的操作就是要告诉Samba服务器将哪些目录共享出来给客户端进行访问,并根据需要设置其它选项哈,比如添加对共享目录内容的简单描述信息和访问权限等具体设置。
在搭建Samba服务器过程中,Samba服务器的配置是以主配置文件smb.conf为核心进行的,配置过程包括如下步骤:
Ø在smb.conf文件中进行共享资源的配置,包括用户目录、公共目录等。
Ø使用smbpasswd命令建立Samba用户账号和设置账号密码。
Ø设置共享目录的本地系统权限并测试smb.conf配置文件。
Ø重新加载配置文件或重启smb服务,使配置生效。
我们可以把Samba服务器比作图书馆,图书馆为读者共享了图书资源,而Samba服务器共享了我们的文件数据。
图书馆会有图书分类,比如科普类、文学类等,并且图书馆对借阅者做限制,拥有资格的读者,才可以借阅相应的图书,当然读者访问图书馆时,图书管理员会对他们的浏览、借阅信息进行记录。
对于Samba服务器来说,其主配置文件smb.conf记录了共享的目录列表。
比如share目录,temp目录等。
对于每个共享目录,需要配置相应权限,服务器会根据smb.conf文件中的设置,判断客户端是否有权限访问,只有拥有权限才可以访问服务器的资源。
Samba服务器同样会对用户的行为进行记录,每一次访问的信息都会记录在日志文件中,以便Linux管理员查询哪些客户端访问过Samba服务器。
1、smb.conf文件的配置
Samba服务器的主配置文件是smb.conf,保存在目录“/etc/samba/”中。
smb.conf文件中包括了大量的注释行和样例行。
这些内容对Samba服务器的配置时无效的,这些行的功能就是为用户提供帮助。
用户在进行文件配置时也可以将暂时不适用的配置行用“#”或“;”注释掉,而不必删除这些配置的内容。
Ø文件中的注释行以“#”开始,是对配置内容的文字说明,方便用户参考。
Ø文件中的样例行以“;”开始,是对配置内容的的举例,用户可以参考样例行进行文件的设置。
我们可以使用grep命令去除注释行和样例行的内容,这样就可以更加清晰的查看配置文件的内容。
smb.conf配置文件的默认设置经过整理后的内容如下:
从以上文件内容可以看书smb.conf配置文件包括以下3部分内容:
Ø[global]部分是Samba服务器的全局设置,配置项的内容对整个Samba服务器有效。
Ø[homes]部分设置了用户共享目录的属性,该部分中不包括的设置项使用配置文件中的全局设置。
Ø[printers]部分设置了Samba服务器中的打印机共享资源的属性,Samba服务器除了可以提供以上文件共享,还能够提供打印机的共享。
以上3部分只是Samba服务器的默认设置,用户可以根据自己的应用需求在smb.conf配置文件中添加共享资源的设置,共享资源的名称需要放置在方括号[]中。
2、smb.conf文件的全局设置
1)全局设置的项目对所有的共享资源都生效,该部分是[global]开始。
其内容一般有:
workgroup=MYGROUP
设置Samba服务器所在的工作组的名字,默认是MYGROUP。
serverstring=SambaServerVersion%v
设置Samba服务器的说明文字,描述Samba主机,用户可以根据描述信息知道自己登陆的服务器。
通过网上邻居时可在备注信息中看到此信息。
netbiosname=ComputerName
定义计算机的NetBIOS名称
hostsallow=网络或主机
定义允许访问的网络或主机地址
loadprinters=yes或no
自动加载打印机列表,设置yes之后就不需要单独设置每一台打印机的共享了
printing=打印系统名称
定义打印系统
guestaccount=pcguest
指定默认的匿名账号,如果不设置,则默认的匿名账号是nobody
logfile=日志文件名
指定日志文件
maxlogsize=尺寸
定义日志文件的最大尺寸,单位是KB,如果取值为0,则不限制日志文件尺寸
passwordserver=
指定身份验证的服务器,只有security设置为server或domain时才有效。
取值可以是服务器的FQDN,也可以是服务器的IP地址
encryptpasswords=yes/no
指定是否加密密码,如果设置为no,则身份验证期间在网络上传输明文密码
smbpasswdfile=/etc/samba/smbpasswd
指定存放Samba用户密码的文件,默认是/etc/samba/smbpasswd。
usernamemap=/etc/samba/smbusers
指定Windows系统与Linux系统之间的用户映射文件,默认是/etc/samba/smbusers。
例如文件中有一行“root=administrator”,则用户已administrator身份访问Samba服务器时,会被当做root对待
interfaces=192.168.12.2/24192.168.13.2/24
指定Samba使用的网络接口,如果计算机有多个网络接口,可以使用该参数。
具体取值可以是接口或者IP地址等。
例如:
interfaces=eth0192.168.0.2/24
localmaster=yes/no
该参数设置可以允许nmbd守护进程称为局域网中的主浏览器。
浏览器服务用来列出局域网中的可用服务器,并将可用服务器列表发送给网络中的各个计算机。
将该参数设置为yes并不能保证Samba服务器称为网络中的主浏览器,只是允许Samba服务器参加主浏览器的选举
domainlogon=yes/no
为域中的Windows客户机提供域登录服务,即称为域中的域控制器,默认值为no
winssupport=yes/no
该参数设置是否是Samba服务器称为网络中的Wins服务器,以支持网络中的NetBIOS名称解析,默认值为no
winsproxy=yes/no
该参数设置Samba服务器是否称为Wins代理。
security=user
表示Samba服务器的安全模式,有share、user、server、domain和ads五种安全模式。
Øshare安全级别模式
客户端登录Samba服务器,不需要输入用户名和密码就可以浏览Samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证Samba服务器的安全。
Øuser安全级别模式
客户端登录Samba服务器,需要提交合法账号和密码,经过服务器验证后才可以访问共享资源,服务器默认是user安全模式。
Øserver安全级别模式
客户端需要将用户名和密码,提交到指定的一台Samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。
Ødomain安全模式
如果Samba服务器加入Windows域环境中,验证工作将由Windows域控制器负责,domain级别的Samba服务器只能成为域的成员客户端,并不具备服务器的特性,Samba早期的版本就是使用此级别登录Windows域的。
Øads安全级别模式
当Samba服务器使用ads安全级别加入到Windows域环境中,其就具备了domain安全级别模式中的所有功能并可以具备域控制器的功能。
3、ShareDefinitions共享服务的定义
ShareDefinitions设置对象为共享目录和打印机,如果我们想发布共享资源,需要对ShareDefinitions部分进行设置。
ShareDefinitions字段非常丰富,设置灵活。
我们来看其中几个常用的字段:
Ø设置共享名
共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且共享名可以与原目录名不同。
共享名的设置:
[共享名]
Ø共享资源描述
网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时直到共享资源的内容。
格式:
comment=备注信息
Ø共享路径
共享资源的原始完整路径,可以使用path字段进行发布,务必正确指定。
格式:
path=绝对地址路径
注:
browseable=no表示所有Samba用户的宿主目录都不被看到,只有登录用户才能看到自己的宿主目录,这样设置可以加强Samba服务器的安全性。
经过如上的设置,Samba服务器中的每个用户都会在服务器中拥有一个自己的共享目录(宿主目录)。
Ø设置匿名访问
共享资源如果对匿名访问进行设置,可以更改public字段。
格式:
public=yes#允许匿名访问
public=no#禁止匿名访问
Ø设置访问用户
如果共享资源存在重要数据的话,需要对访问用户审核(只允许某些用户或组访问),我们可以使用validusers字段进行设置。
例如:
Samba服务器/home/lch目录存放了公司技术部门的数据,只允许技术部员工和经理访问,技术部的组是tech,经理账户是gm。
Ø设置目录只读
共享目录如果限制用户的读写操作,可以通过readonly字段实现只读设置。
格式:
readonly=yes#只读
readonly=no#读写
Ø设置目录可写
如果共享目录允许用户写入操作,可以使用writable或writelist两个字段进行设置。
格式:
writable=yes#读写
writable=no#只读
writelist=用户名#指定能够写入的用户
writelist=@组名#指定能够写入的组用户
注:
[homes]为特殊共享目录,表示用户主目录;[printers]表示共享打印机。
4、Linux的日志文件
日志文件对于Samba服务器是非常重要的,它存储着客户端访问Samba服务器的消息以及Samba服务的错误提示等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题。
在smb.conf文件中,logfile是设置Samba日志的字段。
Samba服务的日志文件默认存放在/var/log/samba/中,其中Samba会为每个连接到Samba服务器的计算机分别建立日志文件。
启动smb服务后,可以查看日志文件。
其中,当Samba服务器刚刚搭建好时,只有两个文件,分别是nmbd.log和smbd.log,他们分别记录nmbd和smbd进程的运行日志。
nmbd.log记录nmbd进程的解析信息。
Smbd.log记录用户访问Samba服务器的问题,以及服务器本身的错误信息,可以通过该文件获得大部分的Samba维护信息。
当客户端通过网络访问Samba服务器后,会自动添加客户端的相关日志。
因此我们可以根据这些文件查看用户的访问情况和服务运行情况,当Samba服务器工作异常时,也可以通过/var/log/samba/下的日志进行分析。
5、Samba服务的密码文件
Samba服务器发布共享资源后,客户端访问Samba服务器,需要提交用户名和密码进行身份验证,验证合格后才能可以登录。
Samba服务为了实现身份验证功能,将用户名和密码信息存放到/etc/samba/smbpasswd中,,在客户端访问时,将用户提交的资料与smbpasswd存放的信息进行比对,如果相同且Samba服务器其他安全设置允许,客户端与Samba服务器才能成功建立连接。
在初始状态下smbpasswd文件不存在,在第一次使用smbpasswd命令创建Samba用户时自动建立。
使用smbpasswd命令的“-a”选项可以向smbpasswd文件中添加Samba用户账户,但须提前创建同名的Linux系统账号。
如果不对Samba的配置文件做任何修改,用smbpasswd命令添加用户,是不会提示创建smbpasswd文件的。
要创建smbpasswd文件,我们还须进行如下操作:
将如下一行内容
使用“#”注释掉,然后添加一行内容:
然后,使用smbpasswd命令的“-a”选项可以向smbpasswd文件中添加Samba用户账号,前提是在建立Samba用户账号之前首先建立同名的Linux系统账号。
smbpasswd命令除了可以添加Samba用户账号之外,使用不同命令选项可以完成不同的账户维护工作。
Ø-h显示smbpasswd命令的帮助信息
Ø-a添加指定的用户账户
Ø-d禁用指定的用户账户
Ø-e启用指定的用户账户
Ø-x删除指定的用户账户
Ø不使用任何选项则更改用户口令
使用smbpasswd命令建立Samba用户账户需要注意的问题:
ØSamba用户账户使用独立的smbpasswd文件保存用户的账户和密码口令信息。
ØSamba服务器中的用户账户应该具有与其同名的Linux系统用户账户,因为Samba用户是使用同名的系统用户账户身份访问Linux系统资源的。
ØSamba用户的口令和同名系统用户的口令是独立的,既可以相同亦可不容。
需要分别进行维护和修改。
Ø当Samba用户不需要登录Linux系统时,同名的系统账户可以不设口令。
6、添加公共共享目录
在Samba服务器的默认设置中没有公共目录的设置,需要手动添加。
对于公共共享目录需要注意的是:
Ø任何Samba的用户都可以访问公共目录并对目录具有读写权限
Ø任何用户在公共目录中都是以Linux中的nobody系统用户的身份出现,即在公共目录中任何用户建立的文件都属于nobody系统用户。
首先建立公共目录,并设置目录的属主和属组为nobody。
在smb.conf文件中添加名为[public]的共享资源,进行如下的设置:
onlyguest=yes表示所有用户在使用该共享目录时的用户身份是guest,即Linux系统用户nobody。
并将安全级别由默认的user改为share。
7、对smb.conf文件配置进行测试
在对smb.conf文件完成所有的配置后,可使用testparm命令对该文件进行测试。
testparm命令使Samba服务器软件包中提供的配置文件测试工具,可以对smb.conf配置文件的语法进行检测,并显示当前配置清单。
8、启动Samba服务器
Samba服务器的启动脚本位于目录“/etc/init.d”中,脚本文件名是smb。
smb脚本会同时对smbd和nmbd两个服务程序进行管理,因此在启动和停止Samba服务器时只需要执行smb脚本程序即可。
使用service命令可以对smb进行调用操作,如启动、停止、重启等。
注意:
重启Samba服务,虽然可以让配置生效,但是restart是先关闭Samba服务,再启动Samba服务操作。
这样如果在公司网络运营中肯定会对客户端员工的访问造成影响,建议使用reload命令重新加载配置文件使其生效,这样不需要中断服务就可以重新加载配置。
9、实现开机自动加载Samba服务
14.2.4Samba客户端安装使用
我们对上述Samba服务器进行测试,实例的基本环境如下:
Samba服务器的IP地址是10.8.0.123
用于测试的Samba客户机可以是与Samba服务器同局域网中的任何一台Linux主机,也可以是运行Samba服务器的同一主机。
Samba服务器的客户端软件包samba-client中包括了Linux下运行的Samba客户端管理命令,通过这些命令可以查看和访问Samba服务器或Windows服务器中的文件共享。
这诸多命令中,只需要使用其中几条命令就可以实现Samba客户程序的典型应用功能,其中smbclient和smbmount是重点。
1、smbclient命令
smbclient是Samba服务器的命令行方式的登录客户端,使用的形式类似telnet和ftp命令。
使用smbclient命令可以登录到本机或指定的Samba服务器进行操作
使用smbclient命令的“-L”选项可以显示指定的Samba服务器中的共享资源列表。
smbclient命令不指定用户账号时将使用匿名登录方式查询Samba服务器中的资源。
我们在服务器端添加一个系统账户lch,并添加到Samba服务器账号中:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十四章 SAMBA文件共享服务 第十四 SAMBA 文件 共享 服务