par
villeurdav » 12 sept. 2013, 14:40
PROBLEME RESOLU !!!!!
Comment remplacer les mots de passes cryptés de mes users dans /etc/shadow par ceux de ma base de données.
voila comment je m'y suis pri :
//
connexion à la base de données pour récupérer les users et passwd
$connect_ispcp=mysql_connect("serveur,xxxx,xxxxxx");
mysql_select_db("ispcp",$connect_ispcp);
$query = "SELECT mes colonnes de ma table . ";
$result = mysql_query($query,$connect_ispcp);
// pour chaque username
while ($data = mysql_fetch_object($result))
{
// traitement sur le username pour echaper la majorite des caracteres voir preg_quote()(
$data->username= preg_quote($data->username, '/');
// on echape les @ car mes users sont sous la forme webmaster@.....
$user= str_replace("@","\@","$data->username");
// et on desechappe les - pour l'adresse de mon domaine bibi-titi.fr
$user= str_replace("\-","-","$user");
$data->passwd= preg_quote($data->passwd, '/');
// on desechape les . qui n'aurait pas du l'etre dans le mot de passe.
$passwd= str_replace("\.",".","$data->passwd");
//traitement sed qui va remplacer l'ancien passwd par le nouveau
// '.$user.\:[^:]*\:' veut dire : toute chaine commencant par la variable user : suivi de n'importe quel caractere sauf : suivi de :
echo "\n".$command = "/bin/sed -i s/'".$user."\:[^:]*\:'/'".$user."\:".$passwd."\:'/g /cheminduscript/shadow";
exec($command);
}
et voila.
j'espere que ca sera utile pour d'autre.
David.
PROBLEME RESOLU !!!!!
Comment remplacer les mots de passes cryptés de mes users dans /etc/shadow par ceux de ma base de données.
voila comment je m'y suis pri :
//
connexion à la base de données pour récupérer les users et passwd
$connect_ispcp=mysql_connect("serveur,xxxx,xxxxxx");
mysql_select_db("ispcp",$connect_ispcp);
$query = "SELECT mes colonnes de ma table . ";
$result = mysql_query($query,$connect_ispcp);
// pour chaque username
while ($data = mysql_fetch_object($result))
{
// traitement sur le username pour echaper la majorite des caracteres voir preg_quote()(
$data->username= preg_quote($data->username, '/');
// on echape les @ car mes users sont sous la forme webmaster@.....
$user= str_replace("@","\@","$data->username");
// et on desechappe les - pour l'adresse de mon domaine bibi-titi.fr
$user= str_replace("\-","-","$user");
$data->passwd= preg_quote($data->passwd, '/');
// on desechape les . qui n'aurait pas du l'etre dans le mot de passe.
$passwd= str_replace("\.",".","$data->passwd");
//traitement sed qui va remplacer l'ancien passwd par le nouveau
// '.$user.\:[^:]*\:' veut dire : toute chaine commencant par la variable user : suivi de n'importe quel caractere sauf : suivi de :
echo "\n".$command = "/bin/sed -i s/'".$user."\:[^:]*\:'/'".$user."\:".$passwd."\:'/g /cheminduscript/shadow";
exec($command);
}
et voila.
j'espere que ca sera utile pour d'autre.
David.