前言:
在windows环境下,如果是大型网络环境工作组方式显然是不能胜任的,域模式是windows的精典应用。在linux/GNU的操作系统下能不能实现域模式,把一台机器配置成DC,来替代windows server ,答案是可以的,利用samba就可以实现。不过,我觉得在功能上,易操作上没有windows 下DC强。在上篇文章中是把ubuntu系统的计算机加入到windows域中,今天实现把windows xp系统的计算机加入到ubuntu server的域中。
实验前要了解以下知识点:
(1)samba要用的以下两个daemons:(摘自鸟哥私房菜)
nmbd :这个 daemon 是用来管理工作群组啦、NetBIOS name 啦等等的解析。 主要利用 UDP 协议开启 port 137, 138 来负责名称解析的任务;
smbd :这个 daemon 的主要功能就是用来管理 SAMBA 主机分享的目录、档案与打印机等等。 主要利用可靠的 TCP 协议来传输数据,开放的端口口为 139 及 445(不一定存在) 。
(2)计算机的NetBIOS名与主机不同,samba是建在IBM开发的NetBIOS协议上的。
在windows 下可以用nbtstat -n 来查看目前计算机注册的NETBIOS名,它为16字符,前15个字符可以定义,第16个不可以自定义,代表一种服务。在ubuntu 中的NETBIOS名可以在/etc/samba/smb.conf中利用netbios name设置。与此相关的有一个叫lmhosts的文件,在windows及linux下都叫这个名。它的功能与hosts文件相似。
环境:
(1)域名:lab.cn,域控的操作系统ubuntu server 10.4
(2)客户端的操作系统是windows xp 专业版,不能是windows xp 家庭版;NetBIOS名为www。
操作:
1,安装samba
#sudo apt-get install samba libpam-smbpass
2,配置samba,修改/etc/samba/smb.conf
workgroup = lab.cn
security = user
domain logons = yes
#domain logons设置决定了用户能否利用PDC进行登录
domain Master = yes
#PDC要设置为yes,BDC要设置为no。说明看结束语内容。
gon path = \\%N\%U\profile
#登录后的用户配置文件存放的地方,在域控的/home/用户名/profile目录下
logon drive = H:
#登录后默认目录挂载成H盘
logon home = \\%N\%U
#登录用户的家目录,在域控的/home/用户名目录下
logon script = logon.cmd
#logon.cmd一定要放在netlogon目录下,并要注意因在linux与windows下的断行符不同,所以在linux下写的内容要转换成能在windows下能识别的格式。它的作用时初始化用户的登录环境。
#sudo mkdir –p /srv/samba/netlogon
#sudo touch /srv/samba/netlogon/logon.cmd
对smb.conf的语法是否正确时行检查
#sudo testparm
#sudo service smbd reload
要把客户端计算机加入到域中,需要root账号,所以我们用smbpasswd命令建立samba用户root
#sudo smbpasswd -a root
建立计算机账号
#sudo useradd –M –s /bin/false –d /dev/null www$
#sudo smbpasswd –a –m www$
3,把windows xp 专业版客户端加入到域中
加入域”网络ID”或“更改”两个按钮都可以,我们这里采用“网络ID“
提示找不到计算机的账户,这个没关系,再次输入主机的NetBIOS 名,域名
出现以上图示说明加入域成功。重新开机,并用域控上用户登录,登录的方式与登录windows的域控一样。
登录后能看到以下内容
这里的H盘,就是用户配置文件的位置。此时用户也可以更改密码,并能同步到域控上。也可以脱离域。
结束语:
配置过程参考了https://help.ubuntu.com/10.04/serverguide/C/samba-dc.html,还有BDC的配置没有实验,在现在的windows server 中不存在PDC与BDC了,都是DC。从过程来看比想象中要简单,这个域控能不能像windows的域控那样强大没有仔细的学习,希望samba4在这方面得到加强,服务器端用LINUX/GNU系统,客户端用windows系统,在目前来看是一个不错的选择。如果将来在客户端只要有一个浏览器就可以完成工作,我想linux/GNU系统会得到更好的应用。在实验过程中,总觉的这个DC不是很稳定。
通过配置samba还学习到以下知识点:(来自网络)
(1)什么是浏览(Browse):
在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。
但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。
Browser并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。
(2)local master = yes|no
这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。
(3)domain master = yes|no
这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器。
(4)preferred master = yes|no
这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。
(5)Domain master和local master
工作组和域这两个概念在进行浏览时具备同样的用处,都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上,工作组中每台计算机都基本上是独立的,独立对客户访问进行认证,而域中将存在一个(或几个)域控制器,保存对整个域中都有效的认证信息,包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候,并不需要认证信息,Microsoft将工作组扩展为域,只是为了形成一种分级的目录结构,将原有的浏览和目录服务相结合,以扩大Mircrosoft网络服务范围的一种策略。
工作组和域都可以跨越多个子网,因此网络中就存在两种Browser,一种为Domain Master Browser ,用于维护整个工作组或域内的浏览数据,另一种为Local Master Browser,用于维护本子网内的浏览数据,它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表,不同子网之间只能通过浏览器之间的交流能力,才能互相交换资源列表。
但是,为了浏览多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的帮助,计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字,以相互交换网络资源信息。
由于域控制器在域内的特殊性,因此域控制器倾向于被用做Browser,主域控制器应该被用作Domain Master Browser,他们在推举时设置的权重较大。