如何在Gitlab或Ubuntu终端查看所有LDAP用户及其详细信息?
当然有办法啦!我来分Ubuntu终端和GitLab两个场景给你详细说明:
首先得先装个LDAP客户端工具,没装的话在终端跑这行命令:sudo apt-get update && sudo apt-get install ldap-utils
接下来用ldapsearch这个核心命令来查询,基本用法是这样的:ldapsearch -x -H ldap://你的LDAP服务器地址 -D "绑定用户DN" -W -b "搜索基准DN" "(objectClass=user)"
我给你拆解下每个参数的作用:
-x:用简单认证模式(不需要复杂的SASL认证)-H:指定你的LDAP服务器地址,比如ldap://ldap.yourcompany.com-D:绑定的管理员DN,比如cn=admin,dc=yourcompany,dc=com-W:让你交互式输入绑定密码,避免明文写在命令里更安全-b:搜索的起始位置(基准DN),比如你要查所有用户,就写ou=users,dc=yourcompany,dc=com(objectClass=user):过滤条件,只返回用户类型的对象,你也可以改成(cn=张三)来精准查找某个用户
如果只想看CN、OU、DC这些特定属性,直接在命令末尾加上属性名就行,比如:ldapsearch -x -H ldap://ldap.yourcompany.com -D "cn=admin,dc=yourcompany,dc=com" -W -b "ou=users,dc=yourcompany,dc=com" "(objectClass=user)" cn ou dc
这样返回的结果就只包含你需要的这些信息,不会乱糟糟的。
GitLab本身和LDAP集成得很好,有两种方式可以查看:
1. 通过GitLab管理员界面
登录你的GitLab管理员账号,进入Admin Area(管理员区域),点击左侧菜单栏的Users,然后切换到LDAP标签页。这里会列出所有通过LDAP同步过来的用户,点进任意用户的详情页,就能看到他们的LDAP相关属性(包括CN、OU、DN这些信息)。
2. 通过GitLab Rails控制台批量查询
如果需要批量导出或者查看更底层的LDAP属性,可以用GitLab的Rails控制台:
先登录GitLab服务器的终端,运行:sudo gitlab-rails console
然后执行这段Ruby代码(记得把ldapmain改成你GitLab配置里的LDAP提供者名称,比如你配置的是ldap1就换这个):
User.where(identities: { provider: 'ldapmain' }).each do |user| ldap_id = user.identities.find_by(provider: 'ldapmain') puts "用户名: #{user.name}, LDAP DN: #{ldap_id.extern_uid}" # 如果要获取更多LDAP原生属性,可以这么查: # ldap_entry = Gitlab::Auth::Ldap::Adapter.new('ldapmain').find_user(ldap_id.extern_uid) # puts "所属OU: #{ldap_entry.ou}, 域名DC: #{ldap_entry.dc}" end
执行后就会批量输出所有LDAP用户的关键信息啦。
内容的提问来源于stack exchange,提问作者Rajana Deepak

