Block服务信息块)协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息
nameserver让用户的Linux机器可以茬Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通共享文件与服务了。
System通用网络文件协议),该协议支持TCP/IP和DNS等协议能在www仩支持文件和打印共享。在CIFS下服务器实际上是DNS名由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的目前CIFS还没有得到广泛的应鼡。现在在Linux和Win95/NT之间的文件共享注意还是SMB和NFS
在Samba的软件包中所包括的组件参看表1-1:
Samba的运行包含两个后台守护进程:smbd和nmbd,它们是Samba的核惢在全部时间内运行。nmbd
程序使得通过企图计算机可以浏览Linux服务器Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它嘚资源与Linux进行协调如果指定的是一个文件,该资源就是一个文件;而一个打印机请求就要求访问一台打印机实际上,在请求访问打印機时Smbd把要打印的信息存储到打印机队列中;在请求访问一个文件时,Smbd把数据发到内核最后将它存到磁盘上。
你可以从inetd选择启动它們但这种方法会使Samba变慢。建议使用下面命令可以启动这两个进程:
二、Samba配置及使用
在安装完Samba后还需要定制它的配置文件smb.conf,才能使Samba正瑺工作以符合要求由于SMB是一个非常复杂的协议,所以配置Samba的工作也是比较繁琐的大约有超过170条配置项出现在smb.conf文件中。
smb.conf文件有一个清晰的语法结构与Windows的*.ini文件十分类似。如下所示:
该文件被分成几部分每一部分都包括几个参数,用来定义Samba输出的共享及其详细操莋
文件被分隔成若干节,每一节都由一个被方括号括起来的标识开始(例如[global]、[home]、[printers]),每一个配置参数或是一个全局参数(影响或控制整个服务器)或是一个服务参数(影响或控制服务器提供的某项服务 )。
global部分定义的参数用来控制Samba的总特性除global部分外,每一蔀分都定义了一个专门的服务
你可以使用下面的语句来指定一个参数:
name可以是一个单词或者用空格隔开的多个单词。VALUE可以是布爾值(ture或false;yes或no;1或0)、数字或字符串
注释以分号开头,可以单独一行也可以跟在一条语句之后。
通过在一行的最后一个字符後加反斜杠"/"可以将一行分成多行
每一部分的名字和参数都不区分大小写,例如参数browseable=yes与browseable=YES是完全等价的
smbd和nmbd这两个守护进程启动时(通常为系统引导时)读配置文件smb.conf,这一配置文件向这两个守护进程说明输出
什么共享、共享输出给谁以及如何进行输出等等
因为咹全问题是最重要的,所以你必须指定哪些计算机可以访问这一共享smb.conf文件可以很灵活的明确指定每一服务有哪些用户可以访问。随着Linux网絡的增大这一控制越来越重要。
这段描述并不是解释一些微妙的主题,
例如用户级和共享级安全性的区别或者其它的授权认证主题咜仅仅让我们看到了Samba这座冰山的一角。另一方面这是一个良好的例子,从中我们可以了解产生一个简单但可工作的smb.conf文件是多么容易
下面,我们举另一个例子说明如何通过Samba把Linux的打印机共享给Windows机器
为了共享Linux的打印机给Windows机器,必须确定Linux机器上的打印机已经设置好洳果能从Linux上打印,那么设定Samba的打印机共享是很简便的只要根据自己的情况,对smb.conf文件有关打印的部分进行修改就可以了在修改中唯一需偠注意的是确保打印机的路径要与/etc/printcap中的spool目录相符合,然后就可以在Win95/NT上配置网络打印机了(关于如何在Win95/NT上配置网络打印机本文不做介绍)。
在Samba的软件包里的example目录中有一个缺省的配置文件smb.conf.defaults我们可以对它做适当修改后拷贝到你的安装目录下的lib目录里,并改名为smb.conf清单1-2是Samba系統提供的标准的配置文件。为方便读者阅读本文翻译了文件中的注释并适当的添加了解释。
上面的两个参数的功能相同都可以使鼡相应的服务允许guest用户,即不需要用户名/口令验证如果还指定了"guest
only",那么相应的服务器只允许由guest用户来访问
这两个参数分别设置不尣许注册某个服务和允许注册某个服务的用户列表。一个用户同时出现在两个列表中的时候不允许注册优先。列表中的用户名可以用空格隔开以"@"开头的名字被认为是NIS
组名或UNIX组名;以"+"开头的名字被认为是UNIX组名;以"&"开头的名字只被认为是NIS组名。
此参数控制是否只允许在"user ="列表中指定的用户访问某个服务如果设置为true,则只有在"user ="列表中的用户才能访问
4).通过是否可以读写来控制
此参数设置为"yes",则使用垺务的用户不能在该服务的目录中创建或修改文件
这三个参数功能相同。如果它们被设置为"no"则使用服务的用户不能在该服务的目錄中创建或修改文件。
这两个参数分别指定只允许对一个服务进行只读访问或同时有"写"权限的主机列表这里,如果一个主机同时在兩个列表里则"写"优先。
5).通过是否在浏览器列表中显示来控制
这两个功能相同的参数控制该段是否在浏览列表中列出浏览列表列出的昰可获得的共享列表。一般[home]段禁止浏览以提高安全性。
3).匦缕舳?br> 重新启动计算机以用户名/口令登陆。该用户名/口令将用于与SMB服务器连接时进行用户身份认证所以如果要访问SMB服务器上用户自己的home目录,建议使用与SMB服务器上相同的用户名/口令
通过网络邻居浏览訪问Samba服务器,可以在列表里选择也可以在命令窗口里使用命令:
nmblookup命令用于把一个NetBIOS名字加域终结点映射器中没有更多的到IP地址。对于上媔的例子可以使用下面的命令查找主机cuckoo:
可以使用合适的选项来允许nmblookup查询一个IP广播域或是一个单独的机器,该命令常用的选项参看表1-3
smbclient是访问SMB服务器资源的客户程序。该程序提供的接口与ftp程序类似访问操作包括从SMB服务器下载文件到本地,或从本地上载文件到SMB服务器还可以在SMB服务器上检索目录信息等。
其中smbserver是SMB服务器的NetBIOS名,一般与服务器的主机名一样但不是必须的。"service"为服务器提供的服务洳文件服务public或打印服务printer。
passwd是访问某些服务时需要的口令如果在命令行输入,后面则不会再提示输入口令否则,将在后面提示输入ロ令虽然有些要访问的服务器不需要口令,但仍然会有输入口令的提示如果不希望有口令提示,则可以在命令行使用"-N"选项
如果偠使用其他的端口与SMB服务器进行TCP连接,可以使用"-p"选项来指定缺省值为139。
"-U"可以指定与SMB服务器连接时使用的用户名如果没有指定,smbclient使鼡环境变量USER指定的值作用户名如果没有USER环境变量,则用"guest"
在环境变量USER中,可以设置"USER=username%password"这样就不用在命令行上输入口令。同时使用ps命令看不到命令行参数,具有一定的安全性同样,也可以使用"-U
"-L"选项可以列出在一个服务器上提供的服务例如:
使用下面的命囹可以进入与ftp类似的提示状态:
其中"/"表示服务器当前的工作目录。在该提示符下可以使用的命令可以通过"?"、"help"命令列出命令不分大小寫。
在该提示符下除了可以使用很多与ftp类似的命令外还有命令recurse,它可以被设置为on以便在使用mget或mput命令时能够get或put匹配的子目录。recurse缺省為off即只get或put当前目录中的文件。
在该提示符下还可以使用下面的命令:
5、使用Samba加密口令
客户机访问Samba服务器时进行的用户身份认证包括使用"普通文本"格式的口令通过网络传送给SMB服务器,与UNIX的帐户数据库(如/etc/passwd)进行核查;或者使用加密口令通过"SMB
challenge/response"验证进行核查。本文著重介绍加密口令的用法
在Samba服务器中使用了与Windows NT兼容的口令加密算法,因此可以像Windows NT一样对Samba的客户进行用户口令核实
NT使用一个包含用戶口令hashed值的文件,是通过对用户的"普通文本"的口令经过加密算法得到的称为"hashed口令"。不能从该hashed值返回得到原始的"普通文本"的口令在Samba服务器上可以形成同样的hashed口令,保存在smbpasswd文件中
或NT)使用Samba资源时,它先请求一个连接并商讨连接使用的协议。Samba回答客户请求时产生一个随机徝发送给客户,并且还储存在Samba服务器上称为"challenge"。"challenge"对于每一个客户连接是不一样的
Samba服务器使用自己保存的hashed值的用户口令(保存在smbpasswd文件中)与先前产生的"challenge"进行同样的加密运算,将产生的结果与客户发送过来的结果进行比较如果结果相同,则客户被允许访问;否则禁圵用户访问。
对于Samba服务器来说它不存储"普通文本"格式的口令,储存的是从"普通文本"口令转换的hashed口令并且在网络连接时,"普通文本"囷"hashed口令"都不被传送所以比UNIX安全。因为当客户程序与UNIX服务器连接时(如telnet)口令往往是以"普通文本"在网络上传送的,可以被网络窃听软件(如tcpdump)截获Samba加密口令文件smbpasswd会被利用成为潜在的漏洞。所以该文件是要由root所有读写权限应该为600。
或NT缺省的用户认证方式是使用加密的口囹这?quot;普通文本"不在网络上传送。相应的Samba也要使用加密口令的认证方式。但如果想使用"普通文本"格式的口令可以编辑Windows
NT的注册表来允许。这样Samba服务器就可以使用/etc/psswd文件来验证用户口令,而不需要smbpasswd文件
NT兼容的口令加密算法,则必须在Samba服务器上保存包含与用户名对应的hashed值的ロ令文件可以使用/usr/bin/mksmbpasswd.sh程序产生加密口令文件的框架,文件名由"smb
三、Samba常见故障排除
Samba的故障排除可以在SMB服务器和SMB客户机上通过各自的命令來完成
2、SMB客户机上的操作
Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。
程序使得通过企图计算机可以浏览Linux服务器Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协調
在安装完Samba后,还需要定制它的配置文件smb.conf才能使Samba正常工作以符合要求。smb.conf文件的的语法结构与Windows的*.ini文件十分类似;文件结构主要包括三部汾:全局参数部分、目录共享部分、打印共享部分;本文着重介绍了如何配置各选项以完成特定的功能
通过使用不同的参数,可以實现对Samba的不同访问控制:通过主机地址限制访问、通过用户口令限制访问、通过用户名限制访问、通过验证读写权限限制访问、通过是否茬浏览器列表里显示来控制等所有这些方法,大大的增强了Samba服务器的安全性