2009-10-20 6 views
1

Je suis très nouveau sur Linux et PHP alors pardonnez-moi si c'est une question bête.Script de ligne de commande pour créer un mot de passe utilisateur

Je dois créer un script de ligne de commande PHP qui va ajouter un utilisateur au système, qui sera utilisé par le serveur ftp. Je l'ai mis en place à ce stade qu'il crée le compte très bien. Le problème auquel je suis confronté est que même si je passe par le mot de passe lorsque je crée le compte, par exemple. -p $ password, je dois encore exécuter la commande "passwd" sur le compte et définir le mot de passe manuellement avant que proftpd ne laisse ce compte se connecter.

Pour la vie de moi, je n'arrive pas à comprendre comment courir la commande passwd de l'intérieur du php. Évidemment, je peux l'exécuter, mais je ne sais pas comment entrer par programme le mot de passe lorsque vous y êtes invité. Pour plus d'informations, voici la commande que j'exécute lors de la création du compte. $ username et $ password sont passés dans la fonction.

shell_exec("useradd ".$username." -g ftpusers -m -p ".$password." -d 
/home/ftp/".$username."/ -s /bin/false); 

maintenant je cherche à ajouter quelque chose le long des lignes de:

shell_exec("passwd ".$username); 
echo $password; 
echo $password; 

Pour le compte rendu, ce dernier exemple est juste pour illustration.

Toute aide appréciée.

Répondre

4

Vous devez utiliser le mot de passe haché en utilisant useradd, par exemple

$password = escapeshellarg(crypt('password')); 
shell_exec("useradd username -p $password"); 

-p, --password PASSWORD Le mot de passe chiffré, comme renvoyé par crypt (3). La valeur par défaut est pour désactiver le compte.

(man useradd)

+0

Merci, cela a fait l'affaire pour moi. J'ai lu à propos de cette "crypte" hier, je ne pouvais tout simplement pas le faire fonctionner. hehe, de toute façon, merci beaucoup. – Craigt

0

ne peut garantir que ça va marcher, mais sur les premières pensées, ma solution serait: -

<?php 
$fp = popen("/usr/bin/passwd " . $user, "w"); 

fwrite($fp, $password . "\n"); 
fwrite($fp, $password . "\n"); 

fclose($fp); 
0
$connection = ssh2_connect('localhost', 22); 
if (ssh2_auth_password($connection, 'root', '')) { 
    $username = ''; 
    $password = ''; 
    ssh2_exec($connection, "useradd $username -m -p $password -d /home/$username/ -s /bin/false"); 
} else { 
    die('Authentication Failed...'); 
} 
+0

Les réponses qui affichent juste du code sans aucune explication ne sont généralement pas les bienvenues ici ... –

Questions connexes