事情的背景是这样的,自建的confluence并集成了ldap验证,且关闭了原有的内部账号登录,见下:
本来ldap上有三个confluence用户组:
但是某天内部服务器挂了,好在cf的数据库和备份文件都在,恢复ldap server和confluence数据之后发现我的账号没有管理员权限了。仔细查看发现两个问题:
- ldap上缺少了cf-administrators组,原因未知,貌似在ldap server恢复时丢了
- confluence数据库中的cwd_group表中也缺少了相应的组信息,原因未知,因为这个库表和平时的开发数据在一起(不应该),可能是被误删,也可能是confluence恢复时丢的
最后挨个看confluence的表,连蒙带猜:
cwd_user:用户表,系统内置用户和从ldap同步过来的用户都在这里
cwd_group:用户组表,系统内置用户组和从ldap同步过来的用户组都在这里
cwd_membership:用户和组的关联关系
SPACEPERMISSIONS:组权限配置,其中permtype字段似乎代表管理权限:
最后在ldap上创建了丢失的cf-administrators组、将相应人员加入组,确认了上述几个表的数据正确后,重启confluence(为了能同步一下ldap数据)就能登录了。
中间还尝试过反编译confluence.jar的源码,去掉了permission拦截器,但是失败了。