本文将实现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

nameserver  192.168.1.2   //windows DNS服务器的ip地址

4. 修改/etc/krb5.conf文件,该文件是kerberos的配置文件。(Windows的登录相关)

[logging] 
 default = FILE:/var/log/krb5libs.log 
 kdc = FILE:/var/log/krb5kdc.log 
 admin_server = FILE:/var/log/kadmind.log

[libdefaults] 
 default_realm = A.COM         //改成你的域名 
 dns_lookup_realm = false 
 dns_lookup_kdc = false

[realms] 
A.COM = {                     //改成你的域名 
  kdc = 192.168.1.2:88            //改成你DC的FQDN或者是IP,两者没什么区别 
  admin_server = 192.168.1.2:749 //这里建议用ip 
  default_domain = a.com       //改成你的域名,注意和上面的不同.(大小写) 
 }

[domain_realm] 
.example.com = A.COM 
example.com = A.COM            //接着改

[kdc] 
 profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults] 
 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)

[root@Gh0st CentOS]# kinit test111@a.com

kinit(v5): Cannot find KDC for requested realm while getting initial credentials

原因:客户端主DNS未指向域控制器

解决:

编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。

2)

[root@Gh0st CentOS]# 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),时间被同步

[root@Gh0st CentOS]# ntpdate  -b 192.168.6.37

17 Sep 12:32:05 ntpdate[10302]: step time server 192.168.6.37 offset 2537.194742 sec

3)

[root@Gh0st CentOS]# kinit test111@a.com

Password for test111@a.com:

kinit(v5): KDC reply did not match expectations while getting initial credentials

解决:使用大写的域名

[root@Gh0st CentOS]# kinit administrator@A.COM

Password for administrator@A.COM:

[root@Gh0st CentOS]#

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

[global] 
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[group]看到的 
                                            用户和组的信息.具体有什么用,我也说不清楚         

winbind cache type = x    (winbind同步账户时间,可以没有)

[homes]

   comment = Home Directories 
   browseable = no 
   writable = yes 
create mode = 0777 
   directory mode = 0777   //创建的文件和目录的默认权限 
   path = /home/%D/%U     //用户主目录的相关设置

[printers] 
   comment = All Printers 
   path = /var/spool/samba 
   browseable = no 
   guest ok = no 
   writable = no 
   printable = yes

测试:[root@localhost ~]# testparm    //测试samba配置文件的命令

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[printers]"

Loaded services file OK.      //语法测试通过

Server role: ROLE_DOMAIN_MEMBER     //验证级别为  域成员

Press enter to see a dump of your service definitions   //回车将显示起作用的配置

[global]

        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

[homes]

        comment = Home Directories

        path = /home/%D/%U

        read only = no

        create mask = 0777

        directory mask = 0777

        browseable = no

[printers]

        comment = All Printers

        path = /usr/spool/samba

        printable = yes

        browseable = no

6. 启动相关的服务:

   service  winbind  restar

   service   smb  restart

   chkconfig --levels 35 winbind on

   chkconfig --levels 35 smb on

7. 将Linux加入Windows域

net ads join -W  A.COM  -S  dc1(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: administrators  administrator      //在home目录下创建YANCHUN域目录,并在该目

录下创建要登陆用户administrator的目录,更改目录权限.

    这样在终端上就可以实现域用户账户的登陆了.

 

做到这里,恭喜你Linux和Windows的整合已经完成。

小提示:Linux做文件服务器,没必要让域用户在Linux本地登录。所有[homes]字段可以没有,家目录也可以没有。

此文档由  秘飞虎 (qq:815889476 mail:mifeihu@163.com) 花了很长时间,查了好多资料才完成的,如果转载,请保留作者,及联系方式。





















本文转自秘飞虎51CTO博客,原文链接: http://blog.51cto.com/mifeihu/400226,如需转载请自行联系原作者



相关文章
|
20天前
|
JSON Kubernetes Linux
Linux环境签发CA证书和K8s需要的证书
Linux环境签发CA证书和K8s需要的证书
23 0
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
7天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
20 6
|
3天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
25 0
|
13天前
|
安全 Ubuntu Linux
Linux远程访问Windows实现步骤
在Windows上启用远程桌面连接并获取IP地址后,Linux用户需安装SSH客户端( Debian系:`sudo apt-get update; sudo apt-get install openssh-client`,RPM系:`sudo yum install openssh-clients`)。然后使用命令`ssh 用户名@Windows_IP地址`连接,其中`用户名`和`Windows_IP地址`按实际情况填写。
14 4
|
22天前
|
Java Linux
linux安装jdk环境
linux安装jdk环境
27 0
|
28天前
|
Linux 数据安全/隐私保护 Docker
linux和windows中安装emqx消息服务器
linux和windows中安装emqx消息服务器
27 0
|
30天前
|
NoSQL 编译器 Linux
linux交叉编译环境的配置
linux交叉编译环境的配置
20 0
|
10天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
10天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇