LDAP如何增加用户

LDAP如何增加用户,第1张

增加用户

public boolean addUserToLdap(String userCn) {

LdapContext ctx = getLdapConnection() //AD认证,获取Ldap连接对象ctx

Attributes attrsbu = new BasicAttributes(true)

BasicAttribute objclassSet = new BasicAttribute("objectclass")

for (String _class : LdapConfig.userObjectClass.split(",")) {

objclassSet.add(_class.trim()) //加入一些基本元素top,person,organizationalPerson,user

}

boolean isExist = this.searchUser(ctx, userCn)//添加用户前先查找AD中是否存在该用户

if (isExist == false){

attrsbu.put(objclassSet)

attrsbu.put(new BasicAttribute("cn", userCn)) //userCn:要添加的用户

attrsbu.put(new BasicAttribute("sAMAccountName", userCn))

attrsbu.put(new BasicAttribute("sn", userCn))

attrsbu.put(new BasicAttribute("displayName", userCn))//AD中显示的名称

attrsbu.put(new BasicAttribute("userPrincipalName", userCn + LdapConfig.domainName))

try {

String userDn = "cn=" +userCn + ","+ LdapConfig.userRootDn

ctx.createSubcontext(userDn, attrsbu) //添加用户到Ldap

System.out.println("[addUserToLdap] Add User:" + userDn)

ModificationItem[] mods = new ModificationItem[2]

//此密码必须注意:得到的字符串是""password""这种格式

String newQuotedPassword = LdapConfig.user_default_password

byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE")

mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,

new BasicAttribute(LdapConfig.password_field,newUnicodePassword))

mods[1] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,

new BasicAttribute(LdapConfig.userAccountControl,Integer.toString(

UF_NORMAL_ACCOUNT

+ UF_PASSWORD_EXPIRED

+ UF_DONT_EXPIRE_PASSWD)))

ctx.modifyAttributes(userDn, mods) //更改用户密码和权限

} catch (Exception e1){

e1.printStackTrace()

destroyLdapConnection(ctx)

return false

}

}else{

System.out.println("isExist :" + isExist + "用户:" + userCn + "已存在")

}

destroyLdapConnection(ctx)

return true

}

目的:linux系统默认使用自己的Unix用户,我们有时需要多台主机都使用同一个用户,这样的还用户管理就比较麻烦。比较简单的解决方法是配置这些linux主机都使用同一个ldap的用户,这样只需要在ldap中进行用户更改即可,不再需要所有主机都进行更改了。

配置客户端:

a、安装ldap客户端:

yum install nss-pam-ldapd pam_ldap -y 

b、图形化配置:

LANG=C authconfig-tui

或者用命令修改

authconfig --enablemkhomedir --disableldaptls --enableldap --enableldapauth --ldapserver=ldap://110.1.236.51 --ldapbasedn='dc=yinkp,dc=com' --update

cat /etc/sysconfig/authconfig |grep yes 

1、增加/etc/openldap/ldap.conf

2、修改 /etc/nsswitch.conf中sss为ldap

3、 修改/etc/pam.d/system-auth,/etc/pam.d/password-auth

sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/system-auth

sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/password-auth

4、修改sssd配置文件:

vi /etc/sssd/sssd.conf

5、修改nslcd配置文件:

vi /etc/nslcd.conf

6、重启nslcd/sssd

service nslcd restart

service sssd restart

验证:

切换为系统中没有,ldap中有的用户。如果OK,则成功。

ldapsearch -x -b 'ou=people,dc=yinkp,dc=com'

批量修改主机使用ldap用户:

分发上面已经配置好的主机上的文件到其它linux主机

注:如果没有分发脚本,也可以一个一个文件scp

deploy.sh /etc/sysconfig/authconfig /etc/sysconfig/ all

deploy.sh /etc/openldap/ldap.conf /etc/openldap/ all

deploy.sh /etc/nsswitch.conf /etc/ all

deploy.sh /etc/pam.d/system-auth /etc/pam.d/ all

deploy.sh /etc/sssd/sssd.conf /etc/sssd/ all

deploy.sh /etc/nslcd.conf /etc/ all

重启nslcd/sssd服务

runRemoteCmd.sh "/bin/systemctl restart  nslcd.service &&/bin/systemctl restart  sssd.service" ldap_client


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11531583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存