13.一键添加OpenLDAP用户及Kerberos账号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.一键添加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

(可左右滑动)


13.一键添加OpenLDAP用户及Kerberos账号_添加用户


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

(可左右滑动)


13.一键添加OpenLDAP用户及Kerberos账号_github_02


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

(可左右滑动)


13.一键添加OpenLDAP用户及Kerberos账号_github_03


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


3.脚本使用



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


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

(可左右滑动)


13.一键添加OpenLDAP用户及Kerberos账号_github_04


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


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


13.一键添加OpenLDAP用户及Kerberos账号_github_05


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


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

(可左右滑动)


13.一键添加OpenLDAP用户及Kerberos账号_github_06


4.总结



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


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


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


GitHub地址:

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



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


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

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



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

13.一键添加OpenLDAP用户及Kerberos账号_添加用户_07

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


以上是关于13.一键添加OpenLDAP用户及Kerberos账号的主要内容,如果未能解决你的问题,请参考以下文章

03-openldap服务端安装配置

docker下快速部署openldap与self-service-password

docker下快速部署openldap与self-service-password

docker下快速部署openldap与self-service-password

Openldap导入数据

Grails OpenLDAP 登录失败:抱歉,我们无法找到具有该用户名和密码的用户