Mot de passe qui ne passe pas !

Résolu/Fermé
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 - 18 mars 2011 à 12:14
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 - 19 mars 2011 à 10:30
Bonjour,

Je me retrouve devant un problème que je sais pas pourquoi ça ne fonctionne pas.

Je m'explique :

- Je crée un utilisateur 'toto' avec un password '123abc' avec la commande 'useradd'.
ça fonctionne nickel chrome.

- Je crée un utilisateur 'toto' avec un password 'abc123' avec la commande 'useradd'.
ça fonctionne aussi nickel chrome.


Voici mon mystère, c'est lorsque je crée mon utilisateur avec la commande exec() de PHP.

- Je crée un utilisateur 'toto' avec un password 'abc123' avec la commande 'exec()' en PHP avec un formulaire d'enregistrement login et password.
ça fonctionne nickel chrome.

- Je crée un utilisateur 'toto' avec un password '123abc' avec la commande 'exec()' en PHP avec un formulaire d'enregistrement login et password.
Et là...... c'est la catastrophe il ne m'enregistre pas mon utilisateur 'toto'.


Avec-vous une solution mes camarades Linuxiens.

Merci pour vos réponses.





6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
18 mars 2011 à 12:57
Salut,

Colle ici ton code php
0
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 136
18 mars 2011 à 13:12
Re,

Voici mon code php:

if (isset($_POST['username']) && isset($_POST['password'])) {

$username = $_POST['username'];
$password = $_POST['password'];

#creation de l'utilisateur pour le systeme
$pass = exec("perl -e 'print crypt($password, $password)'");
exec("sudo useradd -m -p $pass $username");

}

Je n'ai pas mis tous le code source, je met que l'essentiel.

Merci d'avance.

@+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
18 mars 2011 à 16:02
Salut,

Je vais tester ce soir.
Entre temps tu peux essayer de crypter avec mkpasswd
Inspire toi ici
https://forums.commentcamarche.net/forum/affich-3645861-creation-de-comptes-sous-linux#1
0
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 136
18 mars 2011 à 20:59
Bonsoir,

Ok je vois avec mkpasswd

Tu penses que c'est du cryptage, c'est bizarre quand même.
Puisque mon script shell fonctionne parfaitement.

En faite mon projet actuel c'est de mettre en place une interface web pour créer des users rapidement sans ligne de commande sur un serveur Linux avec un partage samba pour leurs home directory avec windows.

Mon objectif est de centraliser au maximum les fichiers users afin d'intervenir plus rapidement sur les PC en cas de panne ou de fin de garantie.

Je n'ai pas envi d'installer webmin pour ne faire que ça.

Bonne soirée et merci pour ton aide.
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 19/03/2011 à 06:18
Salut,

Ton problème viens de ta commande Perl

exec("perl -e 'print crypt($password, $password)'");

Quand tu choisis le mot de passe abc123 Perl alors la commande devient

perl -e 'print crypt(abc123, abc123)' qui s'exécute en shell sans problèmes

:~$ perl -e 'print crypt(abc123, abc123)'  
ab3z4hnHA5WdUl


Pourquoi?
Puisque vu que le 1er caractère est une lettre alors il y a une conversion automatique de contenu de la variable en chaine de caractères.

En revanche quand on essaie 123abc Perl ne fait plus la conversion en chaine, en revanche il essaie de trouver quelque chose entre 123 et abc

~$ perl -e 'print crypt(123abc, 123abc)'  
Bareword found where operator expected at -e line 1, near "123abc"  
 (Missing operator before abc?)  
Bareword found where operator expected at -e line 1, near "123abc"  
 (Missing operator before abc?)  
syntax error at -e line 1, near "123abc"  
Execution of -e aborted due to compilation errors.


En revanche, si on entoure 123abc avec des guillemets tout est ok

~$ perl -e 'print crypt("123abc", "123abc")'  
12FHs4kPiKAgs


Dans ton script mets comme ça
$pass=exec("perl -e 'print crypt(\"$password\", \"$password\")'",$pass);


Le script que j'ai testé chez moi

<form action="" method="post">  
        <p>  
                Formulaire creation utilsateur GNU/Linux :<br />  
                Login : <input type="text" name="utilisateur" /><br />  
                Mot de passe : <input type="text" name="motdepasse" /><br />  
                <input type="submit" value="Valider" />  
        </p>  
</form>  

<?php  

$username = $_POST['utilisateur'];  
$password = $_POST['motdepasse'];  

//creation de l'utilisateur pour le systeme  
$pass=exec("perl -e 'print crypt(\"$password\", \"$password\")'",$pass);  
exec("sudo useradd -m -p $pass $username");  

echo $pass;  
?>




GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
0
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 136
19 mars 2011 à 10:30
Bonjour,

Ben écoute je te tire mon chapeau car à aucun moment je n'avais pensé à ajouter et à échapper avec les doubles quotes.

J'avais trop la tête dans le guidon en cherchant ailleurs.

Tout simplement un grand MERCI mon ami.

Ce projet je vais le mettre dans le libre par la suite, si tu es intéressé pour y participer à l'améliorer lorsque j'aurai terminé l'essentiel de ce que je vais mettre en place, tu seras bienvenue.
Sérieusement je ne blague pas.

Je suis auteur de 3 logiciels libre que tu peux voir déjà chez Framasoft
IDSI (Gestionnaire de parc informatique) https://www.afternic.com/domains/idsi-soft.com
IGSW(un Cms: Ecommerce, Immobilier, Blog, Ebooking et vitrine ) http://www.igswsoft.com
MyIGSR (Gestionnaire de sauvegarde et de restauration pour Mysql) http://www.igswsoft.com

Contacte moi sur mon site : http://www.igswsoft.com

@ Bientôt et encore merci.

0