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

利用Linux系统的Samba服务模拟NT域


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

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

给Samba一个合适的域名

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

设置允许Windows工作站登录

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

用户鉴别设置

经过以上两步设置后,在Windows95老版本或Lan manager for DOS中,按Linux合法用户登录,就能够顺利地登录到Samba服务器。可是,在Windows98中,你会发现,总是出现一个类似口令不正确的提示,这是什么原因呢?原来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   允许的客户机,多个时,中  hxw;moli;liping或

         间用分号隔开,可以用ip地  11,103,41.*;11.103.42.88          址表示

create mask   文件目录建立的强制掩码 1.强制客户端以明文口令登录

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

2.让Samba使用加密口令

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

宏     涵 义

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

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

%m     根据要求共享的机器名提供共享资源

smbpasswd的方法建立一个初始的Samba密码文本。然后,为所有Samba用户建立一个Samba密码口令,如要为Abc用户建立口令,只需键入Smbpasswd abc。 通过这种办法,你可以完全像登录WindowsNT一样使用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纳入你的选择范围。