精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络书籍>>《FreeBSD使用大全》>>FreeBSD连载(68):根据Windows网络设置Sa

主题:FreeBSD连载(68):根据Windows网络设置Sa
发信人: Hopper()
整理人: (2000-02-28 20:03:38), 站内信件
http://www.sina.com.cn 2000年1月9日 18:26 王波

根据Windows网络设置Samba
  使用SMB协议实现的网络的情况非常不同,有的网络仅仅由几台Windows计算
机组成,只需要提供计算机之间最简单的资源共享,并不需要一个中心控制点 ─
─ 文件服务器提供服务,而有的网络由多个物理网络通过路由器连接而成,网络
中拥有多种文件/打印服务器,网络中的操作系统也各不相同,包括Windows和Un
ix。

  Samba服务器能适应这些不同要求的网络的不同要求,然而由于网络的需要各
不相同,因此对Samba的设置也不相同。如何根据需要来规划网络、设置Samba是
一个灵活但复杂的问题,同时存在各种各样的设置方式都能满足用户的需要,这
里给出的只是一种可行性建议。


小型网络,无NT服务器

  这种网络的特征是网络资源的使用程度不大,通常所有的计算机都位于一个
局域网内,几乎没有专用文件/打印服务器。所有的计算机均使用工作组方式相互
访问。此时使用Samba服务器的目的是为了更好的利用网络资源,提供方便的文件
/打印服务。

  在这样的网络中,仅仅需要最简单的文件/打印共享服务。虽然共享级认证方
式能够满足此时的需要,但是最好使用用户级认证方式,因为只有这样才能充分
发挥服务器提供服务的优势。需要为每个使用者在FreeBSD服务器上分别建立帐户
,这样缺省设置就自动为用户共享其个人目录,用做私人数据的保存。为了网络
用户之间的相互交换数据,可以设定一个公用共享目录,例如上面例子中的[pub
lic]共享目录。

  由于Samba服务器具有优秀性能,最好将Samba服务器设置为本地的Browser,
仅需要设置local master参数,并给os leverl一个较大的值就能达到目的。可以
不使用nmbd的名字解析能力用做名字服务器,因为此时都在一个物理网络内,b-
node广播方式能够提供正确的解析。

  当为Windows 98或者Windows NT SP3提供认证的时候,它们将使用加密过的
口令进行认证,这能提供更大的网络安全性。Samba服务器也能提供这种认证,然
而对于这样的小型网络,使用原有的非加密口令认证方式就足够了,因为口令不
会跨越网络传输,安全问题限制于本地网络内部。在Samba的文档中,提供了将W
indows 98或Windows NT SP3设置为原有认证方式的注册表信息,分别为/usr/lo
cal/share/examples/samba 目录下的Win95_PlainPassword.reg和NT4_PlainPas
swor.reg文件。


小型网络,与NT服务器相互协作

  这种网络中存在一个或几个Windows NT服务器,因此网络中的关键问题是认
证的策略问题。有的网络中使用分散式的认证策略,即各个服务器各自认证使用
自己资源的客户,适合网络上服务器属于不同管理者的情况,另一种情况是希望
在访问多个服务器时使用一致的认证,无论是在NT服务器还是在Samba服务器,对
于同一个用户只需要使用一个口令就能使用网络资源。

  当使用分散认证策略的时候,Samba服务器可以使用缺省设置security=user
,当要求Samba 服务器和NT服务器认证同样的用户的时候,可以使用security=s
erver,让NT服务器来认证用户,此时还需要设置password server的名字,以设
置提供认证的NT服务器的名字。

  由于是使用NT服务器对用户进行认证,然而NT上的用户与FreeBSD用户的名字
可能不同,为了将NT用户重新映射到FreeBSD上的Samba用户,就需要进行用户名
的映射。这需要使用username map参数,这个参数设置一个用于用户名映射的文
件名,在这个指定的文件中,可以设置FreeBSD用户(或用户组)等价于哪个NT 
用户(或用户组)。


具备多个物理网段的网络

  如果用户的网络跨越了多个物理网络,为了实现浏览,最重要的问题就是设
置使用名字服务器进行名字解析。此时可以选择使用Samba的nmbd作为名字服务器
,也可以使用Windows NT的WINS服务器作为名字服务器。

  但如果计划在网络上使用多个NetBIOS服务器,以提供相互备份的能力,就只
能使用多个Windows NT 来运行WINS,WINS的一项功能是具备相互复制的能力,而
nmbd不能和其他WINS服务器相互复制数据。WINS 使用这个功能主要是用于克服系
统操作本身的故障,以提高可靠性。对于一般的网络,使用一个名字服务器,尤
其是运行在高稳定性的FreeBSD系统之上的Samba,可靠性就能满足网络的需要。
当然偶然发生的物理故障是无法避免的,这样将使用分布在不同地点的多个服务
器会有一定的帮助。

  当选择好了名字服务器的设置策略,就可以决定Samba是用作名字服务器,还
是普通的使用名字服务器的客户机。Samba可以同时设置为名字服务器和客户,这
并不冲突。还可以设置Samba为wins proxy和dns proxy ,为不能使用wins和dns
进行名字解析的NetBIOS客户提供b-node方式的代理解析。

  当网络使用的是分散式的工作组方式的时候,要实现跨越子网的浏览,Samb
a服务器就担任了重要的角色。因为不存在域控制器,此时Samba要设置成为Doma
in master Browser,以提供不同子网间的Local master Browser相互交换浏览信
息。

  如果远程网络中的计算机不使用本地的Samba作名字服务器,该网络中的Dom
ain master Browser 也不与本地网络的Local Master Browser交换信息,那么那
个网络上的Brower就无法了解本地上的资源列表。作为本地Browser的Samba服务
器能使用一种折衷的方法来通知远程网络上的Browser ,告诉它本地网络提供的
资源服务,这就称为remote announce,并能用于远程网络中的浏览信息与本地网
络同步。为了使用remote announce,需要设置remote announce和remote brow 
se sync参数,使用的设置值为远程网络的广播地址,如192.168.1.255,可以同
时设置多个地址,以同步多个远程Browser。

  如果网络中使用NT域认证方式,就不要让Samba和域控制器争夺Domain mast
er Browser 的权利,Samba还不能设置为PDC为整个域服务。因此需要设置domai
n master=no,但可以让Samba 服务器在没有PDC的子网中担当Local master Bro
wser的任务,即设置local master=yes。

  当前NT服务器使用SAM数据库用于保存认证信息,但是下一代NT服务器将转向
kerberos认证方式,这种认证方式本来就是在Unix上开发的,更有利于与Samba软
件集成在一起。

  此时也可以使用NT的域控制器提供认证(设置security=server,并将passw
ord server 设置为PDC或BDC),以使得Samba服务器能承认域控制器认证过的用
户。这样客户技术就可以使用加密认证方式,因为Samba服务器不进行认证,仅仅
是把认证信息转发给相应的NT服务器进行认证。


支持加密口令认证

  前面提到过为了适应Windows 98和Windows NT 4.0 SP3之后的客户使用加密
过的口令认证方式,可以将客户计算机再次设回使用普通口令认证方式来解决认
证问题,然而当客户可能跨越子网进行认证的时候,就应该使用加密认证,以防
止口令明文跨越子网传输,提供更高的安全性。

  为了支持加密口令认证,就需要使用独立于FreeBSD系统口令文件之外的认证
系统,需要在smb.conf 中的[globals]中增加设置为:

      encrypt passwords = yes
      null passwords = yes
      smbpasswd file = /usr/local/private/smbpasswd
 
 

  然后使用命令smbpasswd -a user,将用户user及其口令加入指定的口令文件
smbpasswd 文件中,这样在进行认证时,就能通过这个smbpasswd文件中的设置,
通过口令的加密认证方式进行认证了。然而此时将绕过系统标准认证过程,原有
的用户数据必须重新一个一个加入smbpasswd文件中才能完成认证,没有添加到这
个文件中的用户就无法完成认证以使用系统资源。其中null passwords的设置不
是必须的,只是Windows NT中一般许可用户使用空口令,这项设置用来与Window
s NT的设置保持一致。加密口令文件smbpasswd 在FreeBSD系统下缺省位于/usr/
local/private目录中。

  Samba手册中使用的目录可能会与FreeBSD中的具体目录不一致,这是因为使
用Packages Collection 或Ports Collection安装的Samba,其软件的安装目录均
按照FreeBSD的习惯做了调整,因此会与Samba手册提到的位置不太相同。

  此时,使用SWAT的PASSWORD设置选项可以直接将一个用户加入口令数据库,
并打开访问这个用户的许可,对于加密口令的管理更为简便。因此应该使用SWAT
来管理加密口令数据文件,而不必直接使用smbpasswd命令。


将Samba服务器加入域

  使用域代替工作组的好处是,所有的客户能使用同一个认证来访问所有的资
源。虽然域的概念还是一种非常初级的目录服务的概念,但由于Microsoft网络的
流行,它的重要性也非常之大。

  在一个以域为认证方式的网络中,可以将Samba加入域中去,以采用与域一致
的认证和管理方式。在一个域中的 SMB计算机有各种形式,一种为提供认证服务
的域控制器,分为PDC(Primary Domain Controller)和BDC(Backup Domain C
ontroller),另一种为不提供认证服务的成员服务器,还有就是普通客户机。S
amba当前能作为普通成员服务器加入域。

  为了将Samba加入域,首先要为Samba服务器在PDC服务器中创建一个帐户,这
个操作就如同为普通NT 成员服务器创建用户一样,通过NT服务器的Server Mana
ger for Domain来完成。

  加入NT域的时候首先需要停止Samba服务器的正常工作,使用smbpasswd将这
个Samba服务器登记进域,这需要使用:

# smbpasswd -j DOMAINNAME -r SAMBASRV
 
 

其中DOMAINNAME为域的名字,SAMBASRV为前面PDC上为Samba服务器创建的帐户名
,这样Samba服务器就加入了域。然后需要更改smb.conf的设置:

       security = domain
       workgroup = DOMAINNAME
       password server = PDC_name BDC1 BDC2
 
 

  password server设置为这个域内的PDC和BDC的名字。此后,再次启动Samba
服务器,则服务器就为这个域的一个成员服务器了。

  虽然使用域认证方式和服务器认证方式都能让同样的用户访问Samba服务器上
的资源,然而对于认证细节是不同的,使用域认证方式能利用域提供的更安全的
认证通道。


设置lmhosts

  在Miscrosfot扩展的NetBIOS协议中,可以使用查询设置文件的方法来进行名
字解析,这个静态文件为 lmhosts。在Windows下的这个文件位于系统目录中,S
amba将其放在与smb.conf相同的目录下,FreeBSD系统中为/usr/local/etc中。


# Sample Samba lmhosts file. 
192.168.1.24  WIN95 
192.168.1.21  NTSRV#20 
192.168.1.121 FBSDSRV    #PRE
 
 

  lmhosts的文件格式与/etc/hosts文件非常类似,也是IP地址/主机名字对,
除了这个文件中使用的名字是NetBIOS名字。此外NetBIOS名字有一个定义属性类
别的字节(NetBIOS中的第16个字节),这个属性字节可以在lmhosts中直接设置
,以回应特定类别的请求,不设置这个属性,就对应所有类别。例如上例中的第
二项定义的NTSRV,就明确指定了其属性为16进制的0x20。

  此外,lmhosts也支持一些特殊的语法,例如用在一个设置项之后的#PRE选项
将使得这项设置在启动Samba 时自动载入系统缓冲区中,使得能最先识别。标准
情况下的lmhosts文件在名字解析查询顺序的后部,在经过wins 和b-node广播之
后才会检查lmhosts设置,而#PRE选项设置的名字就会在此之前进行解析。

  一般情况下不必设置这个文件,因为使用其他方法进行名字查询就足够了,
这种方法用于辅助解析的,例如在跨越子网进行浏览,但wins服务器不能提供访
问时的一个备份措施。其中的#PRE方式也能在系统启动时的进行一些初始名字解
析设置。

未完,待续。。。  



--
小多子:你知道我们佟家百年不衰的道理么?
        那就是,不要一条路走到黑!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.123]

[关闭][返回]