salut
comment peut t-on creer un utilisateur avec un script perl
j'ai essayé avec
` adduser $newuser -p $newpassword`;
sauf que lorsque je consulte le fichier /etc/shadow je trouve que l'utilisateur est crée mais le mot de passe n'est pas crypté
quelleset la solution svp ?
# Peut être parce que ...
Posté par LaBienPensanceMaTuer . Évalué à 2.
[^] # La solution, c'est d'utiliser la fonction crypt
Posté par Arthur Accroc . Évalué à 1.
N'importe comment, il s'attend à ce qu'on lui donne déjà crypté, d'après le man :
-p mot_de_passe
Le mot de passe chiffré, comme renvoyé par crypt(3). Le com-
portement par défaut est de désactiver le compte.
Pour avoir un mot de passe DES (le format "classique") :
my $pass_des = crypt($mot, salt(2));
Pour avoir un mot de passe MD5 (c'est plutôt ce format qui est utilisé sous linux actuellement) :
my $pass_md5 = crypt($mot, '$1$' . salt(8) . '$');
où
sub salt {
my @space = unpack 'C*', "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./";
my $result = '';
for (my ($n) = @_; $n > 0; --$n) {
$result .= chr($space[random(scalar @space)]);
}
return $result;
}
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Compléments
Posté par Arthur Accroc . Évalué à 1.
En fait elle est toute simple (son seul intérêt, c'est qu'elle était partagée par plusieurs fonctions, et donc que ça facilitait un éventuel changement).
sub random {
my ($sup) = @_;
return int rand $sup;
}
Cela dit, tant qu'à faire, on peut écrire une version moins verbeuse (mais probablement moins performante) de salt :
sub salt {
my @space = unpack 'C*', join '', 'A'..'Z', 'a'..'z', 0 .. 9, "./";
return join '', map { chr($space[int rand scalar @space]); } 1 .. $_[0];
}
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.