Mot de passe qui ne passe pas !

Résolu
rescue Messages postés 1039 Date d'inscription   Statut Contributeur Dernière intervention   -  
rescue Messages postés 1039 Date d'inscription   Statut Contributeur Dernière intervention   -
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.





A voir également:

6 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Colle ici ton code php
0
rescue Messages postés 1039 Date d'inscription   Statut Contributeur Dernière intervention   136
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Contributeur Dernière intervention   136
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Contributeur Dernière intervention   136
 
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