关于Linux如何加入windows创建的域_linux账户验证使用windows域 活动目录-程序员宅基地

技术标签: Linux知识点  域控  AD  linux  SMB  windows  

一、场景描述

在某系统微服务改造中,在某windows域环境下,创建了3台Linux 虚拟机来进行功能性验证,为更好地彼此间信任和融合域环境,需要将Linux虚拟机加入到现有的Windows域内,那如何实施呢,本次将对此进行讨论阐述。

回顾AD 域验证过程:自 Windows 2000 以来,AD 一直是 Windows 的身份验证和目录服务,AD 基于 LDAP 实现其功能,其使用 DNS 进行主机名的解析,使用 Kerberos V5 进行用户身份验证,使用 LDAP V3 进行统一的帐户管理。

二、常用Linxu加入域方式

1)Kerberos plus LDAP:这是一个较低级别的做法,我们可以将Linux配置为使用Active Directory自身的底层协议LDAP(即轻量目录访问协议)。

2)Samba:借助Samba服务来实现,这也是是将Linux机器加入Windows域的标准实践。

3)Likewise:实际它是samba的重新封装实现;与完整的Samba安装相比,配置起来更容易(因具备GUI,可在一小时内完成,包括阅读文档的时间),但相应地控制功能较少。该软件是开源免费的;Enterprise版本添加了诸如通过组策略管理Linux机器之类的功能。
4)Microsoft Windows Services for Unix集成了通过NIS(网络信息服务)向Linux/Unix提供用户名以及将密码并同步到Linux/Unix计算机的功能选项。如果我们想在Windows上做域控全部管理操作的话,或者当前现有的Linux/UNIX基础设施想连接到Windows,可以这样使用;不过,对于大多数环境,PowerBroker(PowerBroker Identity Services :PBIS)解决方案会更好。

三、处理过程

1)Samba方式实现:

samba 是能够在任何支持 SMB 协议的主机之间共享文件的一种实现,跨平台的;SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB 协议是 C/S 型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
tcp 端口相对应的服务是 smbd 服务(对应 netbios),其作用是提供对服务器中文件、打印资源的共享访问,监听端口TCP:139 | 445,UDP端口相对应的服务是 nmbd 服务(对应 cifs 协议),其作用是提供基于 NetBIOS 主机名称的解析UDP137 | 138。winbindd + ldap进程对应 Windows AD 活动目录;

yum -y install samba samba-client samba-common samba-winbind samba-winbind-clients krb5-workstation ntpdate

#配置自启动
chkconfig smb on
chkconfig winbind on
service smb start
service winbind start

#修改 /etc/hosts 文件,添加主机对应A记录,静态解析

#配置DNS 地址并与 AD 服务器同步时间,或者安装ntpd时间服务器配置同步
echo "nameserver 192.168.2.122" >> /etc/resolv.conf
ntpdate ad.k8s.com

#设置 Kerberos 票据
klist                #查看当前是否还存在票据,如果不存在,显示如下,如果存在,执行kdestroy清除票据           
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)

#生成新的票据,注意域名大写。
kinit [email protected]
klist   #验证

#配置 samba 与 Kerberos,并加入 AD 域,注意下述命令中的大小写,此步骤也可以使用 authconfig-tui 完成
authconfig --enablewinbind  --enablewins --enablewinbindauth --smbsecurity ads --smbworkgroup=K8S --smbrealm K8S.COM --smbservers=ad.k8s.com --enablekrb5 --krb5realm=K8S.COM --krb5kdc=ad.contoso.com --krb5adminserver=ad.k8s.com --enablekrb5kdcdns --enablekrb5realmdns --enablewinbindoffline --winbindtemplateshell=/bin/bash --winbindjoin=administrator --update --enablelocauthorize --enablemkhomedir --enablewinbindusedefaultdomain

visudo  #如下
%K8S\\ admins ALL=(ALL)  NOPASSWD: ALL

#验证
net ads info
wbinfo -u

注意:如果启用 selinux 的话,需要安装 oddjobmkhomedir 并启动其服务,这样才能确保系统对创建的家目录设置合适的 SELinux 安全上下文

更多参看加入AD 域

2)PBIS实现:

chmod a+x pbis-open-8.2.1.2979.linux.x86_64.rpm.sh  #将下载好的脚本上传到Linux上,进行在线安装
./pbis-open-8.2.1.2979.linux.x86_64.rpm.sh

#加入域
/opt/pbis/bin/domainjoin-cli join k8s.com DC_admin_account  ##过程中会提示输入域控管理员的密码,加入成功后悔踢死success


/opt/pbis/bin/config LoginShellTemplate /bin/bash  #更改域账户默认的shell
/opt/pbis/bin/config UserDomainPrefix k8s.com  #设置用户域的前缀(即域名)
/opt/pbis/bin/config AssumeDefaultDomain true	   #设置默认登录域
/opt/pbis/bin/config Requiremembershipof "k8s.com\\linuxusers"  #设置可以登录这台Linux的用户。只要在AD特定组中的用户都可以登陆,这里用2个\来分隔域名和组名
/opt/pbis/bin/config --dump                    #查看配置确认
/opt/pbis/bin/update-dns					   #更新DNS,自动注册A记录

#配置sudo权限,哪些用户可以使用sudo,配置完成后,重新启动,用域账户登录验证
visudo   ##%表示这是一个组,如果组名中间有空格可以用^来代替,如果不行或用 \空格来转义;\\或者\^,
%k8s.com\\admins  ALL=(ALL) NOPASSWD:ALL
K8S\\admin  ALL=(ALL) NOPASSWD:ALL

安装完成后,效果如下:
在这里插入图片描述
3)NIS(网络信息服务)

可用来集中账号信息管理。类似LDAP一样的功能哦,一般可以作为LAN内的用户认证服务器。

NIS服务器提供的数据:

/etc/passwd 提供用户账号UID GID 用户主目录位置 shell等

/etc/group 提供GID以及组成员

/etc/hosts 本地的解析

/etc/services 服务端口

/etc/protocols 基础的协议数据包

/etc/rpc 每种RPC服务器所对应的程序号码

/var/yp/ypservers NIS所提供的数据库

NIS Server 一般用于比较小型的网域中。如果网域里面有几乎100 部以上的主机,这个时,只有一部NIS Server 可能无法提供快速的数据查寻与响应的状态!就需要 NIS Sever的 master 与 slave 的架构。示意如下:
在这里插入图片描述
NIF使用数据库文件系统来记录数据。在大的局域网中多使用Master/Slave架构!slave会将来自 master主机的 数据加以更新到自己的数据库当中,并且提供与master 相同的查寻功能!这个 NIS 的 master 与 slave 架构则完全相同。NIS Server 的 master 先将自己的账号、密码相关档案制作成为数据库档案(databasefile);NIS Server 的 master 将自己的数据库档案传送到 slave上面;NIS Server 的 slave 接收来自『信任的 NIS Server master主机』的数据后,更新自己的数据库,使自己的数据库与 master 主机的数据同步;网域当中的所有 NIS Client 查寻 NIS Server 时,会找寻『最先回应的那一部NIS 主机的数据库内容』。

所以,由上可以知道的是,NIS 的 master 与 slave 架构主要可分摊查寻 NIS时候的主机负荷,因此,除非网域真的很大,否则是没有必要架设 NIS Slave与 master 的架构!一般局域网只一个master 就可以。上例示图中,client在查询账号时,会首先在本地进行账号查询,进而在slave和master上查询所需要的用户登录数据。在实际应用中,应该将本地的普通用户主动拿掉。

yum install yp-tools;ypind;ypserv;rpcbind -y #NIS server端

#设置NIS服务的域名

vim /etc/sysconfig/network  #如下

NISDOMAIN=k8s.com                                    设置NIS域
YPSERV_ARGS="-p 1011"                                定义固定端口

#
vim /etc/ypserv.conf

dns: no                                            不使用dns(用/etc/hosts)
files: 30                                          默认会有30个数据库被读入内存
xfr_check_port: yes

#[主机名或网段]     [NIS域名]   [可用数据库名称]  [安全限制]

#{安全限制,none表示无,port表示仅能使用小于1024端口;deny表示拒绝}


*                          : *       : shadow.byname    : port
*                          : *       : passwd.adjunct.byname : port

vim  /etc/sysconfig/yppasswdd

YPPASSWDD_ARGS="--port 1012"                                定义端口

#
/etc/init.d/ypserv restart                  #(注意服务的开机自动启动啊chkconfig ypserv/yppasswdd on)

/etc/init.d/yppasswdd restart 
rpcinfo -p localhost                      #查看当前端口和服务(必要时设置防火墙)

#创建用户并且建立数据库

useradd -u 1001 user1
useradd -u 1001 user2
echo westos | passwd --stdin user1(2)
/var/lib64/yp/ypinit -m                 #将生成的用户密码转换成数据库文件
At this point, we have to construct a list of the hosts which will run NIS
servers.  instractor is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.
        next host to add:  instractor
        next host to add:  control+d继续
The current list of NIS servers looks like this:

instractor                              自动检测的NIS服务

Is this correct?  [y/n: y]  y
We need a few minutes to build the databases...
Building /var/yp/xxbandy/ypservers...

  gethostbyname(): Success

Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/xxbandy'

instractor has been set up as a NIS master server.
Now you can run ypinit -s instractor on all slave server

vim /etc/sysconfig/network

NISDOMAIN=xxbandy                                                

[root@instractor ~]# nisdomainname xxbandy

[root@instractor ~]# /etc/init.d/ypserv restart;/etc/init.d/yppasswdd restart

[root@instractor ~]# /usr/lib64/yp/ypinit -m

注意:上述四个命令有依赖性关系,因此不能打乱

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
详情参看局域网内的NIS服务器器搭建管理

4)OpenLDAP
参见完整版的OpenLDAP搭建全过程

yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap   #其中compat-openldap这个包与主从有很大的关系;安装完后,会自动创建了ldap用户
rpm -qa |grep openldap  #验证


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ximenjianxue/article/details/122436372

智能推荐

Matlab 读写*.xml文件_如何用matlab将图像写入xml格式-程序员宅基地

文章浏览阅读2.7k次。Matlab 读写*.xml文件1.摘要 因为经常使用将图像中的目标标注信息保存在*.xml文件中。在训练深度神经网络是常用这样的训练数据。有时候需要使用原有的数据来扩充数据,而最常用的工具也就是Matlab(这里示例使用的Matlab2016b)。在这篇博文中主要介绍:①Matlab读取*.xml文件信息;②将*.xml文件中的信息显示在对应的图像上,可以简单可视化数据;③将在图像中..._如何用matlab将图像写入xml格式

uniapp中nvue在页面渲染前给数据赋值_uniapp data中的数据可以之前互相赋值吗-程序员宅基地

文章浏览阅读1.8k次。应用场景是,在一个页面初始化的时候要给一个data内数据赋值,这个数据绑定到了页面v-for上,nvue中的所有生命周期都不能实现在渲染前给数据赋值,会报错,解决办法是定义一个常量去设置值,然后在data内把常量赋值给目标数据。..._uniapp data中的数据可以之前互相赋值吗

ROS环境下串口通信_ifr_interface::msg::serialgimbal toros(){ ifr_inte-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏67次。1. 环境:操作系统: Ubuntu 14.04ROS版本: ROS Indigo2. 步骤:2.1 下载安装ROS对应版本的工具包(此处为indigo版)输入以下命令安装:sudo apt-get-install ros-indigo-serial重启终端,输入以下命令可以检测到serial包的路径说明已经安装好:(路径为 opt/ros/in..._ifr_interface::msg::serialgimbal toros(){ ifr_interface::msg::serialgimbal m

小样本学习记录————文本中特征空间的数据增强MEDA: Meta-Learning with Data Augmentation for Few-Shot Text Classification_data augmentation for meta-learning-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏6次。MEDA: Meta-Learning with Data Augmentation for Few-Shot Text Classification出发点数据增强球合成器合成模块Synthesis module转换模块Transformation module损失函数球生成器部分损失函数元学习损失训练策略实验数据集结语出发点对于小样本学习文本分类问题中,限制其性能的主要原因之一是因为对于每一个类别有多种的表示方式。所以本文提出了一种数据增强方式来解决样本不足的问题。数据增强原文的数据增强:随机替_data augmentation for meta-learning

SSH简介及两种远程登录的方法_ssh @-程序员宅基地

文章浏览阅读10w+次,点赞588次,收藏3.7k次。目录SSH的安全机制SSH的安装启动服务器的SSH服务SSH两种级别的远程登录SSH的高级应用Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,..._ssh @

Java中的byte详解_java byte-程序员宅基地

文章浏览阅读4.6w次,点赞32次,收藏118次。Java中的byte详解介绍byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。byte取值范围分析一直在想为什么不是 -128 到 128呢?今天分析了一下这个问题。首先我们得明白一件事情,那就是运算规则(因为计算机中的数是以反码形式存储的,反码再求反码得到该数真值):正数的最高位都是 0 ,正数的值就是二进制表示的_java byte

随便推点

Java拆装箱及128陷阱-程序员宅基地

文章浏览阅读214次。而在Integer的valueOf()方当中,如果数值在-128-127之间,就都存储在一个数组当中,该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在内存当中的地址,所以在-128-127之间的数值用==进行比较是相等的。而不在这个区间的数,需要新开辟一个内存空间进行装箱,所以用==比较是不相等的。由于Java中存在自动拆装箱,故Integer包装类型和int基本类型是等价的,所以a == c 以及 c == d 也为True。c == d 一定为True。

【C语言】编译时常见报错#经验分享与解决方法_编译问题的解决思路-程序员宅基地

文章浏览阅读1.2k次,点赞13次,收藏8次。VS编译时常见报错#经验分享与解决方法#断点_编译问题的解决思路

Android-studio与Android常见的Error问题与坑总结_failed to find platform sdk with path: platforms;a-程序员宅基地

文章浏览阅读3.2w次,点赞8次,收藏37次。Android-studio的Error总结1 Error plugin 在某些情况下,比如你的android-studio没有关闭,然后你强制关机,当再次打开android-studio时,会出现这个问题Plugin &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;Google Analytics Uploader&amp_failed to find platform sdk with path: platforms;android-32

ad敷铜后还有部分飞线_告别飞线,南京广推共享充电桩实现居民“充电自由”...-程序员宅基地

文章浏览阅读275次。现代快报讯 近日,全国文明城市创建工作正在如火如荼地进行,“剪飞线、改车棚、添电桩”成为了老旧小区的工作重点。还有“飞线”怎么办?充电桩够不够?装了之后安不安全?8月11日,现代快报记者在南京市的这几个社区得到了回答。南京这些小区已安装上了共享充电桩11日,现代快报记者探访了玄武区下辖的几个小区。在玄武门街道公教一村小区,每隔几栋楼就有一个充电棚,几乎每个充电插口都有电动车在充电。玄武门街道公教一..._ad18 铺铜 地的飞线还在

react登录页面的判断token是否存在_react + ts 判断cookie里有没有token-程序员宅基地

文章浏览阅读1.6k次。11_react + ts 判断cookie里有没有token

uniapp开发微信小程序,从构建到上线-程序员宅基地

文章浏览阅读4.9w次,点赞131次,收藏1.2k次。本文主要介绍 uniapp 的基础使用,以及使用 uniapp 在企业开发的过程中的一个详细流程,比较适合第一次使用uniapp 开发微信小程序的伙伴,或者没有过实战经验的小伙伴参考;使用 Hbuildx 配合 Uniapp 框架结合 Uview 的UI框架为大家演示今天的Demo!......_uniapp开发微信小程序

推荐文章

热门文章

相关标签