[整理篇]linux加入windows域之完美方案

  • Post author:
  • Post category:linux






笔者这几天在研究


samba


服务通过


ad


域进行用户验证。在查资料的过程中发现。关于


linux


加入


windows


域,网上资料不少,但是按着网上的说法做大多不成功,甚至很多人估计都不知道自己在说什么,最后一个


net ads join


就认为已经成功加入到域了,可是然后呢?作为域内的一个成员


,


普通的机器要可以提供域内的用户登陆;作为


samba


服务要把共享加入到目录中,这样才起到加入域的作用嘛。笔者经过反复实验,终于把


linux


加入到


windows


域一些细节记录下来,不敢独享,特拿出。





笔者用的


linux





centos5.3





ad


域为


win2k3 sp2


。域为


:Rainbird.net



Win2k3:



Name:ad1



Ip:192.168.1.241



Dns:192.168.1.241



Centos5.3:



Name:Filesrv



Ip:192.168.1.246



Dns:192.168.1.241



Ok,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-1



krb5-libs-1.6.1-25.el5



krb5-devel-1.6.1-25.el5



pam_krb5-2.2.14-1



krb5-workstation-1.6.1-25.el5



[root@filesrv CentOS]# rpm -qa|grep samba



samba-swat-3.0.28-0.el5.8



samba-common-3.0.28-0.el5.8



samba-client-3.0.28-0.el5.8



samba-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*.rpm



2.


配置


kerberos





samba



因为笔者用的系统为


centos


所以为保证一次成功的准确率,这里就使用字符界面下的图形工具来配置了。



运行


setup


工具







认证配置







选择:



“use winbind”



“use kerberos”



“use winbind authertication”







删除


admin server


其余的改成真实情况



Realm


为域名


,KDC


为域服务器的


ip







配置


winbind



Domain


为你的域的,左面第一个


”.”


前面的东东







选择


”join domain”,


提示是否先保存配置信息,肯定是


yes


了。







嘿嘿,看到这个画面是不是想到了


xp


机器加入到域的情景?没错就是那个!输入


ad


域的管理员密码吧


J







不出意外的话,你就到达了最后一个界面,肯定


ok,


然后退出了。







一般来说,只要两台机器的时间上下不差五分钟,且项都配置正确的话,你就会看到下面这个图片。看到这个图片说明你的


linux


成功加入到


ad


域啦


!







OK,


用图形的好处就是方便快捷,但是这样只适合


rh


系统。别的


linux


系统咋办呢?别急。这个工具


其实就是编辑以下三个配置文件:



/etc/nsswitch.conf



passwd:     files

winbind(



就是先读


files


然后再通过


winbind


认证


)



shadow:     files

winbind




group:      files

winbind




/etc/krb5.conf



[logging]



default = FILE:/var/log/krb5libs.log



kdc = FILE:/var/log/krb5kdc.log



admin_server = FILE:/var/log/kadmind.log






[libdefaults]



default_realm = RAINBIRD.NET(


默认的域名


)



dns_lookup_realm = false



dns_lookup_kdc = false



ticket_lifetime = 24h



forwardable = yes






[realms]



EXAMPLE.COM = {




kdc = kerberos.example.com:88



admin_server = kerberos.example.com:749



default_domain = example.com



}






RAINBIRD.NET = {




kdc = 192.168.1.241:88(


域服务器


)



kdc = 192.168.1.241



}






[domain_realm]



.example.com = EXAMPLE.COM



example.com = EXAMPLE.COM






rainbird.net = RAINBIRD.NET



.rainbird.net = RAINBIRD.NET



[appdefaults]



pam = {




debug = false



ticket_lifetime = 36000



renew_lifetime = 36000



forwardable = true



krb4_convert = false



}



/etc/samba/smb.conf



workgroup = RAINBIRD//


域名



password server = 192.168.1.241//


域服务器



realm = RAINBIRD.NET



security = ads//


必须启用



idmap uid = 16777216-33554431



idmap gid = 16777216-33554431



template shell = /bin/bash



winbind use default domain = false


(


改成


true)



winbind offline logon = false


(


改成


true)



template homedir = /home/%U



winbind separator = /



winbind enum users = Yes



winbind enum groups = Yes



红色部分就是工具自动修改的了,但是


smb.conf


修改的不彻底,还不能满足我们的要求,怎么办呢?手动把蓝色部分加上,并把那两个


false


改成


ture,


然后设置


samba


的开机自动启动


chkconfig smb on,service smb on启动服务,然后就是手工把linux加入到windows了







[root@filesrv ~]# net ads join -U administrator@RAINBIRD.NET







administrator@RAINBIRD.NET’s password:







The workgroup in /etc/samba/smb.conf does not match the short







domain 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 — RAINBIRD







Joined ‘FILESRV’ to realm ‘RAINBIRD.NET’


提示“Joined”哟,不是这个提示就是有问题,再仔细检查。



OK,


重启


linux


,这时候用一个域用户登陆


linux


如果提示用户或密码验证失败,说明你重启之前的东西没配置对。仔细检查一下哪里不对呢?







如果提示如下,那么恭喜你,可以继续下一个话题了。







3.


自动创建用户目录


.



用到的文件


pam_mkhomedir.so






/etc/pam.d/sysconf-auth


文件中的


sesson


部分添加一行



session     required      pam_mkhomedir.so silent skel=/etc/skel umask=0077



silent


不打印创建目录信息



skel


告诉


pam_mkhomedir.so


拷贝


/etc/skel


里的文件到新创建的目录里


.



umask


是创建的目录的权限



创建哪个目录是在


smb.conf


里的


template homedir


定义的



如图


:







保存退出


,


重启一下


X-window


。再次用域用户登陆,是不是成功看到了久违的


linux


桌面呢


?







Ok,


到此为止


,linux


加入


windows


的故事就讲完了。而


samba


服务器通过


ad


域认证并实现每个用户


500M


的共享空间,且当用户登陆


windows


域的时候自动挂载已经成型,近期放出,敬请期待。

Rainbird2大侠出品了一篇

“Linux加入windows域之完美方案”

,虽然网上流传了很多加入liunx到windows的文章,比如, “梦想开始的地方”的“使用Samba将linux主机加入AD域”,该帖子即详细介绍了加入的方法和具体步骤,见原文:

http://www.cnblogs.com/lizl/articles/852846.html#891920

, 但基于CentOS的图形化界面,Raidbird2的方法相对简单,容易,但其实在安装CentOS5.3的时候,要求创建新账号的右下,已经存在一个“使用网络账号登录”的按钮,点击它即可进行纯GUI
界面的操作,比Raidbird2文中所描述的更为漂亮。但毋庸置疑,Raidbird2的该文依然可以用帮助大多数想实现这种方法的朋友。
不过,纵观所有的文章,仅仅都是提到了如何加入linux主机到windows域,却没有提及任何相关如何对域账号,或使用域账号对linux主机进行管理的文章。 在下这里抛砖引玉,简单提一下需求和解决办法。
首先,我们的构想环境是30台linux主机,均已安装要求加入到 windows域。由于地理位置的分布和权限分派的要求,所有计算机管理员均为admin,但非root,即他们均可以使用sudo为宜。30台 linux主机如果都使用本地计算机账号,那么对于密码的维护将是一个噩梦的开始,所以,在这里我们使用AD域账号来进行管理和验证。
  1. 问题:多台linux主机管理员账号混乱,密码重设繁琐 (当然高手可以用shell来实现,这里暂且不提)
  2. 要求:使用域账号,作为本地管理员可以使用sudo操作
  3. 方法:
    1. 创建一本地组(你也可以使用已存在的组)
    2. group add groupname
    3. 修改sudo列表
    4. visudo
    5. 在root ALL=(ALL) ALL 下添加一行
    6. %groupname ALL=(ALL) ALL
    7. 保存退出
    8. 修改group文件
    9. vim /etc/group
    10. groupname:x:501:DOMAIN\username 或者域组名
    11. 这里DOMAIN必须大写
    12. 如果已经用该域账号登录了,注销即可。
该方法成功运行在CentOS5.3系统。
由于在下水平问题,估计文章有所疏漏,还请大侠们补正,谢谢。

本文出自 “

狼牙

” 博客,请务必保留此出处

http://wolfteeth.blog.51cto.com/923253/199692