Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
creation de users automatique : pb pass non crypté dans le shadow
Envoyé par: xinul

bonjour a tous !

[ distro : Slackware 9.1 ]

je viens de faire un script (en bash), qui permet de creer automatiquement des users/pass a partir d'un ficher formaté de la maniere suivante <user> <pass>, fichier de 1000 lignes !!! (donc j'allais pas me creer les users a la main avec adduser, qui m'affiche des prompts... ;-) ).

le script est le suivant:

-------------------------------------------------------------------
#!/bin/bash

FILE="xxxxx"
USER="`cat $FILE | cut -d" " -f1`"
PASS="`cat $FILE | cut -d" " -f2`"
USER_HOME="/home/users"

#echo "$USER"
#echo "$PASS"

for I in $USER;
do
echo -n "$I : "
Ipass=`cat $FILE | egrep "^$I" | cut -d" " -f2`
# echo "$Ipass"

mkdir $USER_HOME/$I
echo "useradd -d $USER_HOME/$I -p $Ipass $I"
useradd -d $USER_HOME/$I -p $Ipass $I
chown -R $I.users $USER_HOME/$I
done

----------------------------------------------------------------------

En executant ce script, tout se passe a merveille. Seul petit hic les pass ne sont pas cryptés dans le /etc/shadow. le problem c'est qu'il faudrait passer pour chaque entree de user, la command "passwd", mais celle-ci m'affiche un prompt, ce que je ne veux pas puique je voudrais que ca se fasse directement dans le script....!!!!



Merci d'avance...

#%b

Poste le Thursday 30 October 2003 12:08:11
Répondre     Citer    
Re: creation de users automatique : pb pass non crypté dans le shadow
Envoyé par: Jonesy's

Bonsoir,

Voir : man user add, option -p
Il faut passer le mot de passe crypté... Ne reste plus qu'à faire un programme C qui utilise crypt(3) pour crypter le mot de passe ! ;-)

@+

Poste le Thursday 30 October 2003 22:45:34
Répondre     Citer    
Re: creation de users automatique : pb pass non crypté dans le shadow
Envoyé par: xinul

bonjour,

merci pour l'idee du prog en C avec crypt(3), mais en fait j'ai resolu le problem avec un petit script en perl, utilisant le module "Crypt:tongue sticking out smileyasswdMD5", qui est le suivant :


---------------------------------------------------------------------------------------
#!/usr/bin/perl -w

$|=1;

use strict;
use Crypt:tongue sticking out smileyasswdMD5;

my $shadow="/etc/shadow";
my $cnt=0;

print " ---------------------\n Encode shadow for: \n";
open(SHADOW,$shadow) || die "can't read $shadow";
open(SHAD_TMP,">$shadow.tmp") || die "can't read $shadow.tmp";
while (<SHADOW>) {
if ($_ =~ /([^:]+)\sad smiley[^:]+)\sad smiley.*)/g && $2 !~ /^\$1\$/ && $2 !~ /^[\*\!]$/) {
my $salt=&gen_salt();
print SHAD_TMP $1.":".unix_md5_crypt($2,$salt).":".$3."\n";
print " - $1:$2\n";
$cnt++;
} else {
print SHAD_TMP $_;
}
}
close(SHADOW);
close(SHAD_TMP);


print " ---------------------\n Nb users encodes : $cnt \n";

exit();


# gen alphanum 2 digits salt
sub gen_salt() {
my $i=1;
my ($salt,$rand);

while ($rand=rand(122)){
$salt.=chr($rand) if chr($rand)=~ /\w+/;
last if ($salt&& length($salt)==2);
$i++;
}
return $salt;
}

---------------------------------------------------------------------------------------------


Donc du coup maintenant j'ai pu le rajouter a la suite de mon script bash, ce qui est nickel....

( evidemment j'aurais du y penser avant ou alros tout faire en perl... je pensais pas avaoir un petit souci de ce genre...)

Voila. En tout cas merci.

#%b

Poste le Friday 31 October 2003 14:29:58
Répondre     Citer    
Re: creation de users automatique : pb pass non crypté dans le shadow
Envoyé par: Jonesy's

Bonsoir,

Mais je t'en prie !
C'est moi qui te remercie pour 2 raisons :
-1- D'avoir apporté une solution compléte ! Pourquoi n'ai pas pensé à Perl !? ;-)
-2- D'être poli ;-)

@+

Poste le Friday 31 October 2003 19:47:20
Répondre     Citer    
Re: creation de users automatique : pb pass non crypté dans le shadow
Envoyé par: xinul

Bonsoir Jonesy's,


Juste pour te preciser, j'ai trouve une command sous la slack (mais on doit la retrouver sous toutes les nouvelles distro) : newusers.
Du coup mon script ce résume a ca (tout compris, new user + encrypt du pass ) #%b:


-------------------------------------------------------------------------------------------------
#!/bin/bash

FILE=mitch_users.csv

HME="/home/users"
SH="/bin/false"
USR="`cat $FILE | cut -d" " -f1`"
PASS="`cat $FILE | cut -d" " -f2`"

pfile="/etc/passwd"


touch usr_tmp; echo -n > usr_tmp
#echo `cat usr_tmp`
#echo "$USR"
#echo
#echo "$PASS"

for I in $USR;
do
echo -n "$I : "
Ipass=`cat $FILE | egrep "^$I" | cut -d" " -f2`
echo "$Ipass"

echo "useradd -d $HME/$I -s $SH -m -p $Ipass $I"
useradd -d $HME/$I -s $SH -m -p $Ipass $I
echo "Done."
echo

echo `cat $pfile | egrep "$I" | sed 's/:x:/:'$Ipass':/g'` >> usr_tmp

newusers usr_tmp

done


echo "- Removing temporary file : usr_tmp"
rm -rf usr_tmp

echo

-----------------------------------------------------------------------------------------------

EN fait "newusers" est tres pratique, puisqu'il peut creer ou modifier (cf man newusers) des users, sauf qu'il faut l'appliquer sur un fichier de type /etc/passwd, d'ou mon fichier "usr_tmp", qui prend une forme de /etc/passwd masi avec le pass en clair...

Donc voila....
PS : bien entendu tous ceux qui ont une foultitude de users a creer (admins ;-) ) peuvent se servir de ce script et le modifier a souhait... #%b

@++ et merci encore pour les idees...

Poste le Wednesday 5 November 2003 16:11:06
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
creation de users automatique : pb pass non crypté dans le shadow
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons