420 likes | 615 Views
第 11 章 Samba 服务器及其安装配置. 网络的目标是让用户更方便地共享信息。如果网络中既有 Windows 机器又有 Linux 机器,以及其他 U nix 类的机器,如要相互共享资源,使用 Samba 服务是很好的选择。 Samba 会允许文件和打印机被网络中的所有系统共享。 Samba 使用 SMB ( Server Message Block )协议通过网络连接共享文件和打印机,支持该协议的操作系统包括 Microsoft Windows 、 OS/2 和 Linux 和 Unix 。本章主要介绍 Samba 的配置和使用,以及相关的安全性问题。.
E N D
第11章 Samba服务器及其安装配置 • 网络的目标是让用户更方便地共享信息。如果网络中既有Windows机器又有Linux机器,以及其他Unix类的机器,如要相互共享资源,使用Samba服务是很好的选择。Samba会允许文件和打印机被网络中的所有系统共享。Samba使用 SMB(Server Message Block)协议通过网络连接共享文件和打印机,支持该协议的操作系统包括 Microsoft Windows、OS/2和 Linux和Unix。本章主要介绍Samba的配置和使用,以及相关的安全性问题。
11.1 Samba简介 • 11.1.1 什么是Samba • 11.1.2 Samba的功能 • 11.2 Samba服务器的安装和使用 • 11.2.1 Samba服务器的安装 • 11.2.2 Samba服务器的启动和退出 • 11.2.3 Samba服务器的配置及其客户端软件的使用
11.1.1 什么是Samba • SMB通信协议是Microsoft和Intel在1987年制定的协议,主要是作为Microsoft网络的通讯协议。通过“NetBIOS over TCP/IP”使得Samba不但能在局域网内共享资源,而且能与Internet上的主机共享资源,这是因为Internet上的主机所使用的通讯协议就是TCP/IP。SMB工作在OSI参考模型的上面所层,是会话层(Session Layer)、表示层(Presentation Layer)及小部分应用层 (Application Layer)的协议。SMB使用了NetBIOS的应用程序接口(Application Program Interface,简称API)。另外,它是一个开放性的协议,允许协议扩展—使得它变得更大而且复杂,大约有65个最上层的作业,而每个作业都超过了120个函数。最近微软又把 SMB 改名为 CIFS(Common Internet File System,公共Internet文件系统),并且加入了许多新的特色,而Samba亦支持NT Lan Manager 0.12等 SMB 的延伸协议,这使得Samba具有管理NT网域的能力。 • Samba是一套用来实现SMB协议的软件,使一套让UNIX系统能够应用Microsoft网络通讯协议的软件。它使执行UNIX系统的机器能与执行Windows系统的及其共享文件与打印机。Samba属于GNU Public License(简称GPL)的软件,因此,你可以合法且免费地使用它。当然,作为UNIX在PC机上实现的Linux也可以运行这套软件。
11.1.1 什么是Samba • Samba由一系列的组件构成,主要的组件如下所示:
11.1.2 Samba的功能 • 通过使用Samba,可以实现如下功能: • 提供Windows NT风格的文件和打印机共享。当Windows 98、Windows NT/2000等共享Linux操作系统的资源时,外表看起来和共享Windows的资源没有区别。 • 解析NetBIOS名字。在Windows网络中,为了能够利用网上资源,同时自己的资源也能被别人所利用,各个主机都定期地向网上广播自己的身份信息。而负责收集这些信息,为别的主机提供检索情报的服务器就被称为浏览服务器。Samba可以有效地完成这项功能。在跨越网关的时候Samba还可以作WINS服务器使用。 • 提供SMB客户功能。利用Samba提供的smbclient程序可以从Linux下以类似于 FTP的方式访问Windows的资源。 • 备份PC上的资源 利用一个叫smbtar的Shell 脚本,可以使用 tar 格式备份和恢复一台远程 Windows上的共享文件。 • 提供一个命令行工具,在其上可以有限制地支持NT的某些管理功能。 • 支持Samba管理工具SWAT(Samba Web Administration Tool)。 • 支持加密传输SSL(Secure Socket Layer)。
11.2.1 SAMBA服务器的安装 • 在Red Hat Linux 9 安装时,可以选择安装SAMBA服务器,如果不确定系统是否安装了SAMBA服务器,可以使用以下方法判断: • [root@jsjwl root]rpm –qa samba • Samba-2.2.7a-7.9.0 • 如上显示表明已经安装。 • 如果在Red Hat Linux 9安装时没有选择SAMBA服务器,那么需要先找出第一张和第二张系统光盘中保存在/RedHat/RPMS目录下以SAMBA开头的RPM包文件,然后输入以下指令,系统即会自动完成安装SAMBA服务器的任务: • [root@jsjwl root]rpm –ivh samba*
11.2.2 SAMBA服务器的启动和退出 • 可以以多种方式启动Samba服务器。 • 1.通过命令方式启动Samba • [root@puma /root]# /etc/rc.d/init.d/samba start 或 • [root@puma /root]# service smb start • 屏幕显示如图11-1所示。
11.2.2 SAMBA服务器的启动和退出 • 2.在X-Window 下启动SAMBA • 选择“系统设置/“服务器设置”下的“服务”菜单项,选中“smb”服务,然后单击工具栏上的“启动”按钮。如图11-2所示:
11.2.2 SAMBA服务器的启动和退出 • 3.在系统启动时自动启动Samba • 通过命令chkconfig可设定在系统启动时自动启动Samba: • [root@puma /root]chkconfig --level 345 smb on • (注:--level 345 指系统运行级别为3~5)。 • 要停止Samba服务器,可以使用以下命令: • [root@puma /root]#etc/rc.d/init.d/smb stop • 或者 • [root@puma /root]#service smb stop
11.2.3 [实验11.1]Samba服务器的配置及其客户端软件的使用 • 在启动Samba服务之前,首先需要完成Samba 服务器的配置,本节将介绍Samba服务的配置。 • 可以使用图形界面的配置工具进行配置,进入Linux的GUI界面(如Gnome)后使用命令redhat-config-samba进入配置界面,如图11 -3所示.。
11.2.3 [实验11.1] Samba服务器的配置及其客户端软件的使用 • 在图形界面下可以配置常见的Samba功能。 • Linux系统的特点在于其强大的命令管理功能,下面主要介绍命令方式下Samba的配置。 • 1.配置smb.conf文件 • /etc/samba/smb.conf是Samba中最重要的一个配置文件,类似Windows的*.ini文件,通过他可以配置服务器的权限,共享目录、打印机和机器所属的工作组等各种选项,它主要由两个部分组成:Global Settings 和 Share Definitions。前者的设置都是与Samba整体环境有关的选项,这里的设置是全局设置,适合于每个共享目录;而后者是共享目录的个别设置。 • smb.conf的语法说明: • a.文件分为几个部分,每一部分都包括几个参数,用来定义samba共享及其详细信息。 • b.文件的每一段用一个方括号括起来,不区分大小写,如[global]、[home]等。 • c.每一段用“名称=值”的格式来设置参数,如netbios name=JSJWL。 • d.行首加“#”、或“;”表示该行为注释行。 • 下面先用一个实际的例子来说明smb.conf的配置:
11.2.3 Samba服务器的配置及其客户端软件的使用 • 【例11-1】 /etc/samba/smb.conf配置文件 • [global] • workgroup = MYGROUP • security = share • [homes] • guest ok = yes • path = /tmp_share • read only = yes • 在上面例子中定义了两部分:[global]和[homes],每一部分用来描述一种特定的服务。其中[global]段是全局部分,workgroup = MYGROUP设定工作组名称,security = share 设定安全等级。而[homes]部分设置了一种服务,即共享文件服务,其中段名homes是共享名,guest ok = yes 设定允许客人身份的用户登录,path = /tmp_share则是设定共享目录的位置,read only = yes 设定共享目录的权限是只读。
11.2.3 Samba服务器的配置及其客户端软件的使用 • 一般设置好/etc/samba/smb.conf之后,需要用testparm命令检查文件中是否有错误。如果设置语法一切正确,则在执行testparm后系统出现的画面如图11-4所示。
11.2.3 Samba服务器的配置及其客户端软件的使用 • 上面通过一个简单的例子介绍了smb.conf文件的配置,其实smb.conf文件还有许多重要的参数需要配置,下面详细说明。 • (1) [global]基本参数 • [global]部分是smb.conf配置文件中最重要的部分,它是Samba的整体环境设置部分,本部分参数主要有基本设置参数、安全设置参数、网络设置参数、文件设置参数、打印机设置参数、用户权限设置参数和日志设置参数等。 • Workgroup = MYGROUP • 设定Samba服务器要加入的工作组的名称,也即出现在Windows操作系统中“网络邻居”里面的名称。 • Netbios name = jsjwl • 设定本机在网络邻居中显示的计算机名。 • Server string = Samba Server • 设定Samba服务器的文字说明,默认为“Samba Server”。 • Hosts allow = 192.168.1. 192.168.2. 127. • 此功能在默认状态下不启用,它用于设定局域网中哪些主机允许存取Samba服务器。 • Printcap name = /etc/samba/printcap • 打印机配置文件。
11.2.3 Samba服务器的配置及其客户端软件的使用 • Load printers = yes • 表示是否要共享打印机。 • Printing = cups • 一般标准打印机类型不需要设置此项目。 • Guest account = nobody • 此项目功能在默认状态下不启用,如果希望建立一个客户帐号,则选择该项,同时需要在/etc/passwd文件中定义该帐号,若未指定则Samba服务器会以“nobody”作为客户帐号。 • Log file = /var/log/samba/%m.log • 指定了log日志文件的存放地址。 • Security = share • 指定Samba服务器使用的安全等级,默认值为“user”,此处可用的等级有:share、user、server和domain四种。 • Encrypt passwords = yes • 设定是否使用加密方式传送口令,默认为“yes”,因为目前Windows操作系统均使用加密方式传送秘密,因此建议使用此设置值。
11.2.3 Samba服务器的配置及其客户端软件的使用 • Smb passwd file = /etc/samba/smbpasswd • 设定Samba服务器秘密文件的位置,若无此文件,则需自行建立。 • Interfaces = 192.168.12.2/24 192.168.11.2/24 • 此项设定可以使用Samba服务器同时监听多个网络接口,若主机上有多张网卡,应该设置此项目,默认为关闭状态。 • Local master = no • 设置是否让Samba服务器担任网络的主浏览服务器,默认为“no”。 • Wins support = yes • 设置是否支持WINS服务。 • Wins server = w.x.y.z • 设置WINS服务器的地址(SAMBA服务器可作为WINS客户机或WINS服务器)。
11.2.3 Samba服务器的配置及其客户端软件的使用 • (2)共享服务段基本参数 • /etc/samba/smb.conf中包含多个以中括号([ ])开头的共享资源段,每一个共享资源段主要由提供访问的路径和访问权限组成,共享资源可以是文件资源,也可以是打印资源。而“[ ]”中的名称也就是在Windows系统中“网上邻居”中出现的名称。 • 一般来说共享资源段可以供guest级帐号访问,使用guest级帐号访问不需要用户名和秘密码,而guest级帐号的权限是在Linux中由系统管理员分配的。共享资源段也可以提供给普通用户访问,而普通用户对共享资源段的访问权限是基于Linux系统设定的对资源的访问权限,不能超出此权限。下面介绍几个主要的共享资源段的实例: • ① [homes] - 用户个人主目录段 • Comment = Home Directories • 共享目录的描述。 • Browseable = no • 是否允许其他用户浏览个人用户主目录,默认为禁止。
11.2.3 Samba服务器的配置及其客户端软件的使用 • Path = /home • 个人用户主目录的路径。 • Writeable = yes • 是否允许个人主目录写操作,默认为yes。 • Valid users = %S • 允许登录的用户,%S表示目前登录的用户。 • Guest ok = yes • 表示所有用户均可以不需要密码登录个人用户主目录。 • Create mode = 0664 • 对于新增文件的默认权限。 • Directory mode = 0775 • 对于新增目录的默认权限。 • ② [printer]-打印机配置段 • Comment = All Printers • 打印机描述。 • Path = /var/spool/samba • 打印机队列路径。 • Browseable = no • 是否允许浏览打印机的暂存内容,一般不需要。
11.2.3 Samba服务器的配置及其客户端软件的使用 • Guest ok = no • 连接打印机时是否不需要密码。 • Writable = no • 是否允许写入此目录。 • Printable = yes • 是否允许用户打印。 • ③ [public] - “public”目录设置段 • Comment = Public Stuff • 目录描述。 • Path = /pub • 实际共享路径。 • Public = yes • 是否允许目录共享。 • Writable = yes • 是否允许写目录。 • Guest ok = yes • 是否允许guest帐号访问。 • Printable = yes • 是否允许打印目录内容。 • ;write list =@stuff • 拥有读取及写入权限的用户或组(以“@”开头表示)。
11.2.3 Samba服务器的配置及其客户端软件的使用 • 2. Samba服务器与客户端的使用 • (1)Windows客户端访问Samba服务器 • Linux系统中使用Samba最主要的原因就是便于Windows用户访问Linux服务器。如果希望局域网中用户user1能够访问Linux上名称为/shrdir的目录(或分区),可以按照如下步骤实现: • 1)在[global]中security参数设为user或share。 • 2)在Linux系统中创建用户user1,并设置它的口令与Windows系统中的完全一样。例如,如果在Windows系统中user1的口令为“123”,则在Linux中user1的口令也同样为“123”(不一样则在连接Samba服务器时会被再次要求输入口令)。此外,还需要在/etc/group中创建一个shrdir的用户组,使用户user1成为shrdir中唯一的成员。命令序列如下: • #useradd user1 • #passwd user1 • #groupadd shrdir • #usermod –g shrdir user1
11.2.3 Samba服务器的配置及其客户端软件的使用 • 3)在smb.conf中添加如下内容: • [shrdir] • Comment = Shrdir Directory • Path = /shrdir • Public = no • Writeable = yes • Write list = @shrdir • Printable = no • 在[shrdir]的配置中,确定/shrdir不能被公开访问,并且仅允许shrdir用户组对/shrdir进行写操作。按照上面的配置完成后,通过testparm测试没语法错误后就可以重启Samba服务。 • 按照上面的步骤进行配置后,用户user1就可以从Windows中的“网络邻居”访问Linux上的/shrdir了。如图11-5所示。
11.2.3 Samba服务器的配置及其客户端软件的使用 • 注:若要创建一个只读的samba服务器,则可以将Writeable参数设为no,并且删除Write list参数。 • (2)Linux客户访问Windows的共享资源或Samba服务器 • 如果要让Linux客户访问Windows 系统中的共享目录、或Linux通过Samba服务器共享的目录,可以通过smbclient或smbmount实现。首先应确定Linux上安装了smb-client软件包。可以使用下面的方法测试: • #rpm –qa samba-client • Samba-2.2.7a-7.9.0 • smbclient是一个基本的访问Windows 共享目录或Samba共享目录的软件,语法格式如下: • smbclient <servicename> -U username • 其中servicename是要连接的共享资源名称,使用诸如“//server/service”的格式(其中server是远程计算机的名字,service是共享目录的名字)。Username是Windows系统中的用户名。例如,假设Windows机器名是WINTEST,共享目录是PUBLIC,允许访问Windows的用户名是sss。那么可以这样执行smbclient: • #smbclient //WINTEST/PUBLIC –U sss
11.2.3 Samba服务器的配置及其客户端软件的使用 • 回车后屏幕显示 • added interface ip=192.168.0.2 bcast=192.168.0.255 nmask=255.255.255.0 • Got a positive name query response from 192.168.0.1(192.168.135.1,192.168.0.1) • Password: • 输入此用户的口令,即可访问到windows的共享目录。 • 这时出现smbclient的提示符: • smb: \> • 在这个提示符下面可以输入命令,help显示所有可用的命令,用法类似ftp,使用完 • 毕之后使用quit命令退出。 • smbclient常用命令有: • cd [目录名] 改变当前目录 • del [文件名] 删除文件
11.2.3 Samba服务器的配置及其客户端软件的使用 • dir 显示目录 • get [文件名] 从服务器下载文件并且存放到本地目录 • lcd [目录名] 改变本地目录 • mget [一组文件] 取得成组文件 • put [文件名] 上传文件 • recurse 激活递归模式,在这个模式下可以连子目录一起操作 • mput [一组文件] 成组上载文件 • rmdir 删除目录 • mkdir 建立目录 • 上面介绍的是smbclient的一般用法。如果你想明确地给出用户名和口令,可使用-U参数,例如用户名为“user1”,口令为“test”应该给出为 • Smbclient //WINTEST/PUBLIC –U user1%test • 对于smbclient,还需要掌握的另外几个常用命令行参数如下:
11.2.3 Samba服务器的配置及其客户端软件的使用 • -I [IP地址] 显式给出目标主机的IP地址,可以通过-I选项给出IP。也可不用此参数而直接把主机名(如此例的WINTEST)换成IP地址。 • -L 列出目标主机提供的所有资源。 • -W [工作组名] 在登录时指定工作组名字或者域名 • -N 该选项禁止用户输入口令,当连接不需要口令的资源时可以使用该选项。 • (3) 打印机的共享 • Samba中涉及打印共享的参数主要有以下几个 • 1)在[global]字段中涉及共享打印机的主要字段 • printcap name =/etc/printercap • 这是指定打印机配置文件的位置。打印守护进程读取printcap文件中的配置信息,监视打印机的工作情况。 • load printers • 指定是否要加载打印机(使打印机可以共享)。默认值为yes。如果用户想要自动载入打印机列表,而不是个别地安装,则必须在此指定以上两项。
11.2.3 Samba服务器的配置及其客户端软件的使用 • printing =cups • 指定打印系统类型。只有在打印系统不是标准的情况下,才必须指定,否则不必指定。指定打印系统类型将影响到smb.conf文件中与打印机相关的命令(如print,lpq,lppause,lpresune)的执行方式。默认的打印系统类型为bsd,其他的类型还有sysv,plp,lprng,hpux,qnx,cups。 • 2)配置共享打印机 • 首先在Linux Samba 服务器上配置本地打印机 ,然后需要获得Adobe Postscript Driver (在www.adobe.com网站下载Winstchs.exe,在Windows 环境下安装好。 • 3)设置smb.conf的打印共享配置 • [global] • ………… //按上文将有关共享打印机的几个主要配置参数写到此处 • [printers] //这部分用于配置打印机共享,所有用户都可以共享打印机。 • comment = All Printers //注释文字 • path = /var/spool/samba //设置打印机队列的位置,用户必须自行创建该目录,存放打印的临时文件 • browseable = no //不允许浏览共享打印机
11.2.3 Samba服务器的配置及其客户端软件的使用 • #Set public = yes to allow user ’guest account’ to print • guest ok = no //必须用帐号和密码才可以访问共享打印机 • writable = no //共享打印机,writable必须设置为no • printable = yes //允许用户更改打印机队列中的文件 • [fredsprn] //该共享的打印机只允许fred私人使用 • comment = Fred’s Printer • valid users = fred • path = /home/fred //打印机队列是fred的用户目录,要主义fred必须有权访问该目录。 • printer = freds_printer //设置共享打印机的名称,此参数又可以写成“printer name=”,该参数如果放在[global]字段,所有打印服务用到的打印机名都将是一样的 • public = no • writable = no • printable = yes
11.2.3 Samba服务器的配置及其客户端软件的使用 • 4)为Windows 客户机准备打印驱动 • 为了给Windows 客户机准备打印驱动,可以运行cupsaddsmb命令。执行如下的操作将打印机驱动程序放置在/etc/samba/drivers目录下。 • 创建/etc/samba/drivers目录 • [root@jsjgcx root]#mkdir /etc/samba/drivers • 运行cupsaddsmb命令,以root身份执行该命令,共享所有打印机 , • [root@jsjgcx root]# cupsaddsmb -a -U root • 5)从Windows 客户机访问Samba 共享打印机 • 当配置好Samba 共享打印机之后,合法用户就可以在Windows 的网上邻居看到被共享的打印机。双击共享的打印机,在弹出的窗口中确认安装此打印机驱动即可。
11.3 Samba的安全 • Samba流行非常广泛,但也存在安全漏洞,特别是版本较低的Samba,尽管这些漏洞在不断地得到修正,还是需要在使用时进行安全方面的设定。 • 1. Samba的安全等级设定 • 前面提到过在/etc/smb.conf的[global]部分security参数可以设置4个不同的安全等级:share、user、server和domain。除了share之外,其他3种等级都需要用户输入正确的用户名和密码才能登录到Samba,下面分别介绍4种安全等级。 • user 这是samba的默认配置,这种情况下要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。 • Share 这是几乎没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。 • Server 和user安全级类似,但用户名和密码是递交到另外一个SMB服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级,从用户端看来,server和user这两个级别是没什么分别的。 • domain 这种安全级别要求网络上存在一台NT PDC,samba把用户名和密码递交给NT PDC去验证
11.3 Samba的安全 • 从用户端看来,user级以上的安全级其实是没什么分别的,只是服务器验证的方式不同,但这三种安全级都要求用户在本Linux机器上也要系统帐户。否则将不能访问的。 • 2.在Samba服务器中不使用加密口令。 • 还有一个encrypt passwords选项,这个选项设置是否对密码进行加密,samba本身可以维护一个密码文件/etc/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/passwd密码文件进行验证。这其中有些问题,比如在Windows 98和Windows NT 4.0 SP3以后的版本默认都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改。 • 对于Windows 98以上的版本,可以如此修改注册表: • [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] • 加一个十六进制值“EnablePlainTextPassword=00000001”。 • 对于WINDOWS NT/2000版本,可如此修改注册表: • [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters] • 加一个十六进制值“EnablePlainTextPassword=00000001”。
11.4 SAMBA相关程序——SWAT • 为了简化Samba的配置,Samba在其中也包含了一个可以通过浏览器进行配置的工具swat。要使用swat,首先必须将它配置成一个服务器进程,可以通过更改/etc/services和/etc/inetd.conf来实现。首先要为swat分配一个端口,例如在/etc/services中加入这样一行: • swat 901/tcp • 901是通常给swat分配的端口。另外在inetd.conf里填上: • swat stream tcp nowait.400 root /usr/sbin/swat swat • 还需要修改swat的配置文件/etc/xinetd.d/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 brower.
11.4 SAMBA相关程序-SWAT • service swat • { • port = 901 #swat使用901端口。 • socket_type = stream • wait = no • only_from = 127.0.0.1 #只从本机启动swat。 • user = root #启动swat的用户名。 • server = /usr/sbin/swat • log_on_failure += USERID • disable = no #此处一定要把yes改成no • } • 修改完成后,重新启动xinetd: • #service xinetd restart
11.4 SAMBA相关程序-SWAT • 在浏览器中输入http://127.0.0.1:901/ (注意,901和http:// 都不能省略)然后将出现登录窗口。输入用户名root和相应的口令后,将出现swat的配置屏幕,如图11-6所示。
11.4 SAMBA相关程序-SWAT • 接下来的配置类似/etc/samba/smb.conf中的选项,比较简单明了。需要注意的是,由于swat程序生成smb.conf的时候会自动删除原来的smb.conf,因此建议先备份原来的smb.conf文件。另外,swat使用明文传送用户名和口令,这意味着系统口令可能被监听到,所以使用过程中一定要注意安全。
11.5 Samba常见故障排除 • Samba的故障排除可以分别在Samba服务器和Samba客户机上通过各自的命令来完成。 • 1. Samba服务器上的故障排除 • 1)使用testparm命令来查看是否有错误的配置。如: • /usr/bin/testparm /etc/smb.conf • 2)在服务器以及客户机上用ping命令查看TCP/IP是否工作正常。 • 3)检查相关参数。 • 在Samba服务器上使用“/usr/bin/smbclient -L SMBserver”命令将得到一个共享的列表。 • 如果出现失败信息,则要检查与服务器相关的"hosts allow"、"hosts deny"、"valid users"、"invlid users"等参数的设置。如果出现"connection refused",则检查Samba服务器进程是否启动;如果Samba以守护进程形式运行的话可以使用"netstat -a"命令检查端口是否处于监听状态。 • 4)检查nmbd的运行情况。 • 运行命令"/usr/bin/nmblookup SMBserver",将返回SMB服务器的IP地址。否则nmbd没有正确的运行。
11.5 Samba常见故障排除 • 5) 运行"/usr/bin/nmblookup -d 2 * "命令,在子网中运行NetBIOS/TCP IP的主机将会响应。否则说明nmblookup 不能正确的得到广播地址,可以尝试在smb.conf文件中用interfaces参数人工设置IP地址、广播地址和子网掩码。 • 6)运行"/usr/bin/smbclient \\SMBserver\homes"命令,需要输入客户在SMB服务器上的用户口令,然后会出现类似"smb>"的提示符。这时可以使用dir命令浏览客户在SMB服务器帐户目录下的文件,用help命令可以得到其他命令的帮助。如果不能出现类似"smb>"的提示符,并且有"invalid network name"的错误信息,则有可能homes共享没有正确的设置;或者有"Bad password",则要检查"shadow password"、"password encryption"以及参数"valid users"和"path"的设置。 • 2.Samba客户机上的故障排除 • 1)运行"net view \\SMBserver"命令,应该能够列出Samba服务器上的共享。 • 如果出现类似"network name not found"的错误,则要检查客户机上DNS或WINS的设置。如果出现"Invalid network name"或"bad password error"的错误,则参照与上面"smbclient -L"命令中同样的错误结果的解决方法。要注意客户机将要用客户注册客户机时所用的用户名/口令去与SMB服务器连接,所以在Samba服务器上,用户最好有同样的用户名/口令。
11.5 Samba常见故障排除 • 2)使用"net use x;\\SMBserver\homes"命令,可以把SMB服务器上客户home目录映射到客户机"x:"盘,"x:"应该是一个客户机上未使用的盘号。这样,共享的目录可以在客户机上以"x:"盘来看待。正常的信息为"command complete successfully"。 • 如果要停止使用"x:"盘,可以使用"net use x:/delete"命令。如果不能正常的把客户的home目录映射到"x:"盘,则要检查Samba服务器上"hosts allow"等参数的配置。如果客户机上的用户名不能与服务器上的用户名匹配,尝试使用"username map"选项。 • 3)如果在Samba服务器上没有使用"encrypted passwords",则在客户机上要在注册表中允许使“普通文本"格式的口令。
11.6 小结 • Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。 • 守护进程smbd和nmbd是Samba的核心,在全部时间内运行。nmbd 程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协调。 • 在安装完Samba后,还需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。smb.conf文件的的语法结构与Windows的*.ini文件十分类似;文件结构主要包括三部分:全局参数部分、目录共享部分、打印共享部分;本文着重介绍了如何配置各选项以完成特定的功能。 • 通过使用不同的参数,可以实现对Samba的不同访问控制:通过主机地址限制访问、通过用户口令限制访问、通过用户名限制访问、通过验证读写权限限制访问、通过是否在浏览器列表里显示来控制等。所有这些方法,大大的增强了Samba服务器的安全性。
【第11章习题】 • 1.使用SAMBA服务器,一般来说,可以提供: • A. 域名服务 B. 文件服务 C. 打印服务 D. IP地址解析 • 2.在使用SAMBA服务时,由于客户机查询IP地址不方便,可能需要管理员手工设置_________文件。 • A. smb.conf B. lmhosts C. fstab D. mtab • 3. 一个完整的smb.conf文件中关于linux打印机的设置条目有: • A. browseable B. public C. path D. guest ok • 4. samba所提供的安全级别包括: • A. share B. user C. server D. domain
【第11章习题】 • 5. Samba服务器的默认安全级别是: • A. share B. user C. server D. domain • 6. 可以通过设置条目_______来控制可以访问samba共享服务的合法主机名。 • A. allowed B. hosts valid C. hosts allow D. public • 7.下列哪个命令允许修改Samba用户的口令: • A. passwd B. mksmbpasswd C. password D. smbpasswd • 8.Samba后台的两个核心进程是: • A. smbd & nmbd B. inetd & smbd C. inetd & httpd D. nmbd & inetd
【第11章习题】 • 9.【实验】Samba服务器的配置 • 配置一台Samba服务器,使Windows客户端能访问Samba服务器上的文件。