首页 > 其他分享 >LDAP学习笔记之五:LDAP客户端实现系统帐号验证

LDAP学习笔记之五:LDAP客户端实现系统帐号验证

时间:2024-09-26 11:25:53浏览次数:11  
标签:com 之五 server1 dc etc ldap LDAP root 客户端

一、创建LDAP认证用户及权限

1.控制台修改密码的存储格式(因为从NIS迁移来的账号密码是cyrpt,ldap默认SSHA格式)

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_客户端

2.控制台创建一个用户,并给该用户指定ACI权限,用于linux客户端连接ldap server(默认使用匿名用户)

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_02

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_03

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_04

3.给client-root用户添加权限

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_05

 

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_06

 

设置ACI名称及选择需要绑定的用户

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_客户端_07

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_08

取消默认权限并按权限名称排序

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_客户端_09

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_10

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_11

点击ok保存即可,再点击OK退出

修改匿名用户的权限,确保是从新打开权限设置(退出再打开,否则报语法错误)

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_12

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_13

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_14

二、迁移NIS数据

1.配置NIS客户端

[root@ldap-server1 ~]# nisdomainname ldap-server1.example.com 
[root@ldap-server1 ~]# vim /etc/yp.conf 
domain ldap-server1.example.com server ldap-server1.example.com
[root@ldap-server1 ~]# systemctl restart rpcbind
[root@ldap-server1 ~]# systemctl restart ypbind
[root@ldap-server1 ~]# yptest  #确保可以成功,NIS服务可以参考

2.生成导入的ldif文件

[root@ldap-server1 ~]# ypcat group > /tmp/group-file   # /usr/share/dirsrv/schema/10rfc2307.ldif包含了系统想用的NIS map
[root@ldap-server1 ~]# ypcat passwd > /tmp/passwd-file
[root@ldap-server1 ~]# for i in `cut -d : -f 1,2 /tmp/passwd-file`;do echo ${i}:$[$(date +%s)/866400]:0:99999:7:::;done > /tmp/shadow-file #修改错shodow文件的格式
[root@ldap-server1 ~]# for i in `awk -F ':' '{print $2}' /tmp/passwd-file`;do sed -i 's/$6$.\{95\}/x/g' /tmp/passwd-file;done #即将密码内容替换为x,即passwod文件的格式
[root@ldap-server1 ~]# vim /etc/yp.conf #删除nis配置
[root@ldap-server1 ~]# systemctl stop ypbind
[root@ldap-server1 ~]# yum install -y migrationtools  #安装迁移脚本
[root@ldap-server1 ~]# cd /usr/share/migrationtools/
[root@ldap-server1 migrationtools]# vim migrate_common.ph  #修改迁移脚本

修改61行: Group为 Groups(openladp无需修改,RHDS 389-ds需要修改)

修改71、74行:设置LDAP DN及邮件域名

修改90行:1表示使用inetOrgPerson辅助类

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_客户端_15

[root@ldap-server1 migrationtools]# ./migrate_base.pl > /tmp/base.ldif
[root@ldap-server1 migrationtools]# vim /tmp/base.ldif  
#删除以下三个条目
dn: dc=server1,dc=example,dc=com
dn: ou=People,dc=server1,dc=example,dc=com
dn: ou=Groups,dc=server1,dc=example,dc=com
[root@ldap-server1 migrationtools]# vim migrate_passwd.pl 
188 open(SHADOW, "/tmp/shadow-file") || return; #将/etc/shadow修改为/tmp/shadow-file
[root@ldap-server1 migrationtools]# ./migrate_passwd.pl /tmp/passwd-file > /tmp/passwd.ldif
[root@ldap-server1 migrationtools]# ./migrate_group.pl /tmp/group-file > /tmp/group.ldif
[root@ldap-server1 migrationtools]# vim ~/.ldaprc #配置LDAP客户端
BINDDN cn:Directory Manager
[root@ldap-server1 migrationtools]# cat /etc/openldap/ldap.conf
BASE dc=server1,dc=example,dc=com
URI ldap://server1.example.com
[root@ldap-server1 migrationtools]#  ldapadd -x -W -f /tmp/base.ldif    #导入数据
[root@ldap-server1 migrationtools]# ldapadd -x -W -f /tmp/passwd.ldif -c
[root@ldap-server1 migrationtools]#  ldapadd -x -W -f /tmp/group.ldif -c
[root@ldap-server1 migrationtools]# scp /etc/openldap/certs/cacert.pem 192.168.1.134:/etc/openldap/certs/cacert.pem  #拷贝数据到客户端

验证导入结果  

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_客户端_16

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_17

三、配置客户端机器

[root@localhost ~]# vim /etc/hosts #确保和服务端网络连通
192.168.1.132 ldap-server1.example.com
[root@localhost ~]# yum install -y  nss_ldap openldap  openldap-servers openldap-clients nss-pam-ldapd sssd #安装必要的包
[root@localhost ~]# yum install -y authconfig-gtk

1.配置客户端使用LDAP验证,主要有以下几种方式

A.命令行图形界面

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_18

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_19

B.图形界面配置

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_20

 

 

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_21

 

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_22

 C:命令行

authconfig --enableldap --enableldapauth --ldapserver="ldap-server1.example.com" --ldapbasedn="dc=ldap-server1,dc=example,dc=com" --enableldaptls  -–enablemkhomedir --update

以上操作会自动生成 /etc/sysconfig/authconfig 及 /etc/nslcd.conf 文件并根据配置内容替换相关配置

2.配置nslcd服务 

[root@localhost ~]# vim /etc/nslcd.conf #想使 nss 可以查询ldap,那么首先就需要启用一个叫 nslcd 的服务
[root@localhost ~]# grep  "^[a-z]" /etc/nslcd.conf
uid nslcd
gid ldap
uri ldap://ldap-server1.example.com/   #LDAP服务器地址
base dc=ldap-server1,dc=example,dc=com  #LDAP suffix DN
binddn uid=client-root,dc=ldap-server1,dc=example,dc=com  #链接的用户,之前创建的client-root
bindpw secret  #client-root的密码
ssl start_tls  #启用TLS
tls_cacertfile /etc/openldap/certs/cacert.pem #CA证书配置
[root@localhost ~]#  vim /etc/nsswitch.conf
passwd:     files ldap  #将nss修改为ldap
shadow:     files ldap
group:      files ldap
[root@localhost ~]#  sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/system-auth #将系统和ssh的验证修改为ldap
[root@localhost ~]#  sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/password-auth
[root@localhost ~]# cat ~/.ldaprc #配置LDAP客户端,
BINDDN cn=Directory Manager
[root@localhost ~]# cat /etc/openldap/ldap.conf
URI ldap://ldap-server1.example.com/
BASE dc=ldap-server1,dc=example,dc=com
TLS_CACERT /etc/openldap/certs/cacert.pem
[root@localhost ~]#  ldapsearch -x -ZZ
[root@localhost ~]# vim /etc/sysconfig/authconfig 
[root@localhost ~]# grep -i yes /etc/sysconfig/authconfig #authconfig 文件由 authconfig 包自动创建。 配置该文件的目的是用来跟踪 LDAP 身份认证机制是否正确启用
CACHECREDENTIALS=yes
USEFPRINTD=yes
USELDAP=yes
USELDAPAUTH=yes
USELOCAUTHORIZE=yes
USEMKHOMEDIR=yes
USEPWQUALITY=yes
USESHADOW=yes
USESSSD=yes
[root@localhost pam.d]# getent passwd
[root@localhost ~]#  grep "^[a-z]" /etc/sssd/sssd.conf 
autofs_provider = ldap # 配置 autofs 的提供程序为 ldap
cache_credentials = True  # 开启缓存
ldap_search_base = dc=ldap-server1,dc=example,dc=com  # ldap 查询的base dn
id_provider = ldap  # id 的提供程序为 ldap
auth_provider = ldap # 配置 auth 认证的提供程序为 ldap
chpass_provider = ldap # 更改密码 操作时的对用应用
ldap_uri = ldap://ldap-server1.example.com/  # ldap 的 URL 路径
ldap_id_use_start_tls = True # 开启 ldap 的 tls 加密
ldap_tls_cacert = /etc/openldap/certs/cacert.pem # ldap 服务 tls 加密信任证书(CA根证书)
ldap_tls_reqcert = never #如果不想强制启用TLS,可以设置此参数,类似ldapsearch -Z 和-ZZ的区别
services = nss, pam, autofs # 提供的服务
domains = default # 设置启用的域
homedir_substring = /home
[root@localhost ~]# systemctl restart sssd  #启动服务
[root@localhost ~]# systemctl restart nslcd

3.测试  

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_23

切换到ldap用户时提示没有用户目录,可以通过以下配置解决

[root@localhost ~]#  vim /etc/pam.d/sshd
session    required     pam_mkhomedir.so  skel=/etc/skel/ umask=0022 #添加该行

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_24

其他问题:

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_25

org.freedesktop.DBus.Error.ServiceUnknown: The name com.redhat.oddjob_mkhomedir was not provided by any .service files

检查一下systemctl status oddjobd 是否启动。
最好再检查一下dbus.socket 和 dbus.service 这两个服务 是否正常

四、客户端自动挂载配置

以上配置会出现一个这样的问题,如果用户在不同的客户机上都创建自己的家目录,无法做到在不同的客户机下共享家目录,所以我们将使用NFS服务为每个用户都创建自己自己的共享目录,用户从不同的客户机上登录时,都挂载使用NFS服务器上的共享目录,这样就能保证用户家目录下的文件一致了

1、LDAP服务器上NFS共享配置

NFS服务也可以单独搭建在另外一台服务器。由于我使用的是虚拟机,所以这里我把NFS服务也部属在LDAP服务器上。

[root@ldap-server1 ~]# cd /home/
[root@ldap-server1 home]# mkdir guests
[root@ldap-server1 home]# cp -ar nis-user* guests/  #由于默认在/home下,挂载到其他机器会覆盖其他机器用户的家目录,需要换个路径
[root@ldap-server1 ~]# yum install nfs-utils -y # 安装软件包
[root@ldap-server1 ~]# vim /etc/exports
/home/guests 192.168.1.0/24(rw)
[root@ldap-server1 ~]# exportfs -rv  #使配置生效
exporting 192.168.1.0/24:/home
[root@ldap-server1 ~]# exportfs -v
/home         	192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,root_squash,no_all_squash)
[root@ldap-server1 ~]# systemctl enable  rpcbind
[root@ldap-server1 ~]# systemctl restart rpcbind
[root@ldap-server1 ~]# systemctl enable  nfs
[root@ldap-server1 ~]# systemctl restart nfs

如果有防火墙,配置防火墙策略

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

2.修改LDAP上用户的家目录,以nis-user1为例

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_26

 

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_vim_27

 到此,服务器端就配置完成了

2、客户端配置

查看服务端共享

[root@nis-client ~]# showmount -e 192.168.1.132 #--查看服务端共享,正常显示如下,否则防火墙策略没配置对或服务未正常启动
Export list for 192.168.1.132:
/home/guests 192.168.1.0/24
[root@nis-client ~]# yum install autofs nfs-utils -y 
[root@nis-client ~]# vim /etc/auto.master
/home/guests /etc/auto.guests  #加入这一行

说明:
/home/guests       --指定需要把远程服务器上的目录挂载到本地客户端的哪个目录下。
/etc/auto.guests   ---指定挂载时用到的子配置文件名,这是一个映射文件,名字可以随便取,路径也可以随便。

启动autofs.service的时候,会自动创建/home/guests目录。并且autofs服务会一直监控这个目录,只要有用户访问这个目录时,它就会触发 /etc/auto.guests 配置文件。然后根据这个配置文件的内容为用户挂载指定目录。

[root@nis-client ~]# vim /etc/auto.guests
* -rw,nfs4 192.168.1.132:/home/guests/&
说明:
* 表示客户端用户访问 /home/guests 目录下的任意内容。比如,我执行命令:ls /home/guests/abcderfg,那么*号就表示abcdefg
& 表示服务器端”192.168.1.132:/home/guests/“目录下的abcderfg。即*和&是一致的
[root@nis-client ~]#  systemctl restart autofs

3.验证

[root@nis-client home]# ll /home/guests/
总用量 0
[root@nis-client guests]# su - nis-user1  # 切换到LDAP用户,切换的时候会自动挂载NFS服务器上的用户目录
上一次登录:四 3月 31 15:18:11 CST 2022pts/2 上
[nis-user1@nis-client ~]$ pwd
/home/guests/nis-user1
[nis-user1@nis-client ~]$ ls /home/guests/nis-user2 #ls 访问nis-user2时会自动创建nis-user2目录
ls: 无法打开目录/home/guests/nis-user2: 权限不够
[nis-user1@nis-client ~]$ ll /home/guests/
总用量 0
drwx------ 5 nis-user1 nis-user1 107 3月  31 18:20 nis-user1
drwx------ 3 nis-user2 nis-user2  78 3月  25 18:33 nis-user2

五、拓展(openLDAP导入系统用户)

[root@ldap01 ~]# yum install migrationtools -y        #安装数据迁移工具
[root@ldap01 ~]# for i in {1..5};do adduser ldap${i}; echo 123456|passwd --stdin ldap${i} &> /dev/null;done  #创建测试用户
[root@ldap01 ~]# id ldap1
[root@ldap01 ~]# vim /usr/share/migrationtools/migrate_common.ph  #替换为自己的域名及suffix    
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "pwb.com";

# Default base 
$DEFAULT_BASE = "dc=ldap01,dc=pwb,dc=com";

[root@ldap01 ~]# /usr/share/migrationtools/migrate_base.pl > base.ldif  #创建OpenLDAP根域条目
[root@ldap01 ~]# vim base.ldif
#删除以下三个条目
dn: dc=dc=ldap01,dc=pwb,dc=com
dn: ou=People,dc=ldap01,dc=pwb,dc=com
dn: ou=Groups,dc=ldap01,dc=pwb,dc=com
[root@ldap01 ~]# grep ldap[0-9] /etc/passwd > user_list.txt
[root@ldap01 ~]# grep ldap[0-9] /etc/group > group_list.txt
[root@ldap01 ~]# /usr/share/migrationtools/migrate_passwd.pl user_list.txt  user.ldif
[root@ldap01 ~]# /usr/share/migrationtools/migrate_group.pl group_list.txt group.ldif
[root@ldap01 ~]# ldapadd -x -W -D "cn=admin,dc=ldap01,dc=pwb,dc=com" -f base.ldif 
[root@ldap01 ~]# ldapadd -x -W -D "cn=admin,dc=ldap01,dc=pwb,dc=com" -f user.ldif 
[root@ldap01 ~]# ldapadd -x -W -D "cn=admin,dc=ldap01,dc=pwb,dc=com" -f group.ldif 
[root@ldap01 ~]# ldapsearch -x #查看数据是否存在

控制台查看数据

LDAP学习笔记之五:LDAP客户端实现系统帐号验证_服务器_28

  

参考链接:

https://www.yuque.com/panwenbin-yzfnx/ukrlas/hbvibl/edit
https://www.linuxidc.com/Linux/2016-08/134228.htm

  

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:com,之五,server1,dc,etc,ldap,LDAP,root,客户端
From: https://blog.51cto.com/u_8901540/12118044

相关文章

  • LDAP学习笔记之八:openLDAP sudo权限
    一、openLDAPsudo权限常见属性sudoCommand:可执行的二进制命令,如useradd、userdel、mount、umount等。sudoHost:可在哪些机器上执行sudoCommand定义的BASH命令。sudoNotAfter:起始时间sudo规则匹配。sudoNotBefore:结束时间sudo规则匹配。sudoOption:定义超过自身权限及切换至......
  • CH395 tcp客户端 热拔插
    CH395做tcp客户端,实现网线拔掉后tcp断开,网线插上后tcp连接。目前提供三种思路:芯片测试版本:0x49,测试工具:TCPIPDebug做服务器1.第一种思路(1)代码:(在CH395的tcp_client例程的超时终端和PHY_Change中断中加上下面的代码即可)1u8sock_sta[2];2u8i;3if(init_status&GINT......
  • Windows使用使用旧版有道云客户端导出所有笔记
    使用旧版有道云笔记客户端导出所有笔记最近在复习之前的笔记,边复习边整理,准备把之前在有道云笔记的文档全部整理导出,原因你懂得(有道云笔记是越做越烂了!!!),有道云笔记新版本的客户端不支持导出所有笔记。依稀记得老版本好像是支持全部导出的,我找到了2年前保存的旧版本的客户......
  • 一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
    一个.NET开源、快速、低延迟的异步套接字服务器和客户端库 思维导航前言项目介绍主要特性功能组件使用示例基准测试项目源代码TCP聊天服务器示例项目源码地址优秀项目和框架精选前言最近有不少小伙伴在问:.NET有什么值得推荐的网络通信框架?今天大姚给大家分......
  • 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352675.html?templateId=1718516问题现象客户端yasql配置字符集为GBK,服务端yasdb配置字符集为UTF8,之后执行语句:会发现:期望是两个都失败(强检测字符集),或者两个都成功(弱检测字符集,直接将字符当做数据存储,不关心数......
  • OPENLDAP部署完整版(Linux)附一键式脚本
    (一)环境信息1,系统环境2,域信息(本章节使用)(二)应用部署1,ladp部署1、yum方式安装OpenLDAP服务2、拷贝数据库配置配置文件,并启动服务3、slappasswd生成OpenLDAP管理员密码4、导入基本的模式5、在OpenLDAPDB上配置域信息2,安装phpLDAPadmin实现通过Web管理LDAP服务1,部署httpd2,部署php应......
  • 利用IDEA创建Web Service服务端和客户端的详细过程
    创建服务端一、file–>new–>project 二、点击next后输入服务端名,点击finish,生成目录如下三、在HelloWorld.Java文件中右击,选WebServices,再选GenerateWsdlFromJavaCode,确定点击ok会自动给我们生成HelloWorld.wsdl,画红线处注意四、配置tomcat,此处不多说,主要......
  • 有问题的达梦客户端导致应用crash
    【问题描述】userapp03su-smbsuserbak安装包有问题的,不带bak包是正确的573Mdamengbak.tgz376Mdameng.tgz /var/log/messages一直报错$DM_HOME/bin/libdmdpc.soerror导致/var/log/messages不断写信息,直到/var文件系统写满Aug2503:40:03userapp03systemd-......
  • 统信UOS安装Oracle 11g的客户端
    统信UOS安装Oracle11g的客户端一个积分的下载地址https://download.csdn.net/download/u011189649/89791511解压客户端压缩文件到/db/#首先执行xhost+xhost+#上传linux.x64_11gR2_client.zip文件至/db/目录;#如果上传不了就在局域网搭个http服务,然后用wget下载#wget......
  • node-http模块:服务器与客户端
    HTTP服务器与客户端Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层C++部分实现,而接口由JavaScript封装,兼顾了高性能与简易性。http.request则是一个HTTP客户......