tuto:ipasserelle:divers:supprimer_auth_ldap

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tuto:ipasserelle:divers:supprimer_auth_ldap [12/11/2009 14:02]
dani
tuto:ipasserelle:divers:supprimer_auth_ldap [20/02/2017 08:43] (Version actuelle)
dani [Ré-installation de e-smith-base]
Ligne 1: Ligne 1:
 ====== Suppression de LDAP pour revenir vers une SME de base ====== ====== Suppression de LDAP pour revenir vers une SME de base ======
 +
 +<note>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.</note>
 +
 +Suppression des paquets expérimentaux e-smith-base+ldap et e-smith-samba+ldap
  
 ===== Re-construction des "flat files" ===== ===== Re-construction des "flat files" =====
 ==== Parse LDIF ==== ==== 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:+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:
  
 <code> <code>
-sv t /services/ldap +sv t /service/ldap 
-cp -a /home/e-smith/db/ldap/groupepena.fr.ldif /root/+cp -a /home/e-smith/db/ldap/domain.tld.ldif /root/
 cd cd
 </code> </code>
Ligne 13: Ligne 17:
 Copier le script suivant: Copier le script suivant:
 <code> <code>
-SCRIPT+#!/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'); 
 + 
 +# /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'); 
 + 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"; 
 +
 +
 + 
 +
 + 
 </code> </code>
  
Ligne 21: Ligne 125:
 </code> </code>
  
-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.+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 ==== ==== Merge des fichiers ====
Ligne 37: Ligne 141:
 <code> <code>
 for F in passwd shadow group gshadow; do for F in passwd shadow group gshadow; do
-   cp -a /etc/$F /etc/$F.old+   cp -a /etc/$F /etc/$F.old2
    cat new/$F > /etc/$F    cat new/$F > /etc/$F
 done done
-cp -a /etc/samba/smbpasswd /etc/samba/smbpasswd.old+cp -a /etc/samba/smbpasswd /etc/samba/smbpasswd.old2
 cat new/smbpasswd > /etc/samba/smbpasswd cat new/smbpasswd > /etc/samba/smbpasswd
 </code> </code>
Ligne 48: Ligne 152:
 Pour remettre les paquets de base, la commande suivante devrait suffire: Pour remettre les paquets de base, la commande suivante devrait suffire:
 <code> <code>
 +db configuration setprop ldap Authentication disabled
 yum install e-smith-base e-smith-samba e-smith-ldap yum install e-smith-base e-smith-samba e-smith-ldap
 </code> </code>
-Ils remplaceront automatiquement leurs homologue +ldap (même si avant de cofirmer, yum ne l'indique pas).+Ils remplaceront automatiquement leurs homologues +ldap (même si avant de confirmer, yum ne l'indique pas).
  
 ===== Flush de la base LDAP ===== ===== Flush de la base LDAP =====
Ligne 60: Ligne 165:
 rm -f /var/lib/ldap/* rm -f /var/lib/ldap/*
 expand-template /home/e-smith/db/ldap/ldif expand-template /home/e-smith/db/ldap/ldif
 +expand-template /etc/nsswitch.conf
 +expand-template /etc/pam.d/system-auth
 </code> </code>
  
-===== Mise à jour ===== 
- 
-On lance maintenant une mise à jour globale 
-<code> 
-yum update 
-</code> 
-FIXME: possible qu'il y'ait des problème de dépendances à cause de la version de PHP installée. Plusieurs solutions: 
-  * Revenir à PHP 4 le temps de la MaJ, puis, re-upgrade vers PHP5 
-  * Faire des excludes des paquets qui posent problème, puis finir avec des rpms --nodeps 
- 
-Puis les contributions. Attention, on met à jour OpenVPN, on va donc suivre une procédure à part pour cette contrib (MaJ depuis 1.2 vers 2.0) 
-<code> 
-yum --enablerepo=smecontribs intall smeserver-phpki 
-</code> 
-Puis suivre la procédure de migration afin que les certificats soient gérés par PHPki: http://wiki.contribs.org/PHPki#Migrate_Certificates_from_previous_OpenVPN-Bridge_contrib_installations 
- 
-Maintenant, on met à jour la contrib OpenVPN elle-même: 
-<code> 
-yum --enablerepo=smecontribsinstall smeserver-openvpn-bridge 
-</code> 
-Puis on configure le bridge (devrait déjà être bon, mais vérifier avec 
-<code> 
-db configuration show bridge 
-</code> 
- 
-Migrer les règles de configuration en suivant cette page: http://wiki.contribs.org/OpenVPN_Bridge#Migrate_previous.2Fexisting_OpenVPN_Server_certificates 
- 
-Maintenant mettre toutes les autres contribs à jour: 
-<code> 
-yum --enablerepo=smecontribs update 
-</code> 
- 
-===== Post-Upgrade / Reboot ===== 
-Il ne manque plus qu'un post-upgrade / reboot n croisant les doigts: 
-<code> 
-signal-event post-upgrade 
-signal-event reboot 
-</code> 
  
  • tuto/ipasserelle/divers/supprimer_auth_ldap.1258030975.txt.gz
  • Dernière modification: 12/11/2009 14:02
  • de dani