这几天在搞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出错的时候登录会等好长时间 我感觉这玩意搞服务认证就够了

【笔记】gitlab+openldap使用memberof筛选登录用户的更多相关文章

  1. UNIX环境编程学习笔记(8)——文件I/O之校验当前登录用户对文件的访问权限

    lienhua342014-09-03 通过前面一篇随笔(文件访问权限与进程访问控制),我们知道内核校验文件的访问权限使用的是进程的有效用户 ID 和有效组 ID.但有时我们需要知道当前登录用户对某个 ...

  2. odoo开发笔记 -- 用户字段值,默认给当前登录用户

    场景描述: 在一些视图下,当系统用户创建某条记录的时候,需要给某个用户字段设置默认值,即:默认值为系统的当前登录用户,如何实现? 处理方式: 在定义模型的时候,给该字段赋值就可以: operator_ ...

  3. Linux学习笔记(八)Linux常用命令:用户登录查看命令

    一.查看登录用户信息 w [用户名] 二.Who who 三.查询当前登录和过去登陆的用户信息 last 四.查看所有用户最后一次登录时间 lastlog

  4. Linux查看用户数、登录用户

    如果是系统中全部只要默认shell是bash的就包括那么二楼正解,就是cat /etc/passwd|grep bash|wc -l如果是正在登陆系统的账户中使用bash shell的,那么ps -e ...

  5. GitLab 社区版 11.0.2用户管理教程

    Gitlab地址:http://xx.xx.xx.xx/users/sign_in 登录之后,主界面 右上角功能按钮,分别为管理区域.新建.问题.合并请求.待办事件.个人设置 选择管理区域按钮 可以根 ...

  6. Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)

    Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...

  7. (2.2)学习笔记之mysql基础操作(登录及账户权限设置)

    本系列学习笔记主要讲如下几个方面: 本文笔记[三:mysql登录][四:账户权限设置][五:mysql数据库安全配置] 三.mysql登录 常用登录方式如下: 四.账户权限设置 (4.1)查看用户表, ...

  8. Windows下如何查看当前登录用户

    1.通过whoami命令查看 2.通过username变量查看,具体命令如下:echo %username% 上述两种方法只能查看当前会话用户信息,那么如何看到其他登录用户呢? 可以通过执行query ...

  9. 红帽学习笔记[RHCE]OpenLDAP 服务端与客户端配置

    目录 OpenLDAP 服务端与客户端配置 关于LDIF 一个LDIF基本结构一个条目 属性 Object的类型 服务端 安装 生成证书 生成默认数据 修改基本的配置 导入基础数据 关于ldif的格式 ...

  10. gitlab修改(重置)root用户密码

    gitlab修改(重置)root用户密码 1.使用root权限登录到服务器. 2.使用以下命令启动控制台:  gitlab-rails console production 该命令有时候启动比较慢,需 ...

随机推荐

  1. dvwa靶场

    brute force LOW 输入账号密码直接抓包就行 接着ctrl+i传输到intruder模块中 为需要爆破的加上 §,不爆破的不加 选择攻击类型为Cluster bomb,选择username ...

  2. 免杀之:C# XOR Shellcode

    免杀之:C# XOR Shellcode 目录 免杀之:C# XOR Shellcode 1 环境准备 2 制作Shellcode后门文件 2.1 编译环境准备 2.2 生成XORKryptor程序 ...

  3. 代码随想录算法训练营day14 | leetcode 层序遍历 226.翻转二叉树 101.对称二叉树 2

    层序遍历 /** * 二叉树的层序遍历 */ class QueueTraverse { /** * 存放一层一层的数据 */ public List<List<Integer>&g ...

  4. 【前端】js实现图片自适应

    一.问题分析 既然要实现图片自适应,那就要对不同的图片尺寸进行分类处理,我最开始是分了5类 对于长宽都不超过的情况 -- 应该不改变图片本身比例 对于长宽都超过的情况 -- 应该是根据图片比例进行缩小 ...

  5. unity puerTS热更

    https://blog.csdn.net/yupu56/article/details/120766597

  6. qt_2d画图

    qt中如何画图? 使用Qpainter类进行2D绘画 例如以下代码进行直线的绘制 QPainter painter(this);painter.setPen(Qt::red);painter.draw ...

  7. 问题记录——mysql服务忘记root密码后加skip-grant-tables 跳过权限认证参数启动报错处理

    问题描述: 误操作将root密码重置后root原先密码登录不上,加skip-grant-tables 参数数据库启动失败,排查错误日志如下: 由于Mysql节点用到了半同步复制,尝试把半同步参数去掉试 ...

  8. USACO2023Jan游记

    由于学校要求,过来打 USACO. 似乎要求起码升到白金? 由于是第一次打,只有从铜组开始了. Brouze 简单题,就给核心代码. 30min AK. Leaders http://usaco.or ...

  9. Matplotlib 网格线

    我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线. grid() 方法语法格式如下: matplotlib.pyplot.grid(b=None, which='major', ...

  10. 如何使用visual studio code的插件remote ssh远程操作virtual box虚拟机

    0 Remote-SSH是什么?为什么要用它? The Remote-SSH extension lets you use any remote machine with a SSH server a ...