这几天在搞kerberos+nfs4 没搞成 之前搞了个openldap实现了分散控制集中管理(不是DCS...)
gitlab和nexus也支持ldap 虽然都不咋好用 但是在搞gitlab的时候发现memberOf这个玩意就是用不了
查了半天资料才知道这玩意默认是没加载的 特此记录笔记
参考:https://blog.csdn.net/u011607971/article/details/119037796
他是centos的系统(大概) 我是ubuntu 所以有些配置文件要改
先说系统环境 docker安装的osixia/openldap:1.4.0 里面openldap的版本是 slapd 2.4.50+dfsg-1~bpo10+1
容器内系统是Linux openldap 5.4.0-137-generic #154-Ubuntu
ldap目录是这样的 无视那个kerberos及其相关元素 那玩意折腾的我想放弃了 学shiro都没他费劲
找个地方写个文件add_memberof_module.ldif 然后 ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_memberof_module.ldif 写进数据库 内容如下
dn: cn=module,cn=config cn: module objectClass: olcModuleList olcModulePath: /usr/lib/ldap <------这里是你的ldap的lib库的位置 dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: memberof.la
然后是add_groupofnames_module.ldif 同样 ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_groupofnames_module.ldif 写进数据库
dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config <------我这里是{1}mdb 他是{2}hdb 应该是ldap版本差异 我是2.4.50 安装的时候都没见到让选hdb还是mdb objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfNames olcMemberOfMemberAD: member olcMemberOfMemberOfAD: memberOf
弄完了之后去添加组 类型为groupOfNames 注意不要选posixGroup 然后给这个组里添加用户 弄完了就像这样
然后去gitlab.rb改配置
gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in'] = false ###! **remember to close this block with 'EOS' below** gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' host: '10.0.0.1' port: 389 uid: 'uid' bind_dn: 'cn=admin,dc=erika,dc=cn' password: '密码' encryption: 'plain' # "start_tls" or "simple_tls" or "plain" #verify_certificates: true #smartcard_auth: false active_directory: true allow_username_or_email_login: true lowercase_usernames: false block_auto_created_users: false base: 'ou=People,dc=erika,dc=cn' group_base: 'ou=Group,dc=erika,dc=cn' user_filter: '(memberOf=cn=gitlab,ou=Group,dc=erika,dc=cn)' attributes: username: ['uid','cn','sAMAccountName'] email: ['mail','email','userPrincipalName'] name: 'cn' first_name: 'givenName' last_name: 'sn' ## EE only #group_base: '' #admin_group: '' #sync_ssh_keys: false EOS
至于user_filter外面的括号括不括 我也不知道 反正这样能用 不过好像是多个条件才必须要加括号
然后gitlab-ctl reconfigure 等他重新加载完配置 就能用了 另外建议笔记本用户不要用ldap这种认证方式登录系统 在没连到ldap服务器的时候或者dns出错的时候登录会等好长时间 我感觉这玩意搞服务认证就够了
标签:cn,memberof,gitlab,module,openldap,ldap From: https://www.cnblogs.com/panther1942/p/17067317.html