作弊条: ldapmodify 删除项目属性
随便记一笔,备忘。
形如:
| |
这样一个项目,希望把后三项删掉。
共 11 篇文章。
随便记一笔,备忘。
形如:
| |
这样一个项目,希望把后三项删掉。
之前用的邮件系统是基于 postfix、Cyrus IMAPd、amavisd-new等软件在2006年搭建的,跑了5年多,作为不折腾会死星人,对这套系统一直有相当多的不满意,举例来说:
📜 历史文件已不具备现实意义
OpenLDAP 现已转为使用 lmdb。
今天帮陈总研究一个奇怪的问题的时候误操作导致机器停止ssh响应,遂请机房重启。由于机房做的是power cycle,导致部分数据丢失。先前在配置OpenLDAP时,忘记在其中配置checkpoint,另外也没有对这台机器的LDAP进行备份,因此只好尝试从现有的数据库中恢复。冗余不做,日子甭过;备份不做,十恶不赦!
记录一下修复过程。
第一件事是把出问题的数据库做一份备份:rsync -av /var/db/openldap-data/ /var/db/openldap-data.old/
接着尝试slapcat。出现下面的错误:
| |
尝试使用BerkeleyDB的修复工具修复:
| |
slapcat发现问题依旧。搜索Google发现答案基本上都是从备份中恢复,看了一下Oracle的网站,关于这类问题也没有很好的办法。尝试将bdb文件dump出来再load回去:
| |
再次slapcat,发现对另一文件报错,用类似的方法修补之后,slapcat成功。
将slapcat的输出导出到一个文件中: slapcat > /tmp/my.ldif
然后,删除OpenLDAP数据目录:rm /var/db/openldap-data/_* /var/db/openldap-data/[a-z]*
最后,重新使用导出的ldif文件恢复:slapadd -l /tmp/my.ldif。
至此,恢复完成。
trac确实是个好东西。为了方便(主要是为了少维护一个daemon考虑),我采用的方式是cgi方式(除此之外还有两种常见的用法,一种是使用trac自己的daemon,另一种是通过FastCGI)。
总算做完了OpenLDAP 2.4的port,就等kris同学一声令下了。这个版本的OpenLDAP有一些非常搞笑的能力,比如SQL Backend,等等。
I have submitted another patch for python-ldap. This time it’s error path.
I used to think that ldap_unbind() is the opposite of ldap_bind(), however I was wrong. Pierangelo Masarati (ando at openldap) pointed out that it was actually opposite of ldap_init(). So, do NOT expect init() -> bind() -> search() -> unbind() -> bind() would success, it’s simply wrong thing. You do not need to unbind() before you do another bind().
Just make a note.
今天给某个维护OpenLDAP相关port的老大提了几个patch,等他消息了。
另外就是Python自己也会有泄漏,而且居然是gc部分自己出了许多tuple,这年头:(
今天发现了OpenLDAP client库的一个内存泄漏(每次连接会漏掉大约80字节),并提交了ITS patch(4441),不过我觉得这里面上锁上的还是有点问题的,至少逻辑不是很清楚。