2021/8/21,2022/5/2
apt -y install slapd ldap-utils
systemctl status slapd
# slapcatdn: dc=...., creatorsName: cn=...., modifiersName: cn=....を確認する。
dn: dc=takahashi,dc=lab LDAPドメインを確認 objectClass: top objectClass: dcObject objectClass: organization o: takahashi.lab dc: takahashi structuralObjectClass: organization entryUUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx creatorsName: cn=admin,dc=takahashi,dc=lab 管理者を確認 createTimestamp: 20210821072808Z entryCSN: 20210821072808.785098Z#000000#000#000000 modifiersName: cn=admin,dc=takahashi,dc=lab 管理者を確認 modifyTimestamp: 20210821072808Z
# base.ldif (2021/08/21) cat << 'EOL' > base.ldif dn: ou=people,dc=takahashi,dc=lab objectClass: organizationalUnit ou: people dn: ou=group,dc=takahashi,dc=lab objectClass: organizationalUnit ou: group EOL
ldapadd -x -D cn=admin,dc=takahashi,dc=lab -W -f base.ldif #または #ldapadd -x -D cn=admin,dc=takahashi,dc=lab -w xxxxxx -f base.ldifbase.ldifの登録に成功すると adding new entry と表示する。
adding new entry "ou=people,dc=takahashi,dc=lab" adding new entry "ou=group,dc=takahashi,dc=lab"登録内容を確認する。
slapcatdn: ou=people,dc=takahashi,dc=labとdn: ou=group,dc=takahashi,dc=labを確認する。
root@He:~/LDAP# slapcat dn: dc=takahashi,dc=lab objectClass: top objectClass: dcObject objectClass: organization o: takahashi.lab dc: takahashi structuralObjectClass: organization entryUUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx creatorsName: cn=admin,dc=takahashi,dc=lab createTimestamp: 20210821072808Z entryCSN: 20210821072808.785098Z#000000#000#000000 modifiersName: cn=admin,dc=takahashi,dc=lab modifyTimestamp: 20210821072808Z dn: ou=people,dc=takahashi,dc=lab objectClass: organizationalUnit ou: people structuralObjectClass: organizationalUnit entryUUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx creatorsName: cn=admin,dc=takahashi,dc=lab createTimestamp: 20210821073112Z entryCSN: 20210821073112.631738Z#000000#000#000000 modifiersName: cn=admin,dc=takahashi,dc=lab modifyTimestamp: 20210821073112Z dn: ou=group,dc=takahashi,dc=lab objectClass: organizationalUnit ou: group structuralObjectClass: organizationalUnit entryUUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx creatorsName: cn=admin,dc=takahashi,dc=lab createTimestamp: 20210821073112Z entryCSN: 20210821073112.643006Z#000000#000#000000 modifiersName: cn=admin,dc=takahashi,dc=lab modifyTimestamp: 20210821073112Z間違えた時は"ou=people"と"ou=group"を削除する。base.ldifを修正した後、再登録する。
ldapdelete -x -D cn=admin,dc=takahashi,dc=lab "ou=people,dc=takahashi,dc=lab" -W ldapdelete -x -D cn=admin,dc=takahashi,dc=lab "ou=group,dc=takahashi,dc=lab" -W
mkdir ~/LDAP;cd ~/LDAP #password生成 cd ~/LDAP;slappasswd -s xxxxxxxx > xxxxxxxx.ssha
#!/bin/bash #~/LDAP/myldapadd.sh usename # uid = username(serial number) i.e. 12345 SUFFIX='dc=takahashi,dc=lab' USERLDIF='ldapuser.ldif' CN=$1 USERDIR=/NFS/$CN PASS=`cat ../PASS.pw` #------------ # ldapuser.ldif echo "dn: uid=$CN,ou=people,$SUFFIX" >> $USERLDIF echo "objectClass: inetOrgPerson" >> $USERLDIF echo "objectClass: posixAccount" >> $USERLDIF echo "objectClass: shadowAccount" >> $USERLDIF echo "cn: $CN" >> $USERLDIF echo "sn: $CN" >> $USERLDIF echo "userPassword: $PASS" >> $USERLDIF echo "loginShell: /bin/bash" >> $USERLDIF echo "uidNumber: $CN" >> $USERLDIF echo "gidNumber: $CN" >> $USERLDIF echo "homeDirectory: $USERDIR" >> $USERLDIF echo >> $USERLDIF #ldapgroup.ldif echo "dn: cn=$CN,ou=group,$SUFFIX" >> $USERLDIF echo "objectClass: posixGroup" >> $USERLDIF echo "cn: $CN" >> $USERLDIF echo "gidNumber: $CN" >> $USERLDIF echo "memberUid: $CN" >> $USERLDIF echo >> $USERLDIF #user dir(home dir) mkdir $USERDIR chmod 700 $USERDIR cp -R /etc/skel/* $USERDIR/ cp -R /etc/skel/.[A-z]* $USERDIR/ ln -s /tmp $USERDIR/.cache chown -R $CN:$CN $USERDIR
# mkdir ~/LDAP/20220502 cd ~/LDAP/20220502ユーザ情報の生成・登録作業を行う。一件づつ登録してもよいが、ユーザが多いときはスクリプト(user.sh)を作成してもよい。
#!/bin/bash #cd ~/LDAP/20220502;./user.sh #2022/05/02 myldapadd.shを修正 ldapファイルを簡略 #delete students 旧ユーザを削除 #ldapdelete -x -D "cn=admin,dc=takahashi,dc=lab" -w aabn1055 "cn=xxxxx,ou=Group,dc=takahashi,dc=lab" #ldapdelete -x -D "cn=admin,dc=takahashi,dc=lab" -w aabn1055 "uid=xxxxx,ou=people,dc=takahashi,dc=lab" #rm -rf /NFS/xxxxx #古いldapuser.ldifがあるときは削除 echo > ldapuser.ldif #add students 新規ユーザを登録用ldifファイルを生成 #passwordを指定 USERPASSWORD cp ../USERPASSWORD.ssha ../PASS.pw # ユーザ21000を登録----ldap.ldifを生成 ../myldapadd.sh 21000 #add students 113xx 連番で登録 #for SN in `seq 11301 11337`;do # ../myldapadd.sh $SN #done #ldifファイルを登録 ldapadd -x -D cn=admin,dc=takahashi,dc=lab -w aabn1055 -f ldapuser.ldif ldapsearch -x -b dc=takahashi,dc=lab
#ldapdelete -x -D "cn=admin,dc=takahashi,dc=lab" -w xxxxxxxx "uid=10300,ou=people,dc=takahashi,dc=lab" #ldapdelete -x -D "cn=admin,dc=takahashi,dc=lab" -w xxxxxxxx "cn=10300,ou=Group,dc=takahashi,dc=lab"
#全員を表示 #ldapsearch -x -b dc=takahashi,dc=lab #ユーザ(uid)を指定して表示 #ldapsearch -x -b "uid=10300,ou=people,dc=takahashi,dc=lab"
2022/5/2
apt -y install slapd ldap-utilsmod_syncprov.ldif,syncprov.ldifを新規に登録する。 mod_syncprov.ldif,syncprov.ldifは共通なので、1台目で作成したものをコビーしてよい。
cat << 'EOF' > mod_syncprov.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib/ldap olcModuleLoad: syncprov.la EOF cat << 'EOF' > mod_syncprov.ldif dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpSessionLog: 100 EOF ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldifmaster.ldifをつくる。
cat << 'EOF' > master.ldif dn: cn=config changetype: modify replace: olcServerID olcServerID: 101 dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://xx.xx.xx.xx:389/ bindmethod=simple binddn="cn=admin,dc=takahashi,dc=lab" credentials=xxxxxxxx searchbase="dc=takahashi,dc=lab" scope=sub schemachecking=on type=refreshAndPersist retry="30 5 300 3" interval=00:00:05:00 - add: olcMirrorMode olcMirrorMode: TRUE dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov EOF ldapmodify -Y EXTERNAL -H ldapi:/// -f master.ldif