LDAP--OpenLDAP

2023-11-05

首先说下标题LDAP–OpenLDAP,他们并不是一个东西。

LDAP:Lightweight directory access protocol 轻量级目录访问协议。是美国密歇根大学推出的基于X.500标准的一种简化的目录访问协议,属于目录服务。它里边的信息是一树形结构在一个数据库中存储的,ldap本身并不是数据库,而是规定如何从网络访问数据库,它的功能没数据库那么强大。

目录服务

      目录服务是一种信息查询服务,把管理所需要的信息按照层次结构关系构造成一种树形结构,并将这些信息存储于目录数据库,使用树状结构的目录数据库提供信息查询。比如linux的目录结构就是倒树型。

目录数据库

       目录实际上就是一个数据库,里面储存了有关资源(文件)的信息,以及资源的位置、管理等。
      与关系型数据库相比,目录更容易为用户提供高效的查询,数据的读取和查询很快;但是写的效率较低。
      还是用linux举例子,/etc/httpd/conf/httpd.conf绝对路径,就是从根进行逐层搜索,最终找到了httpd.conf这个文件。

为什么使用LDAP

      LDAP对数据的读取做了很多优化,比如优化了数据类型,修改了锁机制,取消了不必要的函数,取消了回滚机制等等,非常适用于读多写少的环境,并且支持跨平台。如果你有一些面向查询的服务,那LDAP无疑是一个不错的选择。
LDAP目录中可以存储各种类型的数据:
      电子邮件地址; 人力资源数据; 公用密匙联系人列表等等。

我们用的软件就是用ldap技术实现了用户集中管理的软件OpenLDAP。

层次结构:

例子:
把一个大学的庞大的学生信息放到LDAP里:
(1)建立一个"dc=ourschool,dc=edu“的树根"
(2)建立若干个系:
ou=computer,dc=ourschool,dc=edu
ou=film,dc=ourschool,dc=edu

(3)在每个系建立专业 如
ou=linux,ou=computer,dc=ourschool,dc=edu
ou=network,ou=computer,dc=ourschool,dc=edu

(4)加学生
dn:cn=xiaoming,ou=linux,ou=computer,dc=ourschool,dc=edu
dn:cn=xiaoliang,ou=network,ou=computer,dc=ourschool,dc=edu
cn=xiaoming,ou=linux,ou=computer,dc=ourschool,dc=edu整个这一条就是1xiaoming这个学生的dn。

(5)学生的详细信息
dn:cn=xiaoming,ou=linux,ou=computer,dc=ourschool,dc=edu
objectClass: organizationalPerson
cn:xiaoming
cn:小明
description:a good boy,…

基本概念

  • (1)Entry(条目),也叫记录项,是LDAP中最基本的颗粒,通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的;
        每个条目包含了一组有名字的属性比如UID,description等,和这些属性的值。

    dn:Distinguished Names:标识名;一条记录的位置
    dc:Domain Component: 域组件;一条记录所属的区域
    ou:Organization Unit:组织单元;一条记录所属的组织
    cn/uid:Common Name:通用名;一条记录的名字/ID

  • (2)属性(Attribute),每个条目都可以有很多属性;

  • (3)对象类(ObjectClass)是属性的集合;

  • (4)模式(Schema),对象类、属性类型、语法分别约定了条目、属性、值,这些构成了模式(Schema)–对象类的集合;

  • (5)数据库(database),保存数据的;

  • (6)SSL/TLS 的加密协议用来保证数据传送的保密性和完整性;

  • (7)LDIF(LDAP Data Interchange Format,数据交换格式)是LDAP数据库信息的一种文本格式,用于数据的导入导出,每行都是“属性: 值”。

具体配置:

OpenLDAP也是服务端客户端类型的。
172.16.12.62 server 端
172.16.12.63 client 端

首先配置server端

1、安装软件:

[root@ldap_server ~]# yum install -y openldap openldap-servers openldap-clients openldap-devel migrationtools

2、生成加密密码:

[root@ldap_server ~]# slappasswd
New password: 
Re-enter new password: 
{SSHA}I+VIzW+ERq8zOJbw1zIUAtvmC/4I4h+2
密码是000000 加密后是最下边的。

3、改配置文件:

[root@ldap_server ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
上边是配置文件。  
  7  al,cn=auth" read by dn.base="cn=Manager,dc=testl,dc=com" read by * none
增加管理员信息  Manager就是管理员用户名
修改dc后边的东西,这个是自定义的。也就是上边说的树根。
[root@ldap_server ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
  8 olcSuffix: dc=testl,dc=com
基准DN
  9 olcRootDN: cn=Manager,dc=testl,dc=com
管理员用户的DN
同上个配置文件,修改dc根,要想同。

 19 olcRootPW: {SSHA}G1cm46dfFkfjJb71PkmTBtooxKBRqPnc
管理员用户的密码

4、准备数据库配置文件:

[root@ldap_server ~]# cd /var/lib/ldap/
这个目录就相当于是/var/lib/mysql,是存放数据库的位置。

[root@ldap_server ldap]# cp /usr/share/openldap-servers/DB_CONFIG.example .
[root@ldap_server ldap]# mv DB_CONFIG.example DB_CONFIG
[root@ldap_server ldap]# chown -R ldap:ldap .

就将配置文件拷贝过来,然后赋予整个目录权限。

启动服务测试:

[root@localhost ldap]# systemctl restart slapd
[root@localhost ldap]# systemctl enable slapd
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.

[root@localhost ldap]# netstat -antlup | grep slapd
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      2259/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      2259/slapd  

5、导入数据库的schemas:

这个是schenas一个解释:https://blog.csdn.net/n_u_l_l_/article/details/103525305 (主要看LDAP的schemas就好了。)

这个可以是固定写法了,放到脚本中执行也可以。

cd /etc/openldap/schema/
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f ppolicy.ldif

6、写个脚本,添加10个用户:(测试用)

[root@localhost /]# mkdir /ldaphome

[root@localhost ~]# vim useradd.sh 
#!/bin/bash

userlist="/root/userandpass.txt"

if [ ! -d ${userlist} ]
then
    touch ${userlist}
fi

> ${userlist}
for  i in `seq 1 10 `
do
    id user$i
    if [ $? -ne 0 ]
    then
        useradd user$i -d /ldaphome/user${i}
        passwd=$(tr -dc a-zA-Z0-9_ < /dev/urandom | head -c 6 | xargs)
        echo "${passwd}" | passwd user$i --stdin
        echo -e "user$i\t${passwd}" >> ${userlist}
    fi
done

[root@localhost ~]# cat userandpass.txt 
user1	VX1dDz
user2	G9eKs6
user3	s8S2N8
user4	bNBwce
user5	QkGb2H
user6	Lx765n
user7	z7Au5H
user8	uvYOcF
user9	UnFmBq
user10	Gg3dV7

!!!!!!!一定要指定家目录。!!!!!!!!
!!!!!!!一定要指定家目录。!!!!!!!!
!!!!!!!一定要指定家目录。!!!!!!!!

要测试的只是后创建的10个用户所以重新建个文件方便。

[root@localhost ~]# tail /etc/passwd > /tmp/passwd
[root@localhost ~]# tail /etc/group > /tmp/group
[root@localhost ~]# tail /etc/shadow > /tmp/shadow

7、编辑配置文件:

[root@ldap_server ~]# cd /usr/share/migrationtools/
[root@ldap_server migrationtools]# vim migrate_common.ph 
61     $NAMINGCONTEXT{'group'}             = "ou=Groups";
改下组的ou
 71 $DEFAULT_MAIL_DOMAIN = "testl.com";
 74 $DEFAULT_BASE = "dc=testl,dc=com";
dc改成最初设置的
 90 $EXTENDED_SCHEMA = 1;
改成1 
[root@ldap_server migrationtools]# vim migrate_passwd.pl
188     open(SHADOW, "/tmp/shadow") || return;
这个就是指定了用户的密码文件

8、生成基本框架:

[root@ldap_server migrationtools]# ./migrate_base.pl > /tmp/base.ldif

[root@ldap_server migrationtools]# vim /tmp/base.ldif
删掉其他的剩这些够用。

dn: dc=testl,dc=com
dc: testl
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: testl.com

dn: ou=People,dc=testl,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: testl.com

dn: ou=Groups,dc=testl,dc=com
ou: Groups
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: testl.com

9、生成用户和组的数据文件:

[root@ldap_server migrationtools]# ./migrate_passwd.pl /etc/passwd > /tmp/user.ldif
[root@ldap_server migrationtools]# ./migrate_passwd.pl /etc/group > /tmp/group.ldif

//这个生成的文件 user.ldif就相当于是XXXX.sql 。SQL脚本,mysql备份导出的文件。保存着ldap的实际数据

10、将数据文件导入数据库:
先导入骨架

[root@ldap_server migrationtools]# ldapadd -xWD "cn=Manager,dc=testl,dc=com" -f /tmp/base.ldif 
Enter LDAP Password: 
adding new entry "dc=testl,dc=com"
//其实这个能看明白dc嘛
adding new entry "ou=People,dc=testl,dc=com"
//ou
adding new entry "ou=Groups,dc=testl,dc=com"
//ou
	-x	进行认证
	-W  输入密码
	-D	绑定服务器的基准DN
	-f	使用的ldif文件
	cn=Manager,dc=sgy,dc=com	ldap的管理员用户

然后导入数据

[root@ldap_server migrationtools]# ldapadd -x -W -D "cn=Manager,dc=testl,dc=com" -f /tmp/user.ldif 
Enter LDAP Password: 
adding new entry "uid=user1,ou=People,dc=testl,dc=com"

adding new entry "uid=user2,ou=People,dc=testl,dc=com"
...........

[root@ldap_server migrationtools]# ldapadd -x -W -D "cn=Manager,dc=testl,dc=com" -f /tmp/group.ldif 
Enter LDAP Password: 
adding new entry "cn=user1,ou=Groups,dc=testl,dc=com"

adding new entry "cn=user2,ou=Groups,dc=testl,dc=com"

adding new entry "cn=user3,ou=Groups,dc=testl,dc=com"
........
[root@ldap_server migrationtools]# ldapsearch -xWD "cn=Manager,dc=testl,dc=com" -b "uid=user1,ou=People,dc=testl,dc=com" -LLL
Enter LDAP Password: 
dn: uid=user1,ou=People,dc=testl,dc=com
uid: user1
cn: user1
sn: user1
mail: user1@testl.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JFY4Lks4MldxJGI1bVZDN2toWG84eThGY201R0JCaHRGLnZqN29
 0NmxNUlBIdUZpNS51ZmEyWEtjWm9DMFZsZHdUOFZWMnVBTWJhN3ZFWWFiN3JJcEI3QzlKSnliMWkx
shadowLastChange: 18242
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /ldaphome/user1

-b   后边加的是查询的条件
uid=user1用户ID,ou=People所在ou,dc=testl,dc=com这个是所在dc
-LLL就是详细显示

到这里服务端的内容就基本完成,并且也有user1到user10 10个用户。

其次,配置client端

1、安装软件

[root@ldap_client ~]# yum install -y nss-pam-ldapd pam_krb5 setuptool

2、直接setup

[root@ldap_client ~]# setup

打开之后就进到下边这个页面
在这里插入图片描述
选择RunTool进行配置

在这里插入图片描述
这些选项只选这2 个,按空格选中。

在这里插入图片描述

在这里写上服务端IP和dc域。然后ok

又会跳到第一页。

在这里插入图片描述

这次直接 Quit 退出就好了。

然后可以直接在额外的另一台机器上做测试。
[root@localhost zones]# ssh user1@172.16.12.63】
IP输入client客户端的IP。
The authenticity of host '172.16.12.63 (172.16.12.63)' can't be established.
ECDSA key fingerprint is SHA256:iXTfA21RkpJUzHpSYB6d2ZIORcUpaKxDfPCTA0IM5W8.
ECDSA key fingerprint is MD5:21:21:2d:86:77:43:f6:90:16:cb:c7:58:e5:71:eb:71.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.12.63' (ECDSA) to the list of known hosts.
user1@172.16.12.63's password: 
Could not chdir to home directory /ldaphome/user1: No such file or directory

-bash-4.2$  这就登陆进来了,但是没有家目录。

-bash-4.2$ ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

从结果可以看到,在服务端创建的用户user1~user10 ,但是也能用这个用户直接登录client客户端。这就实现了用户的集中管理。

家目录的创建

下面进行家目录的创建。NFS+自动挂载来实现。

server 端

配置NFS,共享ldap用户的家目录:
1、安装nfs

[root@ldap_server migrationtools]# yum install nfs-* -y

2、设置共享目录

[root@ldap_server ~]# vim /etc/exports
/ldaphome 172.16.0.0/16(rw,sync)
[root@ldap_server ~]# systemctl restart nfs
client 端

配置autofs,自动挂载nfs的共享:
1、安装nfs 自动挂载

[root@ldap_client ~]# yum install -y nfs-utils autofs

2、配置自动挂载

[root@ldap_client ~]# showmount -e 172.16.12.62
Export list for 172.16.12.62:
/ldaphome 172.16.0.0/16
[root@ldap_client ~]# vim /etc/auto.master
/ldaphome /etc/auto-ldap.conf   //加一行

[root@ldap_client ~]# vim /etc/auto-ldap.conf
*   -rw,soft,intr   172.16.12.62:/ldaphome/&

[root@ldap_client ldaphome]# systemctl restart autofs
[root@ldap_client ldaphome]# systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.


[root@ldap_client ~]# cd /ldaphome/
[root@ldap_client ldaphome]# ls
[root@ldap_client ldaphome]# cd user1
-bash: cd: user1: Permission denied
其实可以看一下,但是发现没有权限,而不是提示目录不存在,这就是ok了

再次在另一台机器上进行登录测试:

这次就有家目录了

[root@localhost zones]# ssh user1@172.16.12.63
user1@172.16.12.63's password: 
Last login: Fri Dec 13 03:13:26 2019 from 172.16.12.32
[user1@ldap_client ~]$ pwd
/ldaphome/user1

应用:

1:ssh,那必须的能啊,刚才就是ssh访问的啊

2:vsftpd
client端安装vsftpd,然后启动服务。

[root@zabbix-ms ~]# ftp 172.16.12.63
Connected to 172.16.12.63 (172.16.12.63).
220 (vsFTPd 3.0.2)
Name (172.16.12.63:root): user1   //直接输入这个user1用户
331 Please specify the password.  
Password:						//密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

对于别的机器来说,user1就在client上,没有什么差别。

3、samba

[root@node1 ~]# yum install -y samba

[root@node1 ~]# vim /etc/samba/smb.conf
[share]
    comment = ldap test user1
    path = /samba
    writable = yes
    create mask = 0664
    directory mask = 0775

[root@ldap_client ~]# mkdir /samba
[root@ldap_client ~]# chmod 1757 /samba/

[root@ldap_client ~]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.

[root@node1 ~]# smbpasswd -a user2
New SMB password:
Retype new SMB password:
Added user ldap2.

[root@ldap_client ldaphome]# systemctl restart smb

在这里插入图片描述

ldap的管理:

用户的添加:
1、修改脚本,在跑一遍脚本

user11  riRpwt
user12  D7VOeu
user13  I_HPqa
user14  soHHYz
user15  HOypyM
user16  8lxGQq
user17  BVh0AD
user18  jaHYJN
user19  dZpDN1
user20  rFsDDL
生成了这几个         

2、做用户

[root@ldap_server ~]# tail /etc/passwd > /tmp/passwdnew
[root@ldap_server ~]# tail /etc/group > /tmp/groupnew
[root@ldap_server ~]# tail /etc/shadow >> /tmp/shadow 
//注意最后的shadow要用追加,因为上边配置文件中的位置的这个,记录着用户的密码,要一直用的 ,如果重定向的话前10个用户就没有密码了。

3、生成数据文件然后导入:

[root@ldap_server migrationtools]# ldapadd -xWD "cn=Manager,dc=testl,dc=com" -f /tmp/usernew.ldif

[root@ldap_server migrationtools]# ldapadd -xWD "cn=Manager,dc=testl,dc=com" -f /tmp/groupnew.ldif
[root@localhost zones]# ssh user11@172.16.12.63
user11@172.16.12.63's password: 
[user11@ldap_client ~]$ 
直接测试就好了

用户的删除:

server端删除
[root@ldap_server migrationtools]#  ldapdelete -xWD "cn=Manager,dc=testl,dc=com" "uid=user1,ou=People,dc=testl,dc=com"
Enter LDAP Password: 

这个删除只是删除数据库中的那个记录,server端本机上的用户还在。

client端测试
[root@ldap_client ldaphome]# su - user1
su: user user1 does not exist

用户的添加,单个:

添加单个的用户语法如下,这个很复杂。用脚本反而比较好点。

#!/bin/bash

cat << EOF| ldapadd -x -D "cn=Manager,dc=gsc,dc=com" -w 000000
dn: uid=user1,ou=People,dc=gsc,dc=com
uid: user1
cn: user1
sn: user1
mail: user1@gsc.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JEZ1cjZYSE40JFRLeWQ1dGcxVzNad2Y5SngzbEtaYURzeTl2R1E
 zcy5FeWdkUWZJQnNGYmRYMXFtNHBVUFFhRHQyLzUyM09ib1pzYzFkLnczUk1CbExGZDQ2dkRDLzgw
shadowLastChange: 18242
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /ldaphome/user1
EOF

这个的话如果想让新添加的用户的家目录生效还有再次重新启动话autofs自动挂载才行!!!

用户信息的修改:
但是这个修改很麻烦。。。。

ldapmodrdn -x -D "cn=Manager,dc=testl,dc=com" -w123456 "uid=user2,ou=People,dc=testl,dc=com" "uid=user222"

下面会有图形化工具进行操作经简单得多了。

密码的修改
-w是直接写入密码。

ldappasswd -x -D "cn=Manager,dc=testl,dc=com" -w000000  "uid=user2,ou=People,dc=testl,dc=com"  -s123456

OpenLDAP图形化工具:

首先确定安装和开启了LDAP,端口是389端口。

[root@ldap_server ~]# systemctl restart slapd
[root@ldap_server ~]# netstat -antlup | grep slap
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1348/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      1348/slapd       

然后直接yum安装,注意要有epel的yum源,阿里的镜像就好了。

懒得找了可以看这个:https://blog.csdn.net/n_u_l_l_/article/details/103427416 我汇总了一些比较常用的

1、yum安装

[root@ldap_server ~]# yum install phpldapadmin -y
安装这个会自动安装apache等等的。

2、修改配置文件。
/etc/httpd/conf/httpd.conf:apache配置文件

[root@ldap_server ~]# vim /etc/httpd/conf/httpd.conf

102 <Directory />
103     AllowOverride all
104     Require all denied
105 </Directory>
allow这个改成all

/etc/phpldapadmin/config.php :phpldapadmin配置文件

[root@ldap_server ~]# vim /etc/phpldapadmin/config.php

298 $servers->setValue('server','host','127.0.0.1');   
//取消注释

301 $servers->setValue('server','port',389);  
//取消注释

305 $servers->setValue('server','base',array('dc=testl,dc=com'));   
//取消注释,并在array的括号里写上一开始自己配置的dc。我的就是这个

323 $servers->setValue('login','auth_type','session');
//取消注释。

397 $servers->setValue('login','attr','dn');//这个取消注释

398 //$servers->setValue('login','attr','uid');//这个加上注释

简单来说就是用dn那个。

/etc/httpd/conf.d/phpldapadmin.conf:登录的配置文件

[root@ldap_server ~]# vim /etc/httpd/conf.d/phpldapadmin.conf

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
    Require ip 172.16.12    //注意这里要写IP的网段,也就是3位,不这么写就不能访问。另外也只能172.16.12网段访问172.16.13等其他网段不能访问
    Require ip 172.16.13	//但是可以写多个来进行多网段的访问
  </IfModule>
#  <IfModule !mod_authz_core.c>   //centos7默认是2.4,所以2.2的可以注释掉。
#    # Apache 2.2
#    Order Deny,Allow
#    Deny from all
#    Allow from 127.0.0.1
#    Allow from ::1
#  </IfModule>
</Directory>

3、重启服务

[root@ldap_server ~]# systemctl restart httpd

4、在浏览器输入http://IP/phpldapadmin
就可以看到图形化操作页面了。

在这里插入图片描述
然后点击左侧的登录。

在这里插入图片描述
输入用户名:cn=Manager,dc=testl,dc=com 就是自己最初设置的那个。(这个用户名就是个dn嘛…)

密码也是自己设置的管理密码。

就能登录了,上边的警告信息不重要,意思是非加密连接

在这里插入图片描述
dc=testl,dc=com这个可以点开,就是下面的这些。

在这里插入图片描述

可以看到这个目录结构 ,就是base.ldif的内容。

再看前边的图标。像这样好几个小人在一起的是组单个人的是用户

在这个基础上新增加用户 :
和在命令行的一样,首先在server端创建用户,并指定家目录,然后设置密码。

[root@ldap_server ldaphome]# useradd user23 -d /ldaphome/user22
[root@ldap_server ldaphome]# echo 000000 | passwd user23 --stdin
Changing password for user user22.
passwd: all authentication tokens updated successfully.

ldap图形工具添加用户到openldap的数据库中。
在这里插入图片描述
点击创建新条目

看到右边出现这个。

在这里插入图片描述

然后先添加组.

在这里插入图片描述
点击下边的创建对象按钮。

在这里插入图片描述
然后提交。

就能看到这个组了。

在这里插入图片描述然后添加用户,密码就是用户的密码,GID号就是刚刚添加的那个组。

后边的家目录,和使用的bash,就按情况填就好了。

在这里插入图片描述
一样,也是提交。

注意: 注意: 注意: 注意:
这个Login shell 就是登陆shell,这里用的是/bin/sh,而不是我们熟悉的/bin/bash,只要提交然后手动修改成/bin/bash就可以了。

否则就算设置的家目录,并且家目录里也有隐藏的骨架文件,也不能显示正常的头信息。

sh 和 bash的区别:https://blog.csdn.net/n_u_l_l_/article/details/103530977

注意: 注意: 注意: 注意:

其实还可以添加别的属性,比如邮箱什么的,就像上边导入时那么多的属性。

在这里插入图片描述

这里我就不做了。0.0

在这里插入图片描述

能够看到user23组和user23用户。添加上了。

然后就可以进行登录测试了。

额外一台机器

[root@localhost ~]# ssh user23@172.16.12.63
user22@172.16.12.63's password: 

[user22@ldap_client ~]$ pwd
/ldaphome/user23
[user22@ldap_client ~]$ 

到这里就ok了,添加用户成功。

OpenLDAP的大部分基本操作就解释得差不多了,图形化的工具其实也很好用,导入导出,修改删除,都是可以的,但是都很简单,看看就能明白,我在这里就不一一截图演示了。QAQ

以上。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LDAP--OpenLDAP 的相关文章

  • CRYPTO-36D-飞鸽传书

    0x00 前言 CTF 加解密合集 CTF 加解密合集 0x01 题目 TVdJd09HRm1NamMyWkdKak56VTVNekkzTVdZMFpXVTJNVFl5T0Rrek1qUWxNRUZsTW1GbE0yRXlNelV3TnpR
  • 爬虫——数据爬取-xpath解析器

    Xpath 预备知识 HTML DOM 模型示例 HTML DOM 定义了访问和操作 HTML 文档的标准方法 以树型结构表示HTML 文档 如何实现爬虫数据的解析 1 定位html文档中的节点 2 提取指定节点的属性 比如href cla
  • git的基本使用(一)

    目录 引言 git基本使用 查看当前文件状态 向暂存区添加文件 比较文件 提交文件 跳过使用暂存区域 移除文件 忽略文件 重命名 查看指定范围内代码的改动者 引言 git在安装之后 需要掌握一些基本指令用于对git的使用 本文开始记录一些g
  • Python+selenium 【第七章】Unittest学习

    Python selenium 第七章 Unittest学习 什么是Unittest 使用unittest前需要熟悉该框架的五个概念 unittest基本使用步骤 unittest常用断言介绍 断言示例代码 unittest用例执行顺序 代

随机推荐

  • [计算机毕业设计]模糊聚类算法

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • 移动端使用rem同时适应安卓ios手机原理解析,移动端响应式开发

    rem单位大家可能已经很熟悉 rem是随着html的字体大小来显示代表宽度的方法 我们怎样进行移动端响应式开发呢 浏览器默认的字体大小为16px 及1rem 等于 16px 如果我们想要使1rem等于 12px 只需设置html的字体大小为
  • nginx日志中的各类耗时(time)

    背景 分析nginx日志时碰到了request time和upstream response time两种时间 一时没有反应过来有什么区别 于是上了度娘发现很多对这两组名词的解释 为了更好地理解又去看了看nginx的官方文档 发现原来除了这
  • 使用parted划分GPT分区(fdisk与parted区别)

    parted命令可以划分单个分区大于2T的GPT格式的分区 也可以划分普通的MBR分区 fdisk命令对于大于2T的分区无法划分 大于2 2TB的存储空间用fdisk不支持 需要采用parted来分区 所以用fdisk无法看到parted划
  • Z变换理论梳理

    自控笔记 6 3 Z变换理论 本文框架如下 一 Z变换定义 Z变换是研究离散系统的数学工具 与拉式变换在连续系统中的地位是一样的 Z变换只对离散信号而言 Z变换对连续信号无意义 它并不是一种新的数学变换 它只是在离散信号拉普拉斯变换中的 e
  • NSX-T 架构-(1)

    IT世界的变化以应用为导向 大抵可以分为Iphone出现和容器的大规模应用两次大的变革时间点 残喘十几年的物理机加各种功能性盒子组成的IT系统慢慢分崩离析 虚拟化 容器化和云化慢慢成为现代化应用新的栖身之所 而连通这一切的网络 也随之变化
  • 【华为OD机试真题2023B卷 JAVA&JS】跳格子游戏

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 跳格子游戏 知识点图 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 地上共有N个格子 你需要跳完地上所有的格子 但是格子间是有强依赖关系的 跳完前一个格子后 后续的格
  • AI中Deepfake的部分研究前沿与文献综述

    AI中Deepfake的部分研究前沿与文献综述 一 研究现状 二 典型算法 三 存在问题 四 未来的研究热点 参考文献 一 研究现状 由于Deepfake其潜在的安全威胁 它已经引起了学术界和工业界的研究兴趣 为了减轻这种风险 人们提出了许
  • JavaScript作用域与作用域链

    JavaScript作用域与作用域链 JavaScript的作用域和作用域链是理解这门语言的关键概念之一 作用域指的是变量和函数在程序中可被访问的范围 作用域链是由函数的嵌套关系决定的变量对象的链式结构 静态作用域与动态作用域 JavaSc
  • React + antd 树Tree实现树节点的增删改(自定义树节点插槽)

    效果 树Tree实现悬浮节点展示增删改的操作按钮 自定义树节点的展示 核心 使用titleRender 示例
  • “头腾大战”烽烟再起,飞书触犯了微信的隐私数据安全红线?

    数据猿报道 近期热点 市值掉了15亿 向商家赔付1 5亿元 微盟再发公告 数据恢复期延后至3月3日 微盟SAAS数据遭核心员工破坏 回应 远程办公忽视了对员工精神状态的关注 大数据产业创新服务媒体 聚焦数据 改变商业 头腾大战 再起硝烟 2
  • java 中int String类型转换

    int gt String int i 12345 String s 第一种方法 s i 第二种方法 s String valueOf i 这两种方法有什么区别呢 作用是不是一样的呢 是不是在任何下都能互换呢 String gt int s
  • 最好用的 8 款 React Datepicker 时间日期选择器测评推荐

    本文完整版 最好用的 8 款 React Datepicker 时间日期选择器测评推荐 React Date Time Picker 时间选择器 1 React Datepicker 经典中的经典 常规场景闭眼选它 2 Material U
  • keepalived启停脚本+配置文件

    keepalived启停脚本 bin bash keepalived 家目录 KP HOME xxx xxx keepalived keepalived 运行脚本路径 KP CMM HOME KP HOME sbin keepalived
  • MySQL运行SQL文件时(全面,改成time):check the manual that corresponds to your MySQL server version for the righ

    参考 Mysql错误 check the manual that corresponds to your MySQL server version for the right syntax 加 符号 修改有冲突的字段名 check the
  • Unity实现文本点击事件

    写在前面的一些碎碎念 好久没有来写文章了 主要是这一两年找了一份不错的工作 进入了舒适区 工作上的功能没有什么创新 都是以前做过的功能 这不 最近开发一款类似传奇的手游 需要实现聊天栏文字点击的效果 今天就来分享一下 直接上代码 组件用的是
  • 超详细

    Hello 大家好 我是starz 这是本系列的第二篇 概率基础 虽说是概率基础 但作为过渡 它开始以图为载体 这节的主要内容有 贝叶斯网络 三种结构 D 划分 贝叶斯球 马尔科夫毯 应用例子 总结 让我们开始吧 3 贝叶斯网络 概率图模型
  • React 从零开始学习(十四)—— 类组件 VS 函数式组件

    类组件 Class Components VS 函数式组件 Functional Components React 定义组件 类组件 Class Components 函数式组件 Functional Components React 定义
  • 铨顺宏RFID工具跟踪管理系统,快速完成工具查找

    一 应用背景 RFID工具管理系统 快速完成工具查找 在各行各业中工具其实是一项重要不可或缺的资产 相关作业人员每天都要与工具打交道 怎么快捷便利的领用 归还 查找和保护这些工具 对企业管理来说是非常重要的工作 基于RFID工具管理系统可以
  • LDAP--OpenLDAP

    首先说下标题LDAP OpenLDAP 他们并不是一个东西 LDAP Lightweight directory access protocol 轻量级目录访问协议 是美国密歇根大学推出的基于X 500标准的一种简化的目录访问协议 属于目录