《Linux/UNIX OpenLDAP实战指南》——2.7 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
//用户或人员组,相当于系统组概念
上一篇:VulnHub breach1.0


下一篇:预处理的原理|学习笔记