0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github:

https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在CDH集群中启用了Kerberos并集成OpenLDAP之后,在添加OpenLDAP用户时比较复杂且容易忘记为添加的用户生成Kerberos账号,在添加OpenLDAP用户可以通过phpldapadmin工具操作参考Fayson前面的文章《

12.OpenLDAP管理工具Phpldapadmin的安装及使用

》,本篇文章Fayson分享一个自己写的Shell脚本进行添加OpenLDAP用户、生成Kerberos账号及导出keytab文件。

  • 本次Fayson的测试环境为

1.Redhat7.3

2.OPenLDAP2.4.44

2.脚本说明


Fayson的shell脚本实现方式:

  • 通过输入要添加用户的基本信息生成ldif文件
  • 基于OpenLDAP客户端提供的ldapadd、ldapsearch等命令实现添加用户。
  • 基于Kerberos的kadmin添加账号及导出keytab文件

如下是脚本的具体实现及使用:

1.config-env.sh主要配置OpenLDAP及Kerberos信息和公共的方法

[root@cdh01 openldap-shell]# vim config-env.sh #!/bin/bash mkdir -p ldif mkdir -p keytab #OpenLDAP信息 ldap_url="ldap://cdh01.fayson.com" user_base="ou=People,dc=fayson,dc=com" group_base="ou=Group,dc=fayson,dc=com" super_admin="cn=Manager,dc=fayson,dc=com" super_password="123456" #kerberos信息 domain="FAYSON.COM" #输出异常日志方法 function show_errmsg() { echo -e "\033[40;31m[ERROR] $1 \033[0m" } #输出高亮日志方法 function show_highlight() { echo -e "\033[40;34m $1 \033[0m" exit } #查找OpenLDAP用户是否已存在 exists_user(){ result=`ldapsearch -H $ldap_url -b "uid=${1},${user_base}" -D "$super_admin" -w $super_password | grep result: |awk -F " " '{print $2}'` return $result }

(可左右滑动)

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(1)

2.addopenldap.sh脚本主要实现添加OpenLDAP用户及生成Kerberos账号

[root@cdh01 openldap-shell]# vim addopenldap.sh #!/bin/bash #使用脚本添加OpenLDAP用户 source ./config-env.sh while : ; do echo -n "Enter your OpenLDAP name: " read name if [ "$name" = "" ]; then show_errmsg "Please enter your name" else exists_user $name if [ $? -ne 0 ];then break else show_errmsg "User $name already exists" fi fi done while : ;do echo -n "Enter the uid for user: " read uid expr $uid 10 1>/dev/null 2>&1 if [ $? -ne 0 ];then show_errmsg "uid must be number, $uid" else break fi done echo -n "Enter the password for user $name: " while : ;do char=` stty cbreak -echo dd if=/dev/tty bs=1 count=1 2>/dev/null stty -cbreak echo ` if [ "$char" = "" ];then echo #这里的echo只是为换行 break fi password="$password$char" echo -n "*" done echo -n "Enter the password of user $name again:" while : ;do char=` stty cbreak -echo dd if=/dev/tty bs=1 count=1 2>/dev/null stty -cbreak echo ` if [ "$char" = "" ];then echo #这里的echo只是为换行 break fi repassword="$repassword$char" echo -n "*" done if [ "$password" != "$repassword" ];then show_errmsg "Sorry, passwords do not match." exit fi echo "username:$name" echo "userid:$uid" echo "password:$password" #生成ldif文件,包含用户和用户组 # Create User Ldif File echo "dn: uid=$name,$user_base uid: $name cn: $name objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: $password loginShell: /bin/bash uidNumber: $uid gidNumber: $uid homeDirectory: /home/$name dn: cn=$name,$group_base objectClass: posixGroup objectClass: top cn: $name userPassword: $password gidNumber: $uid" > ldif/${name}.ldif #添加用户和用户组到OpenLDAP中 ldapadd -x -D "$super_admin" -w $super_password -f ldif/${name}.ldif if [ $? -ne 0 ];then show_errmsg "Add openldap user failed..." else #是否为用户生成Kerberos账号 echo -n "Are you sure if you are generating kerberos?(Y/N): " read iskerberos if [ "$iskerberos" = "Y" ];then #添加kerberos账号 kadmin.local -q "addprinc -pw $password ${name}@${domain}" if [ $? -ne 0 ];then show_errmsg "Sorry,Failed to generate kerberos account." fi #是否为用户生成keytab文件 echo -n "Are you sure if you are generating keytab for ${name}@${domain} ?(Y/N): " read iskeytab if [ "$iskeytab" = "Y" ];then kadmin.local -q "xst -norandkey -k ./keytab/${name}.keytab ${name}@${domain}" if [ $? -ne 0 ];then show_errmsg "Sorry,Failed to generate keytab." fi fi fi fi

(可左右滑动)

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(2)

3.start_openldap.sh主脚本

[root@cdh01 openldap-shell]# vim start_ldap.sh #!/bin/bash ######################################################### # author: Fayson # # version: V1.0 # # createTime: 2018-09-02 # # OpenLDAP 简单操作: # # 1.新增OpenLDAP用户并创建Kerberos账号及生成keytab文件 # # 2.删除OpenLDAP用户 # # 3.删除OpenLDAP用户组 # # 4.修改用户密码 # ######################################################### source ./config-env.sh useage(){ echo "Command action 1 delete a openldap user 2 delete a openldap group 3 modify the openldap user password 4 add a openldap user q quit" } echo_help(){ echo -n "Enter your OpenLDAP $1: " read content } delete_user(){ echo "---------Delete [`show_highlight ${content}`] user" ldapdelete -x -D "$super_admin" -w $super_password "uid=${content},${user_base}" if [ $? -eq 0 ];then echo "---------Successfully deleted the [`show_highlight ${content}`] user" fi } delete_group(){ echo "---------delete [`show_highlight ${content}`] group" ldapdelete -x -D "$super_admin" -w $super_password "cn=${content},${group_base}" if [ $? -eq 0 ];then echo "---------Successfully deleted the [`show_highlight ${content}`] group" fi } modify_user(){ echo "---------Modify the peach [`show_highlight ${content}`] password" ldappasswd -x -D "$super_admin" -w $super_password "uid=${content},${user_base}" -S if [ $? -eq 0 ];then echo "---------Successfully modified the [`show_highlight ${content}`] user password" fi } add_user(){ source ./addopenldap.sh } while true do echo -n "Command (m for help): " read operator case $operator in m) useage ;; 1) echo_help "UserName" delete_user ;; 2) echo_help "GroupName" delete_group ;; 3) echo_help "UserName" modify_user ;; 4) add_user ;; q) exit ;; *) echo "" esac done

(可左右滑动)

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(3)

4.ldif和keytab目录主要用于存放生成的ldif文件和keytab文件

3.脚本使用


1.在命令行执行如下命令,运行脚本

[root@cdh01 openldap-shell]# sh start_ldap.sh

(可左右滑动)

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(4)

输入“m”,返回操作命令提示。

2.创建一个faysontest用户并生成keytab文件

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(5)

命令行查看faysontest用户是否创建成功

[root@cdh01 openldap-shell]# id faysontest [root@cdh01 openldap-shell]# kinit -kt keytab/faysontest.keytab faysontest [root@cdh01 openldap-shell]# klist

(可左右滑动)

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(6)

4.总结


1.上述脚本添加用户依赖OPenLDAP的客户端,因此该脚本必须运行在部署OPenLDAP客户端的节点上。

2.创建Kerberos账号及导出keytab文件,使用kadmin命令则该脚本必须运行在kadmin服务所在节点上。

3.需要使用root或sudo权限用户执行

GitHub地址:

https://github.com/fayson/cdhproject/tree/master/openldap-shell

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0386-一键添加OpenLDAP用户及Kerberos账号(0386-一键添加OpenLDAP用户及Kerberos账号)(7)

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页