13.一键添加OpenLDAP用户及Kerberos账号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.一键添加OpenLDAP用户及Kerberos账号相关的知识,希望对你有一定的参考价值。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
提示:代码块部分可以左右滑动查看噢
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
(可左右滑动)
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
(可左右滑动)
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
(可左右滑动)
4.ldif和keytab目录主要用于存放生成的ldif文件和keytab文件
3.脚本使用
1.在命令行执行如下命令,运行脚本
[root@cdh01 openldap-shell]# sh start_ldap.sh
(可左右滑动)
输入“m”,返回操作命令提示。
2.创建一个faysontest用户并生成keytab文件
命令行查看faysontest用户是否创建成功
[root@cdh01 openldap-shell]# id faysontest
[root@cdh01 openldap-shell]# kinit -kt keytab/faysontest.keytab faysontest
[root@cdh01 openldap-shell]# klist
(可左右滑动)
4.总结
1.上述脚本添加用户依赖OPenLDAP的客户端,因此该脚本必须运行在部署OPenLDAP客户端的节点上。
2.创建Kerberos账号及导出keytab文件,使用kadmin命令则该脚本必须运行在kadmin服务所在节点上。
3.需要使用root或sudo权限用户执行
GitHub地址:
https://github.com/fayson/cdhproject/tree/master/openldap-shell
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
以上是关于13.一键添加OpenLDAP用户及Kerberos账号的主要内容,如果未能解决你的问题,请参考以下文章
docker下快速部署openldap与self-service-password
docker下快速部署openldap与self-service-password