[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 3 # $Id: se3_change_uid.sh 7744 2013-03-31 23:47:51Z keyser $ 4 # Script de changement d'uid 5 # Auteur: Stephane Boireau 6 7 if [ -z "$2" -o "$1" = "-h" -o "$1" = "--help" ]; then 8 echo "USAGE: Script de changement d'uid." 9 echo " Passer en parametres l'ancien uid et le nouveau." 10 echo " Exemple:" 11 echo " $0 ancien_uid nouvel_uid" 12 echo "" 13 echo " Pour modifier aussi l'uid dans le profil Thunderbird:" 14 echo " $0 ancien_uid nouvel_uid y" 15 echo " Attention: Si Thunderbird contient des comptes autres que celui du SE3," 16 echo " il se peut qu'il ne faille pas modifier le profil Thunderbird." 17 exit 18 fi 19 20 # Caracteres autorises 21 caracteres_autorises="a-z0-9\.-" 22 23 ladate=$(date +%Y%m%d%H%M%S) 24 tmp=/var/se3/save/modification_ldap/$ladate 25 mkdir -p $tmp 26 27 ancien_uid=$1 28 nouvel_uid=$2 29 modif_thund_prefjs=$3 30 31 WWWPATH="/var/www" 32 33 # recup parametres ldap 34 . /etc/se3/config_l.cache.sh 35 # recup parametres caches : 36 . /etc/se3/config_m.cache.sh 37 . /etc/se3/config_d.cache.sh 38 39 # Tester si l'ancien uid existe 40 t=$(ldapsearch -xLLL -b $peopleRdn,$ldap_base_dn uid=$ancien_uid) 41 if [ -z "$t" ]; then 42 echo "ABANDON: L'uid $ancien_uid n'existe pas dans la branche People." 43 exit 44 fi 45 46 # Tester si le nouvel uid existe déja 47 t=$(ldapsearch -xLLL -b $peopleRdn,$ldap_base_dn uid=$nouvel_uid) 48 if [ -n "$t" ]; then 49 echo "ABANDON: Le nouvel uid $nouvel_uid existe deja dans la branche People." 50 exit 51 fi 52 53 t2=$(ldapsearch -xLLL -b $trashRdn,$ldap_base_dn uid=$nouvel_uid) 54 if [ -n "$t2" ]; then 55 echo "ABANDON: Le nouvel uid $nouvel_uid existe deja dans la branche Trash." 56 exit 57 fi 58 59 # Tester si le nouvel uid est correctement formate 60 t=$(echo "$nouvel_uid"|tr "[A-Z]" "[a-z]"|sed -e "s|[$caracteres_autorises]*||g") 61 if [ -n "$t" ]; then 62 echo "ABANDON: Le nouvel uid $nouvel_uid contient des caracteres non autorises: $t" 63 exit 64 fi 65 66 # Modif dans l'annuaire 67 # Extraction du dn: uid=$ancien_uid,... 68 echo "Sauvegarde de l'entree $ancien_uid}" 69 ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $peopleRdn,$ldap_base_dn uid=$ancien_uid > $tmp/svg_$ancien_uid}.ldif 70 if [ "$?" != "0" ]; then 71 echo "ABANDON: Il s'est produit une erreur lors de la sauvegarde." 72 echo " On ne modifie pas l'uid." 73 exit 74 fi 75 76 # Modification du LDIF 77 cat $tmp/svg_$ancien_uid}.ldif|sed -e "s|^dn: uid=$ancien_uid,|dn: uid=$nouvel_uid,|;s|^uid: $ancien_uid$|uid: $nouvel_uid|;s|^mail: $ancien_uid@|mail: $nouvel_uid@|;s|^homeDirectory: /home/$ancien_uid$|homeDirectory: /home/$nouvel_uid|;" > $tmp/modif_uid_$ancien_uid}_vers_$nouvel_uid}.ldif 78 if [ "$?" != "0" ]; then 79 echo "ABANDON: Il s'est produit une erreur lors de l'operation de modification" 80 echo " sur la sauvegarde." 81 echo " On ne modifie pas l'uid." 82 exit 83 fi 84 85 # Suppression de l'ancienne entree 86 echo "Suppression de l'ancienne entree $ancien_uid" 87 ldapdelete -x -D $adminRdn,$ldap_base_dn -w $adminPw uid=$ancien_uid,$peopleRdn,$ldap_base_dn 88 if [ "$?" != "0" ]; then 89 echo "ABANDON: Il s'est produit une erreur lors de la suppression de l'ancienne entree." 90 echo " On ne poursuit pas." 91 exit 92 fi 93 94 # Import de la nouvelle entree 95 echo "Import de la nouvelle entree $nouvel_uid" 96 ldapadd -x -D $adminRdn,$ldap_base_dn -w $adminPw -f $tmp/modif_uid_$ancien_uid}_vers_$nouvel_uid}.ldif 97 if [ "$?" != "0" ]; then 98 echo "ABANDON: Il s'est produit une erreur lors de l'ajout de la nouvelle entree." 99 echo " On ne poursuit pas." 100 exit 101 fi 102 103 if [ -e "/home/$ancien_uid" ]; then 104 mv /home/$ancien_uid /home/$nouvel_uid 105 fi 106 107 # Faut-il corriger les 108 # /home/$ancien_uid/profil/appdata/Mozilla/Firefox/Profiles/default/prefs.js 109 # /home/$ancien_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js 110 # /home/$ancien_uid/Docs/desktop.ini 111 # ? 112 113 114 if [ "$modif_thund_prefjs" = "y" -a -e /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js ]; then 115 cp /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js.$ladate 116 echo "Correction du /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js" 117 sed -i "s|/$ancien_uid@|/$nouvel_uid@|;s|\"$ancien_uid@|\"$nouvel_uid@|;s|\"$ancien_uid\");|\"$nouvel_uid\");|" /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js 118 fi 119 120 # Modification des member 121 echo "Correction des appartenances member" 122 cpt=0 123 ldapsearch -xLLL member=uid=$ancien_uid,$peopleRdn,$ldap_base_dn | grep "^dn: " | cut -d"," -f1,2 | while read A 124 do 125 echo "$A,$ldap_base_dn 126 changetype: modify 127 add: member 128 member: uid=$nouvel_uid,$peopleRdn,$ldap_base_dn 129 - 130 delete: member 131 member: uid=$ancien_uid,$peopleRdn,$ldap_base_dn 132 " >> $tmp/modif_member_$cpt.ldif 133 134 #cat $tmp/modif_memberUid_$cpt.ldif 135 ldapmodify -x -D $adminRdn,$ldap_base_dn -w $adminPw -f $tmp/modif_member_$cpt.ldif 136 #sleep 1 137 138 cpt=$(($cpt+1)) 139 done 140 141 # Modification des memberUid 142 echo "Correction des appartenances memberUid" 143 cpt=0 144 ldapsearch -xLLL memberUid=$ancien_uid | grep "^dn: " | cut -d"," -f1,2 | while read A 145 do 146 echo "$A,$ldap_base_dn 147 changetype: modify 148 add: memberUid 149 memberUid: $nouvel_uid 150 - 151 delete: memberUid 152 memberUid: $ancien_uid 153 " >> $tmp/modif_memberUid_$cpt.ldif 154 155 #cat $tmp/modif_memberUid_$cpt.ldif 156 ldapmodify -x -D $adminRdn,$ldap_base_dn -w $adminPw -f $tmp/modif_memberUid_$cpt.ldif 157 #sleep 1 158 159 cpt=$(($cpt+1)) 160 done 161 162 # Y a-t-il des enregistrements ailleurs? dans mysql? 163 164 # Parcours des ACL? 165 # Non... Apparemment, en modifiant dans le ldap, c'est OK. 166 # Les acl doivent donc reposer sur les uidNumber 167 168 echo "Termine." 169 170 if [ "$modif_thund_prefjs" != "y" ]; then 171 echo "Il se peut qu'il faille corriger le fichier: 172 /home/$nouvel_uid/profil/appdata/Thunderbird/Profiles/default/prefs.js 173 s'il existe." 174 fi
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |