exec() pour créer user linux

Eléphanteau du PHP | 44 Messages

02 mars 2008, 02:06

Bonjour,
je tente de créer une interface de création d'utilisateur ssteme sur une plateforme LINUX.
Le probleme, je ne connais que le langage php pour la developper.
J'ai vu qu'il y a 2 commandes utilisables pour passer des ligne de commande au systeme.

J'ai donc essayé ça :
<?php echo exec('useradd benoist'); ?>
J'ai changé les droits jusqu'a affecter un chmod 777 et un proprietaire de fichier root.
Au final, rien.. meme pas un retour dans le echo...

Savez vous comment je peux faire, ou puis je chercher ?

Merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mars 2008, 10:40

Il faut lire la doc ...

Dans la doc d'exec(), il est dit que le retour est le statut de l'exécution et que le retour textuel sera placé dans un tableau passé en paramètre.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 44 Messages

03 mars 2008, 17:29

bonjour, et merci pour ta réponse.
ok, je n'ai pas de retour mais la commande n'est pas exécutée car l'user n'est pas créé.
sais tu d'ou ça peut venir ?
merci a nouveau pour ton aide.

ViPHP
ViPHP | 4674 Messages

03 mars 2008, 17:33

Est-ce que la commande useradd existe ? J'ai fais un

Code : Tout sélectionner

which useradd
sur mon Mac, et je n'ai rien.

Quand tu fais la commande sans passer par PHP, ça fonctionne ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 44 Messages

03 mars 2008, 18:37

c'est une commande debian qui fonctionne parfaitement en passant par le shell.
par php, j'ai l'impression qu'on ne peut pas créer de nouveau user... c'est assez surprenant...
Je pense plutot qu'il y a qque chose que je ne fais pas correctement...

http://www.coagul.org/article.php3?id_article=229

merci de ton aide.

ViPHP
ViPHP | 4674 Messages

03 mars 2008, 18:41

merci de ton aide.
votre* s'il te plaît. zeus t'as aussi aidé.

Je ne connais pas la gestion des utilisateurs sous debian, je ne peux pas t'aider, désolé.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 1380 Messages

03 mars 2008, 18:52

C'est une commande root. Que retourne:
<?php echo exec('useradd benoist' 2>&1); ?>
Solutions:
ajouter www-data (le UID du serveur web) dans le groupe root. Très mauvaise idée. :wink:
ajouter www-data dans le sudoer (1) pour la commande useradd et faire:
<?php echo exec('sudo useradd benoist' 2>&1); ?>
(1) en root:

Code : Tout sélectionner

# visudo
rajouter:

Code : Tout sélectionner

www-data ALL = NOPASSWD: /usr/sbin/useradd
ripat

Eléphanteau du PHP | 44 Messages

03 mars 2008, 20:32

Merci donc a vous tous ! ;)

Ripat, je suis tout a fait d'accord avec toi, je ne veux pas passer www-data dans le groupe root.
Je veux juste que www-data ai des privilége d'administrateur le temps de passer 2 ou 3 commandes comme la création d'un user.
Par contre quand je tape la ligne en root

Code : Tout sélectionner

visudo
J'obtiens :

Code : Tout sélectionner

v1124:/var/www/softcomm/www/admin.softcomm.fr# visudo -bash: visudo: command not found
je ne comprends pas trop... n'est ce pas plutot :

Code : Tout sélectionner

vi sudo
ou dois je tapper cette commande ??

Merci de ton aide.

ViPHP
ViPHP | 1380 Messages

03 mars 2008, 20:36

Est-ce que sudo est installé sur ton serveur?

Code : Tout sélectionner

$ dpkg -l sudo
Sinon, installe-le

Code : Tout sélectionner

# aptitude install sudo
Dès que c'est fait, visudo (sous root) et tu fais la modification indiquée plus haut.
ripat

Eléphanteau du PHP | 44 Messages

03 mars 2008, 20:45

est ce que je dois enregistrer mon fichier sous /etc/sudoers.tmp (defaut) ??
merci encore pour ton aide.

ViPHP
ViPHP | 1380 Messages

03 mars 2008, 20:49

Une fois que tu as installé sudo, utilise visudo sous root. Cette commande te permettra d'éditer le fichier sudoers. Il est fortement recommandé de ne pas éditer directement sudoers.
ripat

Eléphanteau du PHP | 44 Messages

03 mars 2008, 20:53

ça marche !!!
trop bien, merci bcp !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 20:57

Modération :
beve, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer