现在,许多单位都在建设自己的局域网以实现资源共享,其中文件共享是一个重要方
面。当前有许多网络操作系统可供我们选择,相对而言,选择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
文件目录建立的强制掩码
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/
表2 宏 涵 义 %u 根据要求共享的用户名提供共享资源 %g 根据要求共享的用户所属组
提供共享资源 %m 根据要求共享的机器名提供共享资源
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纳入你的
选择范围。