之前安装了openldap服务和lam管理平台,接下来我们看看如何在ldap中添加多个不同的组和用户来实现不同平台使用不同组下的用户登陆。

创建Group

先创建一个组,如图:

创建用户

在刚才创建的组里创建用户,如图:

创建Group组

创建objectClass属性为groupOfUniqueNames的组gogs用于gogs登陆

其中cn为组名,uniqueMember为组下用户

为Gogs添加认证源

绑定DNLdap管理员的DN
绑定密码Ldap管理员密码
用户搜索基准ou=users,dc=jakehu,dc=me用户组
用户过滤规则
(&(objectClass=inetOrgPerson)(memberOf=cn=gogs,ou=groups,dc=jakehu,dc=me)(cn=%s))
实现不同平台不同分组的重点就是memberOf

更改认证源

如何将已经存在gogs用户改为ldap认证,如下图,更改用户的认证方式即可

Ldap

轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

摘自维基百科,关于LDAP概念和原理可以看看这篇文章 LDAP概念和原理介绍

服务端

镜像

1
docker pull osixia/openldap:1.3.0

容器

1
2
3
4
5
6
7
8
docker run -p 389:389 --name openldap --restart=always \
--env LDAP_ORGANISATION="jakehu" \
--env LDAP_DOMAIN="jakehu.me" \
--env LDAP_ADMIN_PASSWORD="jakehu" \
--env LDAP_CONFIG_PASSWORD="jakehu" \
--volume /data/database:/var/lib/ldap \
--volume /data/config:/etc/ldap/slapd.d \
--detach osixia/openldap:1.3.0

参数

端口:默认服务端口使用389端口
LDAP_ORGANISATION:机构组织
LDAP_DOMAIN:域
LDAP_ADMIN_PASSWORD:管理员(admin)密码
LDAP_CONFIG_PASSWORD:配置管理密码
/etc/ldap/slapd.d:配置文件
/var/lib/ldap:后端数据,默认为mdb

客户端

镜像

1
docker pull ldapaccountmanager/lam:7.2.RC1

容器

1
2
3
4
5
6
7
docker run -d --restart=always --name ldapaccountmanager -p 9880:80 \
--link openldap:openldap \
--env LDAP_DOMAIN=jakehu.me \
--env LAM_LANG=zh_CN \
--env LDAP_SERVER=ldap://openldap:389 \
--env LAM_PASSWORD=jakehu \
--detach ldapaccountmanager/lam:7.2.RC1

参数

LAM_LANG:语言
LDAP_SERVERLdap服务器
LAM_PASSWORDlam密码,默认用户名lam

配置

接下来访问http://IP:9880就能看到下面画面

点击LAM configuration进入配置界面


这里的密码,就是我们设置的LAM_PASSWORD

另外设置的LDAP_SERVERLDAP_DOMAIN都被体现出来了,最后在Account types中修改默认创建的两个组,这两个组会在首次登陆系统时提示创建

然后登陆创建我们刚设置的两个组

看下结构树,两个分组已经被创建了

到此就已经完成docker版的openldaplam的安装配置


o – organization(组织-公司)
ou – organization unit(组织单元-部门)
c - countryName(国家)
dc - domainComponent(域名)
sn – suer name(真实名称)
cn - common name(常用名称)

pip出现以下错误

1
2
3
4
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 6, in <module>
from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip._internal.cli.main'

经过排查应该是brew install openssh之后安装了python3.8的包导致的

卸载Openssh

利用rmtree卸载Openssh及其依赖

1
2
brew tap beeftornado/rmtree
brew rmtree openssh

Pip修复

python3 -m pip install --upgrade pip --user

基于Docker+Python对git项目自动提交

使用场景

第一个使用场景

自己本地有几个私有库,如hexo资料记载等…这些个私有库有事没事就需要push更改,所以需要自动提交

第二个使用场景

home-assistant安装在树莓派上,但是对于home-assistant的配置文件希望用git管理起来

使用

以上两个使用场景其实都是需要外挂盘符来操作的,接下来编写docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
version: '2'
services:
git-auto-push:
image: jakehu/git-auto-push:latest
container_name: git-auto-push
restart: always
volumes:
- /Web/项目1:/opt/Web/项目1
- /Web/项目2:/opt/Web/项目2
- /Web/项目3:/opt/Web/项目3
- /you_dir/.ssh/:/root/.ssh/

/opt/Web/勿修改,程序会自动读取/opt/Web/下一级目录作为需要监听的项目,.ssh挂载进去主要是不用单独去配置ssh key

启动:docker-compose up -d


Github地址

参考:GitPython操作Git

git

在使用git clone gogs项目的时候出现错误fatal: unable to fork ,原因是因为没有openssh,解决:brew install openssh

npm

问题如下:

1
2
3
4
5
> node-gyp rebuild
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
gyp: No Xcode or CLT version detected!

尝试解决:
1
2
xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

尝试失败了,再次尝试解决:
1
2
sudo rm -rf $(xcode-select -print-path)
xcode-select --install

先删除再重新安装问题解决,真是奇葩问题