Suppression de LDAP pour revenir vers une SME de base
Transcription
Suppression de LDAP pour revenir vers une SME de base
25/11/2016 19:07 1/5 Suppression de LDAP pour revenir vers une SME de base Suppression de LDAP pour revenir vers une SME de base Cette page représente juste une prise de note pour une opération très particulière (suppression des paquets e-smith-base+ldap sur un serveur en production), ne suivez pas ces instructions à moins de savoir exactement ce que vous faites. Suppression des paquets expérimentaux e-smith-base+ldap et e-smith-samba+ldap Re-construction des "flat files" Parse LDIF La première étape est la reconstruction des fichiers /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow et /etc/samba/smbpasswd à partir des informations contenues dans LDAP. Ces informations sont disponibles sous forme de ldif: sv t /service/ldap cp -a /home/e-smith/db/ldap/domain.tld.ldif /root/ cd Copier le script suivant: #!/usr/bin/perl -w use Net::LDAP::LDIF; use Net::LDAP::Entry; use esmith::AccountsDB; my $ldifin = Net::LDAP::LDIF->new("domain.tld.ldif"); my $adb = esmith::AccountsDB->open_ro(); # /etc/passwd # root:x:0:0:root:/root:/bin/bash # login:x:uid:gid:comment:home:shell open(PASSWD,'>','passwd'); # /etc/shadow # dani:$1$i5ClE7rs$lnPBabdgteuy..bRML1:14040:0:99999:7::: # login:cryptpass:shadowLastChange:0:99999:7::: open(SHADOW,'>','shadow'); WikiT - https://wikit.firewall-services.com/ Last update: tuto:ipasserelle:divers:supprimer_auth_ldap https://wikit.firewall-services.com/doku.php/tuto/ipasserelle/divers/supprimer_auth_ldap 23/06/2014 14:59 # /etc/group # prive:x:5024:dani,jenny,admin,www # groupname:x:gid:member1,member2 open(GROUP,'>','group'); # /etc/gshadow # prive:!::dani,jenny,admin,www # groupname:!::member1,member2 open(GSHADOW,'>','gshadow'); # /etc/samba/smbpasswd # dani:5000:670056A568475A67BECA51:DEBEF5F77A35A7A6CA181647AB7C62:[U ]:LCT-484E8E73: # login:uid:sambaLMPassword:sambaNTPassword:sambaAcctFlags:LCT-00000000: open(SMBPASSWD,'>','smbpasswd'); # On parse while(! $ldifin->eof()){ my $entry = $ldifin->read_entry(); # On ne traite que les entrées type users ou computers (compte UNIX) # Attention, l'uid peut contenir le caractère "-" if ($entry->dn =~ /uid=(\w+-?(\w+)?\$?),ou=(Users|Computers)/){ my $login = $1; my $machine = $3; my $acc = $adb->get("$login") || $adb->get("admin"); my $type = $acc->prop('type') || ''; print "Checking $login\n"; # Si l'entrée est de type user, ou est l'entrée speciale admin (type system) #if ($type eq "user" || $login eq "admin"){ if ($type ne 'group'){ my $comment = $entry->get_value('cn'); my $gid = $entry->get_value('gidNumber'); my $uid = $entry->get_value('uidNumber'); my $pass = $entry->get_value('userPassword'); my $lmpass = $entry->get_value('sambaLMPassword') || 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; my $ntpass = $entry->get_value('sambaNTPassword') || 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; my $home = $entry->get_value('homeDirectory'); my $shell = $entry->get_value('loginShell'); my $sambaflag = $entry->get_value('sambaAcctFlags'); https://wikit.firewall-services.com/ Printed on 25/11/2016 19:07 25/11/2016 19:07 3/5 Suppression de LDAP pour revenir vers une SME de base my $shadowchange = $entry->get_value('shadowLastChange'); # On supprime {CRYPT} du champ pass $pass =~ s/\{crypt\}//gi; # Hack pour ne pas duppliquer le compte ntp $comment = '' if ($comment eq 'no comment'); print PASSWD "$login:x:$uid:$gid:$comment:$home:$shell\n"; print SHADOW "$login:$pass:$shadowchange:0:99999:7:::\n"; print GROUP "$login:x:$gid:\n"; print GSHADOW "$login:x:!::\n"; if (($type eq 'user' || $login eq 'admin') || $machine eq 'Computers'){ print SMBPASSWD "$login:$uid:$lmpass:$ntpass:$sambaflag:LCT-00000010:\n"; } } } elsif ($entry->dn =~ /cn=(\w+-?(\w+)?),ou=Groups/){ my $login = $1; my $acc = $adb->get("$login") || next; my $type = $acc->prop('type'); if ($type eq "group"){ my $gid = $entry->get_value('gidNumber'); my $members = join (',',$entry->get_value('memberUid')); print GROUP "$login:x:$gid:$members\n"; print GSHADOW "$login:x:!::$members\n"; } } } Puis lancer la moulinette perl ./flat_rebuild On se retrouve avec les fichiers /root/passwd, /root/shadow, /root/group, /root/gshadow et /root/smbpasswd. Il faut maintenant faire un merge de ces fichiers avec les existants. Merge des fichiers mkdir old mkdir new cp -a /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/samba/smbpasswd WikiT - https://wikit.firewall-services.com/ Last update: tuto:ipasserelle:divers:supprimer_auth_ldap https://wikit.firewall-services.com/doku.php/tuto/ipasserelle/divers/supprimer_auth_ldap 23/06/2014 14:59 ./old for F in passwd shadow group gshadow; do cat $F old/$F | sort | uniq > new/$F done cat smbpasswd > new/smbpasswd Une fois tout vérifié, on copie les nouveaux fichiers à la place des anciens: for F in passwd shadow group gshadow; do cp -a /etc/$F /etc/$F.old2 cat new/$F > /etc/$F done cp -a /etc/samba/smbpasswd /etc/samba/smbpasswd.old2 cat new/smbpasswd > /etc/samba/smbpasswd Ré-installation de e-smith-base Pour remettre les paquets de base, la commande suivante devrait suffire: yum install e-smith-base e-smith-samba e-smith-ldap Ils remplaceront automatiquement leurs homologues +ldap (même si avant de confirmer, yum ne l'indique pas). Flush de la base LDAP La base LDAP doit être vidée pour être ré-initialisée avec les valeurs par défaut par le couple postupgrade/reboot sv d /service/ldap cd /var/lib/ldap tar cvzf ~/ldap_pre_modif.tar.gz ./* /home/e-smith/db/ldap/* rm -f /var/lib/ldap/* expand-template /home/e-smith/db/ldap/ldif expand-template /etc/nsswitch.conf expand-template /etc/pam.d/system-auth From: https://wikit.firewall-services.com/ - WikiT Permanent link: https://wikit.firewall-services.com/doku.php/tuto/ipasserelle/divers/supprimer_auth_ldap Last update: 23/06/2014 14:59 https://wikit.firewall-services.com/ Printed on 25/11/2016 19:07 25/11/2016 19:07 5/5 WikiT - https://wikit.firewall-services.com/ Suppression de LDAP pour revenir vers une SME de base