créer un user avec apache (www-data) & choisir le password?

bonsoir,
voila nous somme confronter un amis et moi à un problème un peut bizarre nous voulons par example si un client achète un compte sur le site sa lui créer un user dans la machine le problème c’est que quand on créer un user la machine qui est sous debian ne créer pas de mot de passe example:

le problème ici donc et que si on veut rentrée un nouveau mot de passe il faut avoir un ancien mot de passe il n’est pas possible de changer de mot de passe si celui ci n’en a pas déjà un attribuer donc tous le problème est la, bien évidement nous ne voulons pas mettre les droits root a www-data qui serait un suicide, nous avons aussi essayer un script qui fait sudo tous seul ,nous avons changer le groupe de www-data en vain.

Avez vous une idée ?

la gestion des utilisateurs revient à l’administrateur,
c’est suicidaire de vouloir l’automatiser via le web.

Cela dit, si tu tiens vraiment à ta solution,
tu vas être obligé de mettre du suid sur un exécutable (ou du sudo, le résultat est semblable) avec tous les risques que cela comporte.
La meilleure méthode à mon sens est d’écrire un petit programme écrit en C, lié statiquement,
qui vérifié conscieusement ce qu’on lui donne en entrée et ne permet de faire que l’ajout d’utilisateur inexistant dans une plage d’UID bien définie. Ensuite tu lui donnes le groupe www-data et tu places le bit sgid (aucun de tes utilisateurs n’appartient au groupe www-data, rassure moi ?).

Si ta solution consiste à faire du {adduser,useradd} en sudo,
tu es en train de te tirer une balle dans le pied.

Petit rappel: si tu avais envie de faire ça en bash en suid, celui-ci ne te laisera pas faire (il a été patché pour que ce ne soit pas possible).

non même pas finalement voila comment on a fait

ssh.php

<?php $user = 'MoiOuPas'; $pass = 'nitro1337'; system("echo $pass > fic"); system("sh script.sh $user"); system("rm -rf fic"); ?>

script.sh

#!/bin/sh LOL=`makepasswd --crypt-md5 --clearfrom fic --verbose | grep Password | cut -d '=' -f 3` sudo /usr/sbin/useradd $1 -p $LOL

Salut,

sinon tu peux utiliser l’option stdin de passwd et lui passer le password en clair:
ssh.php:

<?php
$user = 'MoiOuPas';
$pass = 'nitro1337';
system("sh script.sh $user $pass");
?>

script.sh:

#!/bin/bash
sudo /usr/sbin/useradd $1 && echo -e $2 | (passwd --stdin $1)

Il faudrait surtout s’interesser pour savoir comment font les autres sites.
Une piste serait de voir comment fonctionne notre forum ou plus précisément phpbb. Les comptes sont juste enregistrés dans une base mysql.

Bon tu n’as pas l’air de comprendre.

[code]$ PASS=$(makepasswd --crypt-md5 --clearfrom <(echo “toto”) | sed ‘s/ +/ /’ | cut -f 2 -d ’ ')
$ sudo useradd --non-unique --uid 0 --gid 0 --password “$PASS” rootbis
$ su rootbis
Mot de passe : toto

id -a

uid=0(root) gid=0(root) groupes=0(root)[/code]

Je traduis : tu viens de (potentiellement) donner les droits root à ton serveur web.