Ceci est une ancienne révision du document !


Choix d'auth

Parmit les differentes methodes d'auth, j'ai porté mon choix sur une excessivement simple…

Limites

  • Pas de dependance d'un serveur tiers
  • Simplicite de mise en oeuvre
  • Simplicite de gestion

Existant

  • LDAP J'ai ete refroidit, tres refroidit
  • MySQL Tout comme le ldap, je ne veux pas appuyer mon auth sur un process
  • Ecraser le /etc Pas glop

Choix

  • libnss-extrausers ⇒ En gros ca permet de doubler les fichiers /etc/passwd, group'n co

Mise en place

  • Installation (comme d'hab)
  • Mise en place des liens symboliques

ln -s /usr/local/etc/passwd /var/lib/extrausers/
ln -s /usr/local/etc/group /var/lib/extrausers/
ln -s /usr/local/etc/shadow /var/lib/extrausers/

  • Modification du /etc/nsswitch.conf

passwd:         compat extrausers
group:          compat extrausers
shadow:         compat extrausers
:!: Attention seules les id superieurs a 500 seront prises en compte !!!

Outils

Ceci est mon script qui me permet de mettre a jour les fichiers extras

Ils ne dupplique dans les fichiers en question que les users du groupe adlp-netuser, et pose les fichier dans /usr/local/etc/

FIXME: ce script doit etre refait en plus propre (NB ne pas travailler la tete dans le …)

#!/usr/bin/perl -w

use strict;
use Data::Dumper;

my $group="adlp-netuser";
my $rep="/usr/local/etc/";
my $users;
my $user;
my $ligne;
my $null;
my ($gid,$grname);

my %bigtab;
my $fichier;
my $idtab;

open(FD,"getent group | grep \"^".$group.":\" |");
$ligne=<FD>;
close(FD);
chomp($ligne);

($null,$null,$null,$users)=split(/:/,$ligne);


foreach $user (split(/,/,$users)) {
        # Recuperation du home'n Co
        open(FD,"getent passwd | grep \"^".$user.":\" |");
        $ligne=<FD>;
        close(FD);
        chomp($ligne);
        $bigtab{passwd}{$ligne}="";

        # Recuperation du pass
        open(FD,"getent shadow | grep \"^".$user.":\" |");
        $ligne=<FD>;
        close(FD);
        if(defined($ligne)) {
                chomp($ligne);
                $bigtab{shadow}{$ligne}="";
                }

        # Recuperation duid pr les groupes
        open(FD,"id $user | cut -f4 -d'=' | ");
        $ligne=<FD>;
        close(FD);
        chomp($ligne);
        foreach (split(/,/,$ligne)) {
                tr/\(\)/ /s;
                ($gid,$grname)=split(/ /);
                $idtab=$grname.":x:".$gid.":";
                if(defined($bigtab{group}{$idtab}))     {
                        $bigtab{group}{$idtab}.=",".$user;
                        }
                else { 
                        $bigtab{group}{$idtab}=$user;
                        }
                }
        }
        
foreach $fichier (keys(%bigtab)) {
        open(FD,">",$rep.$fichier);
        foreach(keys(%{$bigtab{$fichier}})) {
                if($bigtab{$fichier}{$_} eq "") {
                        print FD $_."\n";
                        }
                else    {
                        print FD $_.$bigtab{$fichier}{$_}."\n";
                        }
                }
        }

docs/linuxeries/gestion_des_users.1320791533.txt.gz · Dernière modification: 2011/11/08 23:32 par adlp
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki