搜索泥称 发表于 2018-6-12 09:25:39

本文将实现Windows+Linux的异构环境

本文将实现Windows+Linux的异构环境  Windows的AD在企业中的广泛应用,和Linux的稳定性,我们各取所长,构建一个既方便又安全、稳定的环境。
  配置方法一:
  Linux在启动级别3, 所有的操作都是在命令行下。
  Windows正常环境,升级为AD,同时集成了DNS,提升林功能级别为2003纯模式,林级别为20003 纯模式。
  1.在Linux系统中安装相应的软件包
  samba-3.0.23c-2
  samba-common-3.0.23c-2
  samba-client-3.0.23c-2   //samba的相关包
  krb5-libs-1.5-17
  krb5-workstation-1.5-17
  krb5-devel-1.5-17
  pam_krb5-2.2.11-1
  2.禁用selinux
  vi /etc/selinux/config
  修改SELINUX=enforcing (强制)
  改成SELINUX=disable   (禁用)
  修改iptables
  清空iptables规则命令如下:
  iptables -F
  3. 配置dns
  vi /etc/resolve.conf
  nameserver192.168.1.2   //windows DNS服务器的ip地址
  4. 修改/etc/krb5.conf文件,该文件是kerberos的配置文件。(Windows的登录相关)
     
default = FILE:/var/log/krb5libs.log   
kdc = FILE:/var/log/krb5kdc.log   
admin_server = FILE:/var/log/kadmind.log
     
default_realm = A.COM         //改成你的域名   
dns_lookup_realm = false   
dns_lookup_kdc = false
     
A.COM = {                     //改成你的域名   
kdc = 192.168.1.2:88            //改成你DC的FQDN或者是IP,两者没什么区别   
admin_server = 192.168.1.2:749 //这里建议用ip   
default_domain = a.com       //改成你的域名,注意和上面的不同.(大小写)   
}
     
.example.com = A.COM   
example.com = A.COM            //接着改
     
profile = /var/kerberos/krb5kdc/kdc.conf
     
pam = {   
   debug = false   
   ticket_lifetime = 36000   
   renew_lifetime = 36000   
   forwardable = true   
   krb4_convert = false   
}
  测试:
  在这里要注意的小问题就是Linux本地的时间要和DC的时间差问题,我们都知道,在DC上的策略中,时间差允许的范围是5分钟,所以,在运行上述的命令前,最好先同步下Linux和DC的时间:
  ntpdate -b 192.168.1.2//同步为AD的时间
  使用命令:kinit administrator@A.COM(注意大写的部分)
  遇到的一些问题:
  1)
  # kinit test111@a.com
  kinit(v5): Cannot find KDC for requested realm while getting initial credentials
  原因:客户端主DNS未指向域控制器
  解决:
  编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。
  2)
  # kinit test111@a.com
  Password for test111@a.com:
  kinit(v5): Clock skew too great while getting initial credentials
  原因:
  客户端与认证服务器的时间差距太大,将客户端与认证服务器的时间同步即可
  解决:
  安装ntp软件,执行ntpdate–b 192.168.6.37(域控制器的IP),时间被同步
  # ntpdate-b 192.168.6.37
  17 Sep 12:32:05 ntpdate: step time server 192.168.6.37 offset 2537.194742 sec
  3)
  # kinit test111@a.com
  Password for test111@a.com:
  kinit(v5): KDC reply did not match expectations while getting initial credentials
  解决:使用大写的域名
  # kinit administrator@A.COM
  Password for administrator@A.COM:
  #
  4)net rpc join -W @A.COM -S 192.168.1.50 -U administrator   
    出现 错误:NT_STATUS_INVALID_COMPUTER_NAME
  解决办法:把ip地址改为dc的FQDN即可
  5. 配置samba
  vi /etc/samba/smb.conf
     
workgroup = A                  //需要加入的域的netbios名,注意是域的netbios名,要大写   
netbios name = Linux                   //本机器的netbios名,有的版本没有这一项会没有这个,   
                                          要手动添加   
   server string = Samba Server //对该服务器的描述   
   printcap name = /etc/printcap   
   load printers = yes   
   cups options = raw
  log file = /var/log/samba/%m.log   
   max log size = 50
  security = ads                     //ads验证方式必须有realm项
  realm = A.COM                //增加这一行,注意这里是域名.   
password server = 192.168.1.2         //这里是DC的FQDN,也可以写ip,但是有时候会出   
                                                问题,建议写IP
  encrypt passwords = yes               //加密在网络上传输的用户密码   
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  dns proxy = no
  winbind separator = /                  //用户的域名和用户名之间的间隔,用什么随你心情   
   idmap uid = 1000000-2000000         
   idmap gid = 1000000-2000000            //域用户映射成Linux本地用户时所有的uid和gid范围.   
   template homedir = /home/%D/%U            //与home文件夹中定义的作用相同.两者定义一个就行   
   template shell = /bin/bash             //用户登陆后所使用的shell   
   winbind use default domain = yes       //用户登陆使用默认的域   
   winbind enum users = yes   
   winbind enum groups = yes            //有人说是自动创建用 getent passwd看到的   
                                          用户和组的信息.具体有什么用,我也说不清楚
  winbind cache type = x    (winbind同步账户时间,可以没有)
  
  comment = Home Directories   
   browseable = no   
   writable = yes   
create mode = 0777   
   directory mode = 0777   //创建的文件和目录的默认权限   
   path = /home/%D/%U   //用户主目录的相关设置
     
   comment = All Printers   
   path = /var/spool/samba   
   browseable = no   
   guest ok = no   
   writable = no   
   printable = yes
  测试:# testparm    //测试samba配置文件的命令
  Load smb config files from /etc/samba/smb.conf
  Processing section ""
  Processing section ""
  Loaded services file OK.      //语法测试通过
  Server role: ROLE_DOMAIN_MEMBER   //验证级别为域成员
  Press enter to see a dump of your service definitions   //回车将显示起作用的配置
  
  workgroup = A
  netbios name = LINUX
  realm = A.COM
  server string = Samba Server
  security = ADS
  password server = 192.168.1.2
  encrypt passwords = yes
  log file = /var/log/samba/%m.log
  max log size = 50
  dns proxy = no
  idmap uid = 16777216-33554431
  idmap gid = 16777216-33554431
  template shell = /sbin/nologin
  winbind separator = /
  winbind enum users = yes
  winbind enum groups = yes
  winbind use default domain = yes
  cups options = raw
  
  comment = Home Directories
  path = /home/%D/%U
  read only = no
  create mask = 0777
  directory mask = 0777
  browseable = no
  
  comment = All Printers
  path = /usr/spool/samba
  printable = yes
  browseable = no
  6. 启动相关的服务:
  servicewinbindrestar
  service   smbrestart
  chkconfig --levels 35 winbind on
  chkconfig --levels 35 smb on
  7. 将Linux加入Windows域
  net ads join -WA.COM-Sdc1(AD的主机名)   -U administrator
  有时候用net ads join 会不好使,这时候就试试net rpc join 这种方式.
  有时候会出现这样的错误信息,解决办法如下:
  先停掉winbind和smb服务:
  service smb stop
  service winbind stop
  然后删除下面两个目录里的.tdb文件:         /etc/samba   和   /var/cache/samba
  据我理解,这些应该是在加入域过程中,产生的一些缓存
  文件,但是有时候这些缓存会造成一些错误信息,就象我们刚才看到的那样,删除后,重启服务,让他重新
  生成就行了.
  重新启动相关的服务,在执行加入域操作。
  测试:
  wbinfo-t//测试域的信任关系
  wbinfo-u//查看域用户
  wbinfo-g//查看域用户组
  8. 修改Linux的密码查找顺序
  vi /etc/nsswitch.conf
  修改相关记录
  passwd:    winbind files   
   shadow:    files winbind   
   group:   winbind files
  修改 /etc/pam.d/system-auth (应该是登录Linux系统本机的验证方式,如果作文文件服务器,不让普通用户登录,不设置应该也可以)
  vi/etc/pam.d/system-auth
  auth      sufficient    pam_winbind.so          //增加这一行
  account   sufficient    pam_winbind.so       //增加这一行,注意这两行的位置
  9. 建立相关用户文件
  修改完毕后,根据上面smb.conf文件的配置,我们就可以实现用户的登陆了,不过还有一点要说明,就是在用户登陆前,必须手动创建他们的登陆主目录,并且赋予他们完全控制的权限.
  比如,我想让administrator用户登陆Linux,实现步骤如下:
  cd /home
  mkdir A
  cd A    mkdir administrator
  chown administrator: administratorsadministrator      //在home目录下创建YANCHUN域目录,并在该目
  录下创建要登陆用户administrator的目录,更改目录权限.
  这样在终端上就可以实现域用户账户的登陆了.
  做到这里,恭喜你Linux和Windows的整合已经完成。
  小提示:Linux做文件服务器,没必要让域用户在Linux本地登录。所有字段可以没有,家目录也可以没有。
  此文档由秘飞虎 (qq:815889476 mail:mifeihu@163.com) 花了很长时间,查了好多资料才完成的,如果转载,请保留作者,及联系方式。
页: [1]
查看完整版本: 本文将实现Windows+Linux的异构环境