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