笔者这几天在研究samba服务通过ad域进行用户验证。在查资料的过程中发现。关于linux加入windows域,网上资料不少,但是按着网上的说法做大多不成功,甚至很多人估计都不知道自己在说什么,最后一个net ads join就认为已经成功加入到域了,可是然后呢?作为域内的一个成员,普通的机器要可以提供域内的用户登陆;作为samba服务要把共享加入到目录中,这样才起到加入域的作用嘛。笔者经过反复实验,终于把linux加入到windows域一些细节记录下来,不敢独享,特拿出。笔者用的linuxcentos5.3ad域为win2k3 sp2。域为:Rainbird.netWin2k3:Name:ad1Ip:192.168.1.241Dns:192.168.1.241Centos5.3:Name:FilesrvIp:192.168.1.246Dns:192.168.1.241Ok,let’s go!1.samba服务器软件需求
krb5-workstation-1.2.7-19
pam_krb5-1.70-1
krb5-devel-1.2.7-19
krb5-libs-1.2.7-19
samba-3.0.5-2
[root@filesrv CentOS]# rpm -qa|grep krb5
krb5-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@filesrv CentOS]# rpm -qa|grep sambasamba-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@filesrv CentOS]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm[root@filesrv CentOS]# rpm -ivh --aid samba*.rpm2.配置kerberossamba因为笔者用的系统为centos所以为保证一次成功的准确率,这里就使用字符界面下的图形工具来配置了。运行setup工具200909011251737043546.jpg认证配置200909011251737059531.jpg选择:“use winbind”“use kerberos”“use winbind authertication”200909011251737075796.jpg删除admin server 其余的改成真实情况Realm为域名,KDC为域服务器的ip200909011251737092796.jpg配置winbindDomain为你的域的,左面第一个”.”前面的东东200909011251737111687.jpg选择”join domain”,提示是否先保存配置信息,肯定是yes了。200909011251737140218.jpg嘿嘿,看到这个画面是不是想到了xp机器加入到域的情景?没错就是那个!输入ad域的管理员密码吧J200909011251737157468.jpg不出意外的话,你就到达了最后一个界面,肯定ok,然后退出了。200909011251737173406.jpg一般来说,只要两台机器的时间上下不差五分钟,且项都配置正确的话,你就会看到下面这个图片。看到这个图片说明你的linux成功加入到ad域啦!200909011251737191500.jpgOK,用图形的好处就是方便快捷,但是这样只适合rh系统。别的linux系统咋办呢?别急。这个工具其实就是编辑以下三个配置文件:/etc/nsswitch.confpasswd:files winbind(就是先读files 然后再通过winbind认证)shadow:files winbindgroup:files winbind/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//域名password server = 192.168.1.241//域服务器realm = RAINBIRD.NETsecurity = ads//必须启用idmap uid = 16777216-33554431idmap gid = 16777216-33554431template shell = /bin/bashwinbind use default domain = false (改成true)winbind offline logon = false(改成true)template homedir = /home/%Uwinbind separator = /winbind enum users = Yeswinbind enum groups = Yes红色部分就是工具自动修改的了,但是smb.conf修改的不彻底,还不能满足我们的要求,怎么办呢?手动把蓝色部分加上,并把那两个false改成ture,然后设置samba的开机自动启动chkconfig smb on,service smb on启动服务,然后就是手工把linux加入到windows了[root@filesrv ~]# net ads join -U administrator@RAINBIRD.NETadministrator@RAINBIRD.NET's password:The workgroup in /etc/samba/smb.conf does not match the shortdomain name obtained from the server.Using the name [RAINBIRD] from the server.You should set "workgroup = RAINBIRD" in /etc/samba/smb.conf.Using short domain name -- RAINBIRDJoined 'FILESRV' to realm 'RAINBIRD.NET'提示“Joined”哟,不是这个提示就是有问题,再仔细检查。OK,重启linux,这时候用一个域用户登陆linux如果提示用户或密码验证失败,说明你重启之前的东西没配置对。仔细检查一下哪里不对呢?200909011251737240265.jpg如果提示如下,那么恭喜你,可以继续下一个话题了。200909011251737258218.jpg3.自动创建用户目录.用到的文件pam_mkhomedir.so/etc/pam.d/sysconf-auth文件中的sesson部分添加一行sessionrequiredpam_mkhomedir.so silent skel=/etc/skel umask=0077silent不打印创建目录信息skel 告诉pam_mkhomedir.so拷贝/etc/skel里的文件到新创建的目录里.umask 是创建的目录的权限创建哪个目录是在smb.conf里的template homedir定义的如图:200909011251737274625.jpg保存退出,重启一下X-window。再次用域用户登陆,是不是成功看到了久违的linux桌面呢?200909011251737292265.jpgOk,到此为止,linux加入windows的故事就讲完了。而samba服务器通过ad域认证并实现每个用户500M的共享空间,且当用户登陆windows域的时候自动挂载已经成型,近期放出,敬请期待。