我使用标准 do-release-upgrade 将我的 Ubuntu 服务器从 12.04 升级到 14.04。
升级后,我发现我的 OpenLDAP 目录数据被清除了。这是升级的意外结果。我认为很多人不会想到服务器上的数据会在标准升级过程中被清除或删除。
但肯定有人认为这是不可避免的和必要的,否则它就不是升级的一部分。现在的问题是,这个人或这些人是否也考虑过在这次意外的数据清除之后恢复数据。
我找不到任何信息。我该如何恢复这些数据?这些数据是否仍可在服务器上的某个地方轻松恢复?
安装现在看起来已经损坏,例如当我尝试
ostraaten@ubuntu:~$ sudo dpkg-reconfigure slapd
[sudo] password for ostraaten:
/usr/sbin/dpkg-reconfigure: slapd is broken or not fully installed
答案1
我按如下方式修复了此问题:使用以下方法完全删除 OpenLDAP
sudo service slapd stop
sudo apt-get -y remove --purge slapd
rm -rf /var/lib/ldap
sudo rm -rf /etc/ldap/
sudo apt-get -y remove --purge ldap-utils
使用类似脚本安装+恢复备份
#!/bin/bash
#
set -x #echo on
export LC_ALL=en_US.UTF-8
export DEBIAN_FRONTEND=noninteractive
echo -e " \
slapd slapd/internal/generated_adminpw password ******
slapd slapd/password2 password ******
slapd slapd/internal/adminpw password ******
slapd slapd/password1 password ******
slapd slapd/allow_ldap_v2 boolean false
slapd slapd/move_old_database boolean true
slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
slapd slapd/domain string mydomain.com
slapd slapd/dump_database select when needed
slapd slapd/invalid_config boolean true
slapd slapd/no_configuration boolean false
slapd shared/organization string MyDomain.com
slapd slapd/backend select HDB
slapd slapd/purge_database boolean true
slapd slapd/upgrade_slapcat_failure error
slapd slapd/password_mismatch note" | sudo debconf-set-selections
sudo apt-get install -y slapd ldap-utils
sudo usermod -a -G openldap user # add user user to openldap group
sudo service slapd status
sudo service slapd start
sudo slapcat
# change root-pw
cat <<EOT >> /home/ostraaten/1-olc-root-pw.ldif
dn: olcDatabase={1}hdb,cn=config
replace: olcRootPW
olcRootPW: {SSHA}******
EOT
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f 1-olc-root-pw.ldif
ldapwhoami -vvv -h localhost -p 389 -D cn=admin,dc=mydomain,dc=com -x -w ******
# add memberof attribuut
cat <<EOT >> 2-overlay.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
EOT
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f 2-overlay.ldif
# create schema using backup ldif
cat <<EOT >> 3-ok.ldif
dn: ou=people,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people
dn: ou=groups,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
# etc etc
EOT
ldapadd -h localhost -p 389 -D cn=admin,dc=mydomain,dc=com -w ****** -f 3-ok.ldif