当前位置:Linux教程 - Samba - 利用Linux的Samba服务模拟NT域

利用Linux的Samba服务模拟NT域

 现在,许多单位都在建设自己的局域网以实现资源共享,其中文件共享是一个重要方面。当前有许多网络操作系统可供我们选择,相对而言,选择Linux做为网络操作系统具有比较好的性能价格比。Linux提供的Web服务、邮件服务、数据库服务、文件共享服务基本能够胜任大多数单位的应用需求。本文主要阐述如何利用Linux的Samba服务模拟NT域实现局域网的文件资源共享。

  Samba是一个与Windows
NT具有相同协议的软件包。我们可以利用Samba服务来模拟Windows
NT域,使用户从Windows计算机上直接使用一台Linux服务器上的文件和打印机。当你正确安装了Samba软件包后,接下来的工作是正确配置Samba,Samba服务的配置都在/etc/smb.conf中完成。


  给Samba一个合适的域名


  在Smb.conf文件[Global]一节中,Workgroup项实际上相当于Windows
NT的域名,它的默认设置是Mygroup,我们可以根据单位名称、个人爱好给它一个名字,如Sambaserver。


  设置允许Windows工作站登录


  同样,在Smb.conf文件[Global]一节中,Domain
logons项设置为Yes,表示Samba服务允许Windows用户登录。


  用户鉴别设置


  经过以上两步设置后,在Windows
95老版本或Lan manager for DOS中,按Linux合法用户登录,就能够顺利地登录到Samba服务器。可是,在Windows
98中,你会发现,总是出现一个类似口令不正确的提示,这是什么原因呢?原来Samba服务口令识别默认的设置是普通文本,而Windows
98和带有SP3以上的Windows NT 4.0、Windows 2000都是使用加密口令。如何解决这个问题呢?可用以下三种方法。



表1




项名称



涵义



可能的值





comment



共享名注释



 





public



该共享资源是否公共许可



yes no





writeable



可以进行写操作



yes no





valid users



允许的用户,多个用户时,中间用分号隔开



mary;joke;hxw





allow hosts



允许的客户机,多个时,中间用分号隔开,可以用ip地址表示



hxw;moli;liping或11,103,41.*;11.103.42.88





create mask



文件目录建立的强制掩码



class=12v> 


  1.强制客户端以明文口令登录

  该方法采用修改Windows系统的注册表关闭口令,加密登录时,以明文传送口令。在注册表HKEY_LOCAL_MACHINESystemCurrent-ControlSetServicesVxDVNETSETUP中,添加一项EnablePlainTextPassword,值为1(DWORD)。然后,重新启动Windows系统。

  2.让Samba使用加密口令

  第一种解决办法可行但不实用,如果单位工作站太多,对系统管理员来说,显然是件麻烦的事情。事实上,现在流行的Linux的Samba版本都能够识别加密口令,只不过Samba默认的口令识别是普通文本。要使Samba能够识别加密口令,需要做如下几项工作。更改[Global]一节中的Encrypt
password项为Yes,Smb passwd
file项指向一个你建立的Samba密码文本,默认的文本是/etc/smbpasswd。接下来,用Cat/etc/passwd|mksmbpasswd.sh>/etc/


根据要求共享的用户名提供共享资源





%g



根据要求共享的用户所属组提供共享资源





%m



class=12v>根据要求共享的机器名提供共享资源


  smbpasswd的方法建立一个初始的Samba密码文本。然后,为所有Samba用户建立一个Samba密码口令,如要为Abc用户建立口令,只需键入Smbpasswd
abc。

  通过这种办法,你可以完全像登录Windows
NT一样使用Linux上的文件资源,客户端不再需要做额外的工作。

  3.寻求第三方用户认证

  如果在局域网中有一个NT服务器,Samba可以通过NT域的认证许可为客户端提供文件服务。也就是说,只要是NT域的合法用户,就可以访问Samba上的许可共享资源。具体配置方法为:把[Global]一节中的Security项设置为Server(Samba默认的是User),Password
Server项指向NT服务器名字,建议使用IP地址。如Password
Server=11.103.41.12。这种办法简捷,但在Samba共享资源设置上需进行更多的安全设置。因为在Samba服务下的公共许可的资源,只要是NT域的合法用户,不管是否是Linux用户,都能访问到该资源。


  设置Samba共享资源


  在Samba服务中,共享资源的设置要比Windows
NT灵活得多,它除了能像Windows
NT一样进行用户和工作站许可设置外,Samba还提供一种宏的功能,能够根据请求共享的机器和用户的情况,动态地分配不同的共享资源,也就是说,使用同一个共享名,不同的用户组、用户或不同的客户机,会获得不同的共享资源。设置的具体方法是:在Smb.conf中加入一小节,小节名为共享名,在小节中,Path项是必不可少的,它用来表示该共享名映射到Linux服务器上的哪个目录。如:

  [myshare]

  path
=
/home/samba

  Myshare是供客户机共享的共享名,/home/samba是该共享资源在服务器上的目录。

  在共享小节中,可以加入表1中的一些常用的控制项。

  在Path项中,可以充分利用Samba提供的宏功能,常用的宏见表2。

  如下面的Usershare共享资源,就是根据不同用户映射到其相应的用户目录:

  
[usershare]

   comment=不同用户共享资源

   path=/home/%u

  
public=yes

   writeable=yes

  
printable=no

  在设置共享资源中,要注意的一个问题就是,如果有Lan manager for
DOS工作站,在共享名中不要用$符号(这在NT域共享名中是常用的),因为在Lan manager for
DOS工作站要映射一个Samba具有$符号的共享名时,会出现DOS扩展错误。同样,要在Linux中利用Smbmount、Smclient来引用一个NT域具有$符号的共享名时也会出现错误。另外要注意的是,Samba是建立在Linux上的一项服务,Linux文件系统的权限优先于Samba。比如说,如果Samba允许对一个目录写操作,但Linux不允许,那么客户端还是不能写操作。所以,设置了一个可写的共享却不能进行写操作时,首先应当考虑Linux文件系统是否是写许可。


  重新启动Samba服务


  每次对Smb.conf做过修改、删除、增加操作,你都必须重新启动Samba服务,才能使你的改动生效。方法是:/etc/rc.d/init.d/smb
restart。

  通过以上五步骤,就可建起一个Linux上的“NT域”。经过长期使用后,笔者感觉它的稳定性、安全性都相当不错。当你想建一个文件服务器时,不妨把Samba纳入你的选择范围。