用Samba构建一个没有NT服务器存在的NT域
时间:2006-11-27 来源:unix.root
本文说明如何在linux操作系统下,用Samba构建一个没有NT服务器存在的NT域。
国内用户的中小型网络大量采用了Windows NT作为网络操作系统(NOS), 提供诸如
用户管理、文件共享等基本网络服务。如果出于工作上的考虑,必须使用Windows NT域模
型来管理网络,同时出于性能、经济或者其它方面的考虑,又想放弃NT那样复杂的管理、
昂贵的许可和不太高的效率,那么就请进入自由的Samba世界!Samba是一套自由的、开放
源代码的软件。
一位传说中的高手,依据Windows网络的基本协议??SMB(Server Message Block),
编写了一套将Unix系统与Windows网络完全融合的软件。因为Samba刚好包含S、M、B 三个
字母,所以这一整套系统被命名为Samba。
Samba与Windows网络
Windows系列操作系统通过“网上邻居”提供了便捷的网络资源访问。这实际上是
Windows浏览服务(请勿与Internet上的Web浏览混淆)提供的支持。 Windows浏览服务基
于NetBIOS(名字),每台Windows主机都会向网络发送Windows浏览信息, 并保留一份网
络主机名单。这样,当打开网上邻居的时候,就可以看见所有机器的NetBIOS名字。 由于
这份名单定时更新,所以当某些机器关机后,我们仍然能够在网上看见它。
在域模式出现以前Windows网络是基于工作组的, 每台主机都要负责维护自己的用户
名/密码,以及共享资源认证。这样难于保证网络的安全和性能, 而且访问不同机器的不
同资源都要提供相应的密码,非常繁琐和低效。根据商业用户对安全和工作效率的要求,
Windows商业网络提出了域的概念。在带有域的Windows网络中,主域控制器自动成为主浏
览服务器,负责提供并维护这份名单,其它Windows NT机器可以竞选成为辅助浏览服务器
协助工作。域提供统一的安全措施,所有用户的认证和资源共享工作由主域控制器进行管
理,可以实现整个域内一次认证、处处通行的目的。
Samba是一套自由的、开放源代码的软件,虽然无法公开得到应有的技术资料 (因为
SMB协议是私有的),但它还是逐步发展起来。现在,Samba已不是简单的Unix/linux与
Windows间的桥梁,它可以让Unix系统代替NT主域控制器管理整个Windows网络。这样,我
们不需要真正的NT服务器,也可以构建真正的Windows 域网络。
Samba能够模仿NT PDC向网络发送PDC竞选消息,并允许Windows客户机登录, 就像一
台NT PDC所做的那样。它会在启动时告诉其它Windows机器:我是主域控制器, 登录认证
找我好了。此时域中就不能再有其它声明为PDC的NT Server了,否则会导致PDC竞选失败,
并且Samba必须提供域登录,这样Windows客户才能在启动时输入用户名、密码和域名登录
到域。需要注意的是,此时的安全级别必须是user,因为server和domain级别的认证都需
要其它服务器配合,而PDC却只有一个。这样,实际上使用了本地密码, 最后出于安全的
考虑必须使用加密密码。
服务器的配置
下面是linux下作为PDC的Samba服务器的基本配置:
[global]
…… 其它全局参数 ……
workgroup = Samba.net
netbios name = PDC
security = user
domain logons = true
encrypt passwords = true
domain master = true
preferred master = true
local master = true
……
domain logons表示Samba提供客户机的域登录;encrypt passwords表示使用加密的密
码;domain master表示Samba宣告自己是这个域的主域控制器;preferred master则是附
加的竞选选项;local master让Samba不但提供域浏览,也提供本地浏览服务。
这样配置以后,根据NT域管理还要添加域用户。这个步骤很简单:
首先创建一个本地Unix账号:
useradd -r myaccount
这条命令创建了一个名为myaccount的普通Unix用户。
然后根据它创建一个Samba用户:
smbadduser myaccount:mysmbact
或者是:
smbpasswd -a myaccount
客户端设置
普通的Windows 9X(95/ME)客户端设置非常简单, 因为完全不需要设置就可以正常
登录到Samba.net域。它根本不知道域控制器已经由NT Server变成了Samba Server。它可
以执行登录脚本,可以应用系统策略和用户配置文件, 以及其它需要在NT Server上完成
的所有事情。
如果客户端是NT 4.0/2000就麻烦一点,因为NT的域认证基于机器信任账号来进行。
所以必须在Samba服务器上先创建机器账号。下面以一个名为w2000的计算机为例(由于这
部分NT和2000差别不大,我们通称为NT):
useradd -d /dev/null -r w2000$ -s /bin/false
我们创建了一个Unix本地账号,出于安全考虑不需要它登录到linux进行任何操作,
因此它的用户目录是/dev/null,Shell是/bin/false。
然后,我们就可以用smbpasswd创建相应的Samba机器账号:
smbpasswd -a -m w2000
其中,-a是添加,-m是机器信任账号。这样,依据w2000$的Unix账号创建了一个NT域
的机器信任账号w2000。
如果在安装NT时加入Samba域,可以直接选择将机器加入到域中, 但最好不要选择在
域中添加计算机账号。因为这样必须在linux上设置相应的执行脚本, 对初学者来说不但
麻烦,而且极易出错。
如果在已安装的NT工作站上重新加入到域,会要求提供可在域中添加账号的用户名和
密码,比如普通NT Server上的Administrator, 在Samba服务器上可以用root组的成员来
完成这一操作。如果不敢确定,我们可以创建一个root的Samba账号:
smbadduser root:root
输入两遍口令。
这样,Samba的工作就完成了,在NT客户端上执行更改用户或网络ID(Win2000),输
入用户名(Samba密码文件中必须存在这个用户)、域和密码,就会加入到Samba域。如果
要提供可以添加账号的用户名,使用前面的root即可。
结束语
通过Samba PDC,我们可以将Windows网络管理全部纳入linux之中,从而利用Linux配
置、管理灵活的特点,可以方便地实现文件共享认证、打印机共享和其它一些常用的功能。
由于SMB协议的性质,Samba开发小组无法获得协议细节。因此, 目前的Samba PDC对
较为复杂的域结构支持尚不够完善。
例如,它不支持其它Windows NT服务器作为备份域控制器(BDC)。也就是说, 域中
只能存在一个域控制器。在大型网络中, 大量的认证会话可能会影响服务器性能。
另外,它在客户端对文件共享进行管理时可能存在一些问题,而且不支持多主域结构,
无法建立两个域之间的信任关系。我们相信这些问题都会被一一解决。
国内用户的中小型网络大量采用了Windows NT作为网络操作系统(NOS), 提供诸如
用户管理、文件共享等基本网络服务。如果出于工作上的考虑,必须使用Windows NT域模
型来管理网络,同时出于性能、经济或者其它方面的考虑,又想放弃NT那样复杂的管理、
昂贵的许可和不太高的效率,那么就请进入自由的Samba世界!Samba是一套自由的、开放
源代码的软件。
一位传说中的高手,依据Windows网络的基本协议??SMB(Server Message Block),
编写了一套将Unix系统与Windows网络完全融合的软件。因为Samba刚好包含S、M、B 三个
字母,所以这一整套系统被命名为Samba。
Samba与Windows网络
Windows系列操作系统通过“网上邻居”提供了便捷的网络资源访问。这实际上是
Windows浏览服务(请勿与Internet上的Web浏览混淆)提供的支持。 Windows浏览服务基
于NetBIOS(名字),每台Windows主机都会向网络发送Windows浏览信息, 并保留一份网
络主机名单。这样,当打开网上邻居的时候,就可以看见所有机器的NetBIOS名字。 由于
这份名单定时更新,所以当某些机器关机后,我们仍然能够在网上看见它。
在域模式出现以前Windows网络是基于工作组的, 每台主机都要负责维护自己的用户
名/密码,以及共享资源认证。这样难于保证网络的安全和性能, 而且访问不同机器的不
同资源都要提供相应的密码,非常繁琐和低效。根据商业用户对安全和工作效率的要求,
Windows商业网络提出了域的概念。在带有域的Windows网络中,主域控制器自动成为主浏
览服务器,负责提供并维护这份名单,其它Windows NT机器可以竞选成为辅助浏览服务器
协助工作。域提供统一的安全措施,所有用户的认证和资源共享工作由主域控制器进行管
理,可以实现整个域内一次认证、处处通行的目的。
Samba是一套自由的、开放源代码的软件,虽然无法公开得到应有的技术资料 (因为
SMB协议是私有的),但它还是逐步发展起来。现在,Samba已不是简单的Unix/linux与
Windows间的桥梁,它可以让Unix系统代替NT主域控制器管理整个Windows网络。这样,我
们不需要真正的NT服务器,也可以构建真正的Windows 域网络。
Samba能够模仿NT PDC向网络发送PDC竞选消息,并允许Windows客户机登录, 就像一
台NT PDC所做的那样。它会在启动时告诉其它Windows机器:我是主域控制器, 登录认证
找我好了。此时域中就不能再有其它声明为PDC的NT Server了,否则会导致PDC竞选失败,
并且Samba必须提供域登录,这样Windows客户才能在启动时输入用户名、密码和域名登录
到域。需要注意的是,此时的安全级别必须是user,因为server和domain级别的认证都需
要其它服务器配合,而PDC却只有一个。这样,实际上使用了本地密码, 最后出于安全的
考虑必须使用加密密码。
服务器的配置
下面是linux下作为PDC的Samba服务器的基本配置:
[global]
…… 其它全局参数 ……
workgroup = Samba.net
netbios name = PDC
security = user
domain logons = true
encrypt passwords = true
domain master = true
preferred master = true
local master = true
……
domain logons表示Samba提供客户机的域登录;encrypt passwords表示使用加密的密
码;domain master表示Samba宣告自己是这个域的主域控制器;preferred master则是附
加的竞选选项;local master让Samba不但提供域浏览,也提供本地浏览服务。
这样配置以后,根据NT域管理还要添加域用户。这个步骤很简单:
首先创建一个本地Unix账号:
useradd -r myaccount
这条命令创建了一个名为myaccount的普通Unix用户。
然后根据它创建一个Samba用户:
smbadduser myaccount:mysmbact
或者是:
smbpasswd -a myaccount
客户端设置
普通的Windows 9X(95/ME)客户端设置非常简单, 因为完全不需要设置就可以正常
登录到Samba.net域。它根本不知道域控制器已经由NT Server变成了Samba Server。它可
以执行登录脚本,可以应用系统策略和用户配置文件, 以及其它需要在NT Server上完成
的所有事情。
如果客户端是NT 4.0/2000就麻烦一点,因为NT的域认证基于机器信任账号来进行。
所以必须在Samba服务器上先创建机器账号。下面以一个名为w2000的计算机为例(由于这
部分NT和2000差别不大,我们通称为NT):
useradd -d /dev/null -r w2000$ -s /bin/false
我们创建了一个Unix本地账号,出于安全考虑不需要它登录到linux进行任何操作,
因此它的用户目录是/dev/null,Shell是/bin/false。
然后,我们就可以用smbpasswd创建相应的Samba机器账号:
smbpasswd -a -m w2000
其中,-a是添加,-m是机器信任账号。这样,依据w2000$的Unix账号创建了一个NT域
的机器信任账号w2000。
如果在安装NT时加入Samba域,可以直接选择将机器加入到域中, 但最好不要选择在
域中添加计算机账号。因为这样必须在linux上设置相应的执行脚本, 对初学者来说不但
麻烦,而且极易出错。
如果在已安装的NT工作站上重新加入到域,会要求提供可在域中添加账号的用户名和
密码,比如普通NT Server上的Administrator, 在Samba服务器上可以用root组的成员来
完成这一操作。如果不敢确定,我们可以创建一个root的Samba账号:
smbadduser root:root
输入两遍口令。
这样,Samba的工作就完成了,在NT客户端上执行更改用户或网络ID(Win2000),输
入用户名(Samba密码文件中必须存在这个用户)、域和密码,就会加入到Samba域。如果
要提供可以添加账号的用户名,使用前面的root即可。
结束语
通过Samba PDC,我们可以将Windows网络管理全部纳入linux之中,从而利用Linux配
置、管理灵活的特点,可以方便地实现文件共享认证、打印机共享和其它一些常用的功能。
由于SMB协议的性质,Samba开发小组无法获得协议细节。因此, 目前的Samba PDC对
较为复杂的域结构支持尚不够完善。
例如,它不支持其它Windows NT服务器作为备份域控制器(BDC)。也就是说, 域中
只能存在一个域控制器。在大型网络中, 大量的认证会话可能会影响服务器性能。
另外,它在客户端对文件共享进行管理时可能存在一些问题,而且不支持多主域结构,
无法建立两个域之间的信任关系。我们相信这些问题都会被一一解决。
相关阅读 更多 +