• 1. 第7章 Samba服务器
    • 2. 目录7.1 Samba服务器简介 7.1.1 Samba服务器原理简介 7.1.2 SMB协议 7.1.3 SMB客户端 7.1.4 SMB服务器 7.1.5 Samba软件功能 7.1.6 Samba的组成软件包 7.2 Samba 服务器的安装与配置 7.2.1 安装 Samba 7.2.2 Samba主配置文件详解 7.2.3 启动、停止和重启Samba服务器 7.2.4 测试Samba服务器 7.3 Samba服务器配置实例 7.3.1 基于guest访问方式的Samba服务器的配置 7.3.2 基于指定账户访问方式的Samba服务器的配置 7.3.3 Samba服务器写权限的设置 7.3.4 通过Linux客户端测试Samba服务器
    • 3. 7.1 Samba服务器简介 7.1.1 Samba服务器原理简介 为了使Windows用户以及Linux用户能够互相访问资源,Linux提供了一套资源共享的软件——Samba的服务器软件,通过它可以轻松实现文件共享。Samba的功能很强大,在Linux服务器上的Samba运行起来以后,Linux就相当于一台文件及打印服务器,向Windows和Linux Samba客户提供文件及打印服务。
    • 4. 7.1 Samba服务器简介7.1.2 SMB协议 SMB(Server Message Block)通讯协议是微软(Microsoft) 英特尔(Intel)在1987年制定的协议,是Linux、OS/2、Windows系列操作系统和Windows for Workgroups等计算机之间提供文件共享、打印机服务、域名解析、验证(Authentication)、授权(Authorization)以及浏览(Browsing)等服务的网络通信协议,主要作为Microsoft网络的通讯协议。SMB协议为客户机/服务器模型。客户机通过该协议可以访问服务器上的共享文件系统、打印机及其它资源。
    • 5. 7.1 Samba服务器简介7.1.3 SMB客户端 SMB客户端在连接SMB服务器时可以使用的通信协议有很 多,例如:TCP/IP(事实上是RFC 1001 和RFC 1002中定 义的NetBIOS over TCP/IP )、NetBEUI或IPX/SPX。而在成功连接服务器后,SMB客户端即可使用SMB指令在文件系统中进行访问或其它的工作,所有动作都必须通过网络来进 行。
    • 6. 7.1 Samba服务器简介1.下图为OSI模型与TCP/IP程序堆栈来表示的与SMB运行时有关的各式通信协议.
    • 7. 7.1 Samba服务器简介2. SMB可以在TCP/IP、 NetBEUI、IPX/SPX、DECnet等通信协议上运行,如果要在TCP/IP或NetBEUI上使用SMB,则可以通过NetBIOS API接口。但是在一般情况下,SMB都使用NetBIOS over TCP/IP ,因为它的优点是容易移植,而且TCP/IP 也是目前最普及的通信协议。
    • 8. 7.1 Samba服务器简介3.除了Windows操作系统之外,其它可以当成SMB客户端的有: Digital开发的PATHWORKS客户端 Samba上的smbclient Linux上的smbfs smblib。
    • 9. 7.1 Samba服务器简介7.1.4 SMB服务器 1. 用来提供SMB服务的服务器软件,此为只介绍在Linux上的SMB服务器——Samba。 2.Samba是由Andrew Tridgell和一组志愿者所开发的SMB服务器,它可以在许多UNIX OpenVMS和UNIX-Like的平台上运行,其中包括Linux 、Solaris 、SunOS、 HP-UX、 ULTRIX、 DEC OSF/1、 Digital UXIT、 Dynix、 IRIX、 SCO Open Server、 DG-UX 、UNIXWARE、 AIX、BSDI、 NetBSD 、NEXTSTEP 和 A/UX等。
    • 10. 7.1 Samba服务器简介7.1.5 Samba软件功能(C/S) 1. 共享Linux的文件系统; 2.共享安装在Samba服务器上的打印机; 3.使用Windows系统共享的文件和打印机; 4. 支持Windows域控制器和Windows成员服务器对使用Samba资源的用户进行认证; 5.支持WINS名字服务器解析及浏览; 6.提供SMB客户功能。利用Samba提供的smbclient程序可以从UNIX下以类似于FTP的方式访问Windows的资源; 7. 提供一个命令行工具,可以有限制地支持NT的某些管理功能
    • 11. 7.1 Samba服务器简介7.1.6 Samba的组成软件包 名称说明smbdSMB服务器的主要程序,可以处理来自客户端的连接、文件处理、授权和用户名称的工作nmbdNetBOIS 域名服务器,负责帮助客户端找出服务器的位置,以进行浏览工作和管理域,目前这些功能已内置在Samba中smbclient在UNIX主机上运行的SMB客户端程序testprns测试服务器访问打印机的程序testparm测试Samba配置正确性的程序smb.confSamba配置文件smbprint批处理运行文件,可允许UNIX主机使用smbclient将打印工作送给SMB服务器
    • 12. 7.2 Samba 服务器的安装与配置 7.2.1 安装 Samba 1 .在安装Red Hat Enterprise Linux 5时可以定制安装Samba软件包。如果没有安装,需要到Red Hat Enterprise Linux 5的系统盘中找到Samba-common-3.0.33-3.7.el5.rpm,Samba-3.0.33-3.7.el5.rpm和Samba-client-3.0.33-3.7.el5.rpm进行手动安装。 Samba-common-3.0.33-3.7.el5.rpm //Samba通用程序 Samba-3.0.33-3.7.el5.rpm //Samba服务器端程序 Samba-client-3.0.33-3.7.el5.rpm // Samba客户端程序
    • 13. 7.2 Samba 服务器的安装与配置 2.rpm –qa|grep samba”命令查询本系统是否已经安装了Samba软件包
    • 14. 7.2 Samba 服务器的安装与配置7.2.2 Samba主配置文件详解 1.配置Samba的工作其实就是对默认的配置文件/etc/Samba/smb.conf进行相应的设置 2.配置文件中有比较重要的几个全程单元:[global]、[homes]和[printers]
    • 15. 7.2 Samba 服务器的安装与配置1.[global]单元 它定义了服务器本身使用的配置参数以及其它共享资源部分使用的缺省参数配置,可以说是最重要的一个字段。
    • 16. 7.2 Samba 服务器的安装与配置主要参数包括: 1.workgroup:用来指定主机所在网络上所属的工作组名称。 2.server string:用来设置本机描述。 3.netbios name:设置主机名称,即Samba服务器在网上邻居中显示的名字。 4.interfaces配置Samba使用多个网络接口。 5.hosts allow:用来设置允许哪些机器可以访问Samba服务器。用户通过指定一系列网络地址,可以有效阻止非法用户使用Samba服务器,且只有在指定网络地址中的计算机才能访问服务器提供的资源。在缺省情况下,该参数被注释掉了,即所有的客户端都可以访问Samba服务器。 6.loadprinters:允许自动加载打印机列表,而不需要单独设置每一台打印机。 7.security:设置安全参数,定义安全模式。Samba默认采用的是“用户”级别的安全性,也就是“security=user”模式,此时由Samba服务器完全控制用户身份的认证
    • 17. 7.2 Samba 服务器的安装与配置Samba服务器的用户验证模式: 1.用户 2.共享 3.服务器 4.域和 5.ADS等多个级别。
    • 18. 7.2 Samba 服务器的安装与配置1.用户(User Level): Samba服务器对用户身份进行验证,用户只有通过验证才能访问相应的共享。 2.共享(Share Level):工作组中的每个共享都有一个或多个与其它相关联的密码,用户只要知道密码,就可以随意访问。Windows95/98/ME使用的就是这个模式。 3.服务器(Server Level):可以使用一个单独的Samba服务器进行用户身份验证,这样用户才可以访问共享。 4.域(Domain Level):此时Samba成为域的一部分,并使用主域控制器(PDC)来进行用户身份验证。用户通过了身份验证,就可以获得一个特殊的标志,这样就可以访问相应权限的共享资源。 5.ADS(Active Directory System):活动目录级别,只在Windows2000以及以后的操作系统中支持。
    • 19. 7.2 Samba 服务器的安装与配置1.参数“security=user”是Samba默认的安全等级,即用户安全级别在该安全等级下,Samba接收到用户的访问请求后,会进行密码检查工作,不过前提条件是用户名和密码必须在/etc/Samba/smbpasswd中已定义。为了保证安全,还要设置“encrypt passwords=yes”。这样做的目的是保证密码不会在网络上被明文传送,从而避免了密码被嗅探工具捕获的风险。 2.当参数“security=share”时表示Samba服务器的用户验证模式采用的是共享级的方式。客户端连接时会发送一个口令,而不需要用户信息。共享级权限是Windows95文件和打印服务器的默认设置。由于它的安全性不高,而且现在使用Windows95操作系统的用户也很少,一般不推荐使用该安全级别。
    • 20. 7.2 Samba 服务器的安装与配置3.“security=server”模式称为服务器安全级别。在该级别下,Samba会把密码验证的工作交给指定的服务器。当无法通过认证时,将会自动切换到“security=user”模式。 4.“security=domain”模式称为域安全级别。在该级别下,用户首先需要有Windows域的管理员账号,此时Samba会模拟一台加入Windows域的服务器,然后进行类似于安装Windows服务器时加入域的动作。 5.“security=ads”模式称为活动目录安全级别。该模式要求比较高,因为从Samba3.0开始,可以完美支持Windows 2000/2003服务器的ADS。如采用该模式,则客户端必须都是Windows 2000、XP甚至Vista等更高版本才行。
    • 21. 7.2 Samba 服务器的安装与配置2 . [homes] 单元 指定的是Windows共享的主目录。如果用户使用Windows访问Linux主目录,则其用户名作为主目录共享名。如果在Windows工作站登录的名称与口令和Linux用户名与口令一致,则在网上邻居中双击共享目录图标,就可以获得访问该目录的权限。
    • 22. 7.2 Samba 服务器的安装与配置主要参数 1.comment //注释,描述共享的信息。 2.browseable //定义是否允许网络列出共享,即是否允许其他人浏览该共享。 3.writable //指定合法用户是否具有对该目录写入的权限。 4.valid users //定义合法用户,只有指定列表中的用户才可访问该共享,各个用户名前用空格分隔,如果是组群名,则前面需要加上@或+符号。这里使用的是Samba的变量%S,表示与共享名同名的用户。
    • 23. 7.2 Samba 服务器的安装与配置3 .[printers] 单元 用于定义共享Linux网络打印机。从Windows系统访问Linux网络打印机时,共享的应是printcap中指定的Linux打印机名。
    • 24. 7.2 Samba 服务器的安装与配置4 .[public] 单元
    • 25. 7.2 Samba 服务器的安装与配置各参数的说明 1.comment //提示,在Windows的网上邻居上显示为备注。 2.path //Linux上的共享目录。这里设置成了/home/Samba目录,但共享名为public。 3.valid users //允许访问Linux共享目录的用户。此用户是Linux的Samba用户。 4.public //若设为yes,则允许guest用户在内的所有用户访问该共享。 5.writable //是否允许用户具有写权限。 6.printable //若设为yes,则被认定为打印机。 7.write list //表示只有组群staff中的成员才可以对该目录进行读写操作。
    • 26. 7.2 Samba 服务器的安装与配置设置好/etc/samba/smb.conf之后,可以用testparm指令检查该文件中是否有错误
    • 27. 7.2 Samba 服务器的安装与配置按enter键显示更多Samba服务器的详细信息
    • 28. 7.2 Samba 服务器的安装与配置7.2.3 启动、停止和重启Samba服务器 1.启动: service smb start 2.停止: service smb stop 3.重启: service smb restart
    • 29. 7.2 Samba 服务器的安装与配置7.2.4 测试Samba服务器 1.通过Windows客户端测试Samba服务器 找一台连网的Windows操作系统的计算机作为测试客户机,激活“网上邻居”,在“搜索计算机”对应的文本框中输入上面配置的Samba服务器的IP地址,即可进行在Windows中访问Linux系统的共享目录了。
    • 30. 7.2 Samba 服务器的安装与配置2. 通过Linux客户端测试Samba服务器 在Linux的shell环境中用命令“smbclient //IP地址/共享目录 –U 用户名”来登录Samba服务器。 登录成功后,在“smb:\>”提示符下,可以输入各种指令,如ls(列表),pwd(查看当前目录),put(文件上传),get(文件下载)等,和通过FTP的命令行访问方式相同
    • 31. 7.3 Samba服务器配置实例7.3.1 基于guest访问方式的Samba服务器的配置 设置一个Samba服务器,允许用户以客人身份登录。 Samba服务器的共享目录为/tmp,共享目录名称为 homes,共享目录的权限是只读。
    • 32. 7.3 Samba服务器配置实例1.用vi编辑器编辑主配置文件/etc/samba/smb.conf
    • 33. 7.3 Samba服务器配置实例2.将[global]单元中的参数“security”设置成“share”,即共享级验证方式。在此方式下,客户端连接时会发送一个口令,而不需要用户信息.
    • 34. 7.3 Samba服务器配置实例3.[homes]单元表示设定共享目录的名称为homes,guest ok=yes指定允许以客人身份登录,path=/tmp则说明共享目录的位置,read only=yes设定共享目录的权限是只读。
    • 35. 7.3 Samba服务器配置实例4.设置好/etc/samba/smb.conf之后,可以用testparm指令检查该文件中是否有错误。
    • 36. 7.3 Samba服务器配置实例5.用testparm指令检查配置文件正确无误后,就可以重新启动Samba服务器了
    • 37. 7.3 Samba服务器配置实例6.找一台联网的Windows操作系统的主机作为测试机,打开“网上邻居”,在“搜索计算机”中输入Samba服务器的IP地址(172.30.36.66),要先关闭Samba服务器端的防火墙
    • 38. 7.3 Samba服务器配置实例7.双击右侧的Samba Server,由于是以客人身份登录,所以无需输入账户名及密码就能成功登录。登录成功后可以看到刚才在Samba服务器上设置的共享目录homes
    • 39. 7.3 Samba服务器配置实例8.打开共享目录homes后会看到
    • 40. 7.3 Samba服务器配置实例9.如果想在homes目录下进行创建文件夹或创建文件这样的写操作是不允许的,因为在配置Samba服务器时已明确指定客人身份的只读权限了
    • 41. 7.3 Samba服务器配置实例7.3.2 基于指定账户访问方式的Samba服务器的配置 设置一个Samba服务器,允许以账号bgl和baigl身份登录。 Samba服务器的共享目录为/usr/bgl,共享目录名称为bgl, 共享目录的权限是只读。
    • 42. 7.3 Samba服务器配置实例1..先创建共享目录/usr/bgl,并在共享目录/usr/bgl中创建文本文件hello.txt(内容随意)如下图:
    • 43. 7.3 Samba服务器配置实例2.添加系统用户bgl和baigl,并为他们创建相应的密码
    • 44. 7.3 Samba服务器配置实例3.将系统账户bgl和baigl加入到Samba账户中这里需要使用smbpasswd命令。该命令用于向/etc/samba/smbpasswd文件中添加Samba账户以及管理Samba账户,包括修改Samba账户口令、禁用或启用账户等。 使用smbpasswd命令格式为: smbpasswd [-a] [-x] [-d] [-e] 系统用户名,各选项的作用: -a:添加用户到/etc/samba/smbpasswd中 -x:从/etc/samba/smbpasswd中删除用户 -d:禁用某个Samba用户 -e:启用某个Samba用户 此处在终端输入“smbpasswd –a bgl”和“smbpasswd –a baigl”,并分别输入各自的Samba口令,如图7-23所示。注意:将系统账户添加为Samba账户时,口令可以设置的不同,只是使用时要注意不要混淆。如下图
    • 45. 7.3 Samba服务器配置实例 
    • 46. 7.3 Samba服务器配置实例4.用vi编辑器编辑主配置文件/etc/samba/smb.conf,如图7-24所示。
    • 47. 7.3 Samba服务器配置实例5.先将参数“security”设置成“user”,即用户安全级别。在该安全等级下,Samba接收到用户的访问请求后,会进行密码检查工作,不过前提条件是用户名和密码必须在/etc/Samba/smbpasswd中已定义。如下图
    • 48. 7.3 Samba服务器配置实例
    • 49. 7.3 Samba服务器配置实例6.再将[homes]单元的内容全部注释掉,即取消7.3.1小节设置的匿名登录方式,如图7-26所示。
    • 50. 7.3 Samba服务器配置实例7.最后到文件末尾找到[public]单元,将其改为[bgldir]单元,各参数配置如图7-27所示。
    • 51. 7.3 Samba服务器配置实例其中,comment为注释信息;path指定了发布的Samba服务器的共享目录;valid users指定了能访问该共享目录的账户名;writable=yes允许进行写操作。 8.用testparm命令测试,如图7-28所示
    • 52. 7.3 Samba服务器配置实例
    • 53. 7.3 Samba服务器配置实例9.重启Samba服务器,如图7-29所示。
    • 54. 7.3 Samba服务器配置实例10在Windows客户机上访问此Samba服务器,在弹出的输入账户名和密码对话框中,输入刚刚创建的账户bgl及其密码。
    • 55. 7.3 Samba服务器配置实例11.当账户名和密码均正确无误后,就会成功登录到Samba服务器的共享目录中。下载Samba服务器的共享目录下的文本文件123.txt到本地客户机。由于之前设置共享目录的writable参数值为yes,即允许进行写操作,所以可以在这里建立一个文件夹测试一下,从图的效果可以看到,当前是不允许用户进行写操作的。原因是Samba服务器端共享目录及共享文件的权限不够。如下图
    • 56. 7.3 Samba服务器配置实例
    • 57. 7.3 Samba服务器配置实例7.3.3 Samba服务器写权限的设置 在7.3.2例子的基础上,允许账号bgl和baigl登录到Samba服务器上,且拥有写权限。 1.在Samba服务器端用“chmod”命令修改共享目录/usr/bgl的权限为777,如图7-32所示。
    • 58. 7.3 Samba服务器配置实例
    • 59. 7.3 Samba服务器配置实例2.再次通过Windows客户机测试Samba服务器,这时可以对共享目录进行写操作了,如图所示。
    • 60. 7.3 Samba服务器配置实例注意:一台客户机一旦以某用户的身份成功登录Samba服务器后,当再次登录时,就会直接登录成功而无需输入账户名和密码,所以在同一台客户机至多只能用一个用户名登录Samba服务器,如果想测试另外的账户名,需要再找一台客户机测试。
    • 61. 7.3 Samba服务器配置实例7.3.4 通过Linux客户端测试Samba服务器 在Linux客户端通过smbclient指令登录Samba服务器,进 行文件的上传与下载。 1.找一台Linux客户机,在用smbclient指令登录Samba服务器之前,先在当前目录下创建一个文本文件qqq.txt,便于后面的文件上传,如图7-34所示。
    • 62. 7.3 Samba服务器配置实例
    • 63. 7.3 Samba服务器配置实例2.用smbclient指令登录Samba服务器,效果如图所示。smbclient指令的格式为“smbclient //IP地址/共享目录 –U 用户名”,当以账户bgl的身份成功登录后,可以用put命令上传文件,用get命令下载文件,操作同FTP客户端指令。
    • 64. 7.3 Samba服务器配置实例
    • 65. 7.3 Samba服务器配置实例3.用“quit”指令返回到Linux客户端,再用“ll”命令查看当前目录下的文件,发现刚刚从Samba服务器端下载的文件hello.txt,如图7-36。