linux加入windows域之完美方案笔者这几天在研究samba服务通过ad域进行用户验证。在查资料的过程中发现。关于linux加入windows域,网上资料不少,但是按着网上的说法做大多不成功,甚至很多人估计都不知道自己在说什么,最后一个netadsjoin就认为已经成功加入到域了,可是然后呢?作为域内的一个成员,普通的机器要可以提供域内的用户登陆;作为samba服务要把共享加入到目录中,这样才起到加入域的作用嘛。笔者经过反复实验,终于把linux加入到windows域一些细节记录下来,不敢独享,特拿出。笔者用的linux为centos5.3。ad域为win2k3sp2。域为:Rainbird.netWin2k3:Name:ad1Ip:192.168.1.241Dns:192.168.1.241Centos5.3:Name:FilesrvIp:192.168.1.246Dns:192.168.1.241Ok,let’sgo!1.samba服务器软件需求krb5-workstation-1.2.7-19pam_krb5-1.70-1krb5-devel-1.2.7-19krb5-libs-1.2.7-19samba-3.0.5-2[root@filesrvCentOS]#rpm-qa|grepkrb5krb5-auth-dialog-0.7-1krb5-libs-1.6.1-25.el5krb5-devel-1.6.1-25.el5pam_krb5-2.2.14-1krb5-workstation-1.6.1-25.el5[root@filesrvCentOS]#rpm-qa|grepsambasamba-swat-3.0.28-0.el5.8samba-common-3.0.28-0.el5.8samba-client-3.0.28-0.el5.8samba-3.0.28-0.el5.8如果centos在安装的时候没有取消默认选中的”Base”,则krb5的包是默认全部安装如果没有选择安装samba可以这样安装[root@filesrvCentOS]#rpm-ivhxinetd-2.3.14-10.el5.i386.rpm[root@filesrvCentOS]#rpm-ivh--aidsamba*.rpm2.配置kerberos和samba因为笔者用的系统为centos所以为保证一次成功的准确率,这里就使用字符界面下的图形工具来配置了。运行setup工具认证配置选择:“usewinbind”“usekerberos”“usewinbindauthertication”删除adminserver其余的改成真实情况Realm为域名,KDC为域服务器的ip配置winbindDomain为你的域的,左面第一个”.”前面的东东选择”joindomain”,提示是否先保存配置信息,肯定是yes了。嘿嘿,看到这个画面是不是想到了xp机器加入到域的情景?没错就是那个!输入ad域的管理员密码吧不出意外的话,你就到达了最后一个界面,肯定ok,然后退出了。一般来说,只要两台机器的时间上下不差五分钟,且项都配置正确的话,你就会看到下面这个图片。看到这个图片说明你的linux成功加入到ad域啦!OK,用图形的好处就是方便快捷,但是这样只适合rh系统。别的linux系统咋办呢?别急。这个工具其实就是编辑以下三个配置文件:/etc/nsswitch.confpasswd:fileswinbind(就是先读files然后再通过winbind认证)shadow:fileswinbindgroup:fileswinbind/etc/krb5.conf[logging]default=FILE:/var/log/krb5libs.logkdc=FILE:/var/log/krb5kdc.logadmin_server=FILE:/var/log/kadmind.log[libdefaults]default_realm=RAINBIRD.NET(默认的域名)dns_lookup_realm=falsedns_lookup_kdc=falseticket_lifetime=24hforwardable=yes[realms]EXAMPLE.COM={kdc=kerberos.example.com:88admin_server=kerberos.example.com:749default_domain=example.com}RAINBIRD.NET={kdc=192.168.1.241:88(域服务器)kdc=192.168.1.241}[domain_realm].example.com=EXAMPLE.COMexample.com=EXAMPLE.COMrainbird.net=RAINBIRD.NET.rainbird.net=RAINBIRD.NET[appdefaults]pam={debug=falseticket_lifetime=36000renew_lifetime=36000forwardable=truekrb4_convert=false}/etc/samba/smb.confworkgroup=RAINBIRD//域名passwordserver=192.168.1.241//域服务器realm=RAINBIRD.NETsecurity=ads//必须启用idmapuid=16777216-33554431idmapgid=16777216-33554431templateshell=/bin/bashwinbindusedefaultdomain=false(改成true)winbindofflinelogon=false(改成true)templatehomedir=/home/%Uwinbindseparator=/winbindenumusers=Yeswinbindenumgroups=Yes红色部分就是工具自动修改的了,但是smb.conf修改的不彻底,还不能满足我们的要求,怎么办呢?手动把蓝色部分加上,并把那两个false改成ture,然后设置samba的开机自动启动chkconfigsmbon,servicesmbon启动服务,然后就是手工把linux加入到windows了[root@filesrv~]#netadsjoin-Uadministrator@RAINBIRD.NETadministrator@RAINBIRD.NET'spassword:Theworkgroupin/etc/samba/smb.confdoesnotmatchtheshortdomainnameobtainedfromtheserver.Usingthename[RAINBIRD]fromtheserver.Youshouldsetworkgroup=RAINBIRDin/etc/samba/smb.conf.Usingshortdomainname--RAINBIRDJoined'FILESRV'torealm'RAINBIRD.NET'提示“Joined”哟,不是这个提示就是有问题,再仔细检查。OK,重启linux,这时候用一个域用户登陆linux如果提示用户或密码验证失败,说明你重启之前的东西没配置对。仔细检查一下哪里不对呢?如果提示如下,那么恭喜你,可以继续下一个话题了。3.自动创建用户目录.用到的文件pam_mkhomedir.so在/etc/pam.d/sysconf-auth文件中的sesson部分添加一行sessionrequiredpam_mkhomedir.sosilentskel=/etc/skelumask=0077silent不打印创建目录信息skel告诉pam_mkhomedir.so拷贝/etc/skel里的文件到新创建的目录里.umask是创建的目录的权限创建哪个目录是在smb.conf里的templatehomedir定义的如图:保存退出,重启一下X-window。再次用域用户登陆,是不是成功看到了久违的linux桌面呢?Ok,到此为止,linux加入windows的故事就讲完了。而samba服务器通过ad域认证并实现每个用户500M的共享空间,且当用户登陆windows域的时候自动挂载已经成型,近期放出,敬请期待。本文实现了samba服务被访问的时候通过windows域服务器进行用户名和密码验证;认证通过的用户可以自动分配500M的共享空间;在用户通过windows域登陆系统的时候可以自动把这块空间映射成一块硬盘。环境说明:文件服务器用的Centos5.3,域控用的Win2k3sp2,Domain是rainbird.net。Centos5.3:Name:FilesrvIP:192.168.1.245Dns:192.168.1.241Samba:3.0.33-3.7.el5Win2k3:Name:ad1Ip:192.168.1.241Dns:192.168.1.241Ok,let’smove!因为是服务器配置,所以本文的操作都是在字符界面下直接编辑文件。当然为了提高工作效率其中一部分配置是可以在图形界面下配的。前提是你必须是redhat/centos系统。如果是的话,可以参考我上一篇文章linux加入windows域之完美方案来做1.samba服务器软件需求krb5-workstation-1.2.7-19pam_krb5-1.70-1krb5-devel-1.2.7-19krb5-libs-1.2.7-19samba-3.0.5-2[root@filesrvCentOS]#rpm-qa|grepkrb5krb5-auth-dialog-0.7-1krb5-libs-1.6.1-25.el5krb5-devel-1.6.1-25.el5pam_krb5-2.2.14-1krb5-workstation-1.6.1-25.el5[root@filesrvCentOS]#rpm-qa|grepsambasamba-swat-3.0.28-0.el5.8samba-common-3.0.28-0.el5.8samba-client-3.0.28-0.el5.8samba-3.0.28-0.el5.8如果centos在安装的时候没有取消默认选中的”Base”,则krb5的包是默认全部安装如果没有选择安装samba可以这样安装[root@filesrvCentOS]#rpm-ivhxinetd-2.3.14-10.el5.i386.rpm[root@filesrvCentOS]#rpm-ivh--aidsamba*.rpm2.配置kerberos(关键)下面配置参数让Kerberos进程知道处理活动目录服务器,对/etc/krb5.conf做适当的修改,修改时需要注意的是Kerberos是大小写敏感的。这是我的krb5.conf配置文件:[logging]default=FILE:/var/log/krb5libs.logkdc=FILE:/var/log/krb5kdc.logadmin_server=FILE:/var/log/kadmind.log[libdefaults]ticket_lifetime=24000default_realm=RAINBIRD.NET//默认域名dns_lookup_realm=falsedns_lookup_kdc=false[realms]RAINBIRD.NET={kdc=192.168.1.241:88//域服务器ip#admin_server=kerberos.example.com:749default_domain=RAINBIRD.NET}[domain_realm].rainbird.net=RAINBIRD.NETrainbird.net=RAINBIRD.NET[kdc]profile=/var/kerberos/krb5