《Linux/UNIX OpenLDAP实战指南》——2.7 OpenLDAP用户以及与用户组相关的配置

简介: 添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools工具生成LDIF文件并结合ldapadd命令导入OpenLDAP目录树中,生成OpenLDAP用户。另一种通过自定义LDIF文件并通过OpenLDAP命令进行添加或者修改操作。

本节书摘来自异步社区《Linux/UNIX OpenLDAP实战指南》一书中的第2章,第2.7节,作者:郭大勇著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 OpenLDAP用户以及与用户组相关的配置

添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools工具生成LDIF文件并结合ldapadd命令导入OpenLDAP目录树中,生成OpenLDAP用户。另一种通过自定义LDIF文件并通过OpenLDAP命令进行添加或者修改操作。本节分别介绍两种方法的实现来完成OpenLDAP用户的添加。

2.7.1 通过migrationtools实现OpenLDAP用户及用户组的添加
migrationtools开源工具通过查找/etc/passwd、/etc/shadow、/etc/groups生成LDIF文件,并通过ldapadd命令更新数据库数据,完成用户添加。具体步骤如下。

1)安装migrationtools工具。

# yum install migrationtools -y
2)创建OpenLDAP根域条目。

# /usr/share/migrationtools/migrate_base.pl > base.ldif
读者可以编辑base.ldif进行修改,将不需要的条目删除,然后通过ldapadd导入至OpenLDAP目录树。

3)添加用户用于生成OpenLDAP用户。

此处添加系统普通用户。通过以下脚本添加user1~user5。

# vim adduser.sh
#!/bin/bash
# Add system user
for ldap in {1..5};do
        if id user${ldap} &> /dev/null;then
                echo "System account already exists"
        else
                adduser user${ldap}
                echo user${ldap} | passwd --stdin user${ldap} &> /dev/null
                echo "user${ldap} system add finish"
        fi
done
# chmod +x adduser.sh
# ./adduser.sh 
# id user1
uid=502(user1) gid=502(user1) groups=502(user1)

4)配置migrationtools配置文件。

migrationtools配置文件
$DEFAULT_MAIL_DOMAIN = "padl.com";

# Default base 
$DEFAULT_BASE = "dc=padl,dc=com";

将以上内容修改为自己所定义的域名,例如本章以gdy.com为准。

$DEFAULT_MAIL_DOMAIN = "gdy.com";

# Default base 
$DEFAULT_BASE = "dc=gdy,dc=com";

5)通过migrationtools工具生成LDIF模板文件并生成系统用户及组LDIF文件。

# tail -n 5 /etc/passwd > system
# /usr/share/migrationtools/migrate_passwd.pl system people.ldif
# tail -n 10 /etc/group > group
# /usr/share/migrationtools/migrate_group.pl group group.ldif

6)查看生成的LDIF文件。

查看生成的people.ldif条目信息。

# head -n 5 people.ldif 
dn: uid=user1,ou=People,dc=gdy,dc=com
uid: user1
cn: user1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$HtmehKu8$g.vhVs1PjCwzvpO7PiWxaY1E0sQH4M2fOwr/NKAI20q/   
                     c3rWgEbdzPfQS/Bxznhi1IpwMZbQrcNDTt5NFUEYd. 
shadowLastCh ange: 16497
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 502
gidNumber: 502
homeDirectory: /home/user1

查看生成的group.ldif条目信息。

# head -n 20 group.ldif 
dn: cn=user1,ou=Group,dc=gdy,dc=com
objectClass: posixGroup
objectClass: top
cn: user1
gidNumber: 502

dn: cn=user2,ou=Group,dc=gdy,dc=com
objectClass: posixGroup
objectClass: top
cn: user2
gidNumber: 503

读者可以将不需要的条目信息进行修改,满足当前需求,然后通过ldapdd导入。

7)利用ldapadd导入模板文件中的内容。

导入用户LDIF文件至OpenLDAP目录树中,生成用户。

# ldapadd -x -W -D "cn=Manager,dc=gdy,dc=com" -f people.ldif 
Enter LDAP Password:   输入OpenLDAP管理员账号密码  (cn=Manager)
adding new entry "uid=user1,ou=People,dc=gdy,dc=com"

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

adding new entry "uid=user3,ou=People,dc=gdy,dc=com"

adding new entry "uid=user4,ou=People,dc=gdy,dc=com"

adding new entry "uid=user5,ou=People,dc=gdy,dc=com"

导入组LDIF文件至OpenLDAP目录树中,生成用户组。

# ldapadd -x -W -D "cn=Manager,dc=gdy,dc=com" -f group.ldif 
Enter LDAP Password:    #输入OpenLDAP管理员账号密码(cn=Manager)
adding new entry "cn=user1,ou=Group,dc=gdy,dc=com"

adding new entry "cn=user2,ou=Group,dc=gdy,dc=com"

adding new entry "cn=user3,ou=Group,dc=gdy,dc=com"

adding new entry "cn=user4,ou=Group,dc=gdy,dc=com"

adding new entry "cn=user5,ou=Group,dc=gdy,dc=com"

8)查询添加的OpenLDAP用户信息。

# ldapsearch -LLL -x -D 'cn=Manager,dc=gdy,dc=com' -W -b 'dc=gdy,dc=com' 'uid=user1'
Enter LDAP Password: 
dn: uid=user1,ou=People,dc=gdy,dc=com
uid: user1
cn: user1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JEh0bWVoS3U4JGcudmhWczFQakN3enZwTzdQaVd4YVkxRTBzUUg
shadowLastChange: 16497
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 502
gidNumber: 502
homeDirectory: /home/user1

至此通过migrationtools工具实现了本地用户和本地组的迁移,并且通过ldapsearch成功过滤(filter)查询匹配user1的用户属性信息。关于filter的更多信息,可以通过查询ldapsearch的帮助手册来了解。

2.7.2 自定义LDIF文件添加用户及用户组条目
前面通过定义LDIF文件添加用户和用户组信息,然后通过ldapdd进行添加,同样也可通过下面的方法进行添加。作者强力建议通过定制LDIF文件添加目录树条目。具体步骤如下。

1)定义LDIF用户文件。

前面通过head –n 20 people.ldif定义符合要求的用户属性信息,然后通过ldapadd进行导入即可,这里不做过多阐述。同样可以通过下面这种方法来实现用户和用户组的添加。

cat << EOF |  ldapadd -x -D cn=Manager,dc=gdy,dc=com -W 
dn: uid=gdy,ou=people,dc=gdy,dc=com
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: inetOrgPerson
cn: System
sn: 郭
givenName: 大勇
displayName: 郭大勇
uid: gdy                  //OpenLDAP的uid信息
userPassword: password@123     //账号的密码,可以使用密文也可以使用明文,这里使用明文进行演示
uidNumber: 1001            //账号的UID
gidNumber: 1001              //账号的GID
gecos: System Manager
homeDirectory: /home/gdy       //用户的主目录指定
loginShell: /bin/nologin       //用户登录的SHELL
shadowLastChange: 16020        //用户最后一次修改密码的时间,自1970/1/1起,密码被修改的天数
shadowMin: 0              //密码将允许修改的天数(0代表任何时间都可以进行修改)
shadowMax: 999999              //系统强制用户修改为新密码的天数(1代表永远都不能进行修改)
shadowWarning: 7               //密码过期7天进行报告
shadowExpire: -1           //密码过期后,账号状态
employeeNumber: ******        //工号相关信息
homePhone: 0512********        //家庭电话
mobile: **************         //手机号码信息
mail: dayong_guo@126.com       //邮箱地址
postalAddress: 上海             //住址相关信息
initials: Test
EOF
Enter LDAP Password:  ===  此处要输入Manager用户的密码
adding new entry "uid=gdy,ou=people,dc=gdy,dc=com"

此LDIF文件中存在中文字符,建议使用Linux dos2unix命令进行转换,例如dos2unix -k –n file new_file。作者建议尽可能不要使用中文字符进行添加,而使用英文添加。

2)查看当前OpenLDAP服务器目录树信息。

[root@mldap01 ~]# ldapsearch -x -LLL -H ldap:/// -b dc=gdy,dc=com dn
dn: dc=gdy,dc=com
//基准目录树信息
dn: ou=people,dc=gdy,dc=com
//用户或人员组,相当于系统组概念
相关文章
|
4月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
256 2
|
29天前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
1月前
|
Unix Linux 数据安全/隐私保护
Linux用户与用户组管理(详解)
Linux用户与用户组管理(详解)
30 5
|
1月前
|
安全 Shell Linux
Linux 用户和用户组管理
Linux 用户和用户组管理
23 1
|
3月前
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
284 4
|
3月前
|
Ubuntu 安全 Unix
在Linux中,有哪几种linux/unix发行版本?
在Linux中,有哪几种linux/unix发行版本?
|
3月前
|
Ubuntu Unix Linux
在Linux中,Unix和Linux之间的关系是什么?
在Linux中,Unix和Linux之间的关系是什么?
|
3月前
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
53 0
|
3月前
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
48 0
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
187 1
下一篇
无影云桌面